From 9c999399af58255851529a4aff287df13e6e9128 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Pe=C5=82ka?= Date: Wed, 19 Jul 2023 17:14:57 +0200 Subject: [PATCH] Add near and far clipping distance to ROS2 Camera sensor. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Piotr Jaroszek Co-authored-by: Jan Hanca <134940295+jhanca-robotecai@users.noreply.github.com> Signed-off-by: Michał Pełka --- .../Camera/CameraSensorConfiguration.cpp | 18 +++++++++++++++--- .../Source/Camera/CameraSensorConfiguration.h | 2 ++ .../Source/Camera/CameraSensorDescription.cpp | 11 ++++++++++- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/Gems/ROS2/Code/Source/Camera/CameraSensorConfiguration.cpp b/Gems/ROS2/Code/Source/Camera/CameraSensorConfiguration.cpp index 4720440c6..ece6cacc2 100644 --- a/Gems/ROS2/Code/Source/Camera/CameraSensorConfiguration.cpp +++ b/Gems/ROS2/Code/Source/Camera/CameraSensorConfiguration.cpp @@ -17,12 +17,14 @@ namespace ROS2 if (auto serializeContext = azrtti_cast(context)) { serializeContext->Class() - ->Version(1) + ->Version(2) ->Field("VerticalFieldOfViewDeg", &CameraSensorConfiguration::m_verticalFieldOfViewDeg) ->Field("Width", &CameraSensorConfiguration::m_width) ->Field("Height", &CameraSensorConfiguration::m_height) ->Field("Depth", &CameraSensorConfiguration::m_depthCamera) - ->Field("Color", &CameraSensorConfiguration::m_colorCamera); + ->Field("Color", &CameraSensorConfiguration::m_colorCamera) + ->Field("ClipNear", &CameraSensorConfiguration::m_nearClipDistance) + ->Field("ClipFar", &CameraSensorConfiguration::m_farClipDistance); if (AZ::EditContext* ec = serializeContext->GetEditContext()) { @@ -39,7 +41,17 @@ namespace ROS2 ->DataElement(AZ::Edit::UIHandlers::Default, &CameraSensorConfiguration::m_height, "Image height", "Image height") ->Attribute(AZ::Edit::Attributes::Min, CameraSensorConfiguration::m_minHeight) ->DataElement(AZ::Edit::UIHandlers::Default, &CameraSensorConfiguration::m_colorCamera, "Color Camera", "Color Camera") - ->DataElement(AZ::Edit::UIHandlers::Default, &CameraSensorConfiguration::m_depthCamera, "Depth Camera", "Depth Camera"); + ->DataElement(AZ::Edit::UIHandlers::Default, &CameraSensorConfiguration::m_depthCamera, "Depth Camera", "Depth Camera") + ->DataElement( + AZ::Edit::UIHandlers::Default, + &CameraSensorConfiguration::m_nearClipDistance, + "Near clip distance", + "Minimum distance to detect objects") + ->DataElement( + AZ::Edit::UIHandlers::Default, + &CameraSensorConfiguration::m_farClipDistance, + "Far clip distance", + "Maximum distance to detect objects"); } } } diff --git a/Gems/ROS2/Code/Source/Camera/CameraSensorConfiguration.h b/Gems/ROS2/Code/Source/Camera/CameraSensorConfiguration.h index 43e3619d8..705173481 100644 --- a/Gems/ROS2/Code/Source/Camera/CameraSensorConfiguration.h +++ b/Gems/ROS2/Code/Source/Camera/CameraSensorConfiguration.h @@ -29,5 +29,7 @@ namespace ROS2 int m_height = 480; //!< Camera image height in pixels. bool m_colorCamera = true; //!< Use color camera? bool m_depthCamera = true; //!< Use depth camera? + float m_nearClipDistance = 0.1f; //!< Near clip distance of the camera. + float m_farClipDistance = 100.0f; //!< Far clip distance of the camera. }; } // namespace ROS2 diff --git a/Gems/ROS2/Code/Source/Camera/CameraSensorDescription.cpp b/Gems/ROS2/Code/Source/Camera/CameraSensorDescription.cpp index 3470163a0..89c5bda25 100644 --- a/Gems/ROS2/Code/Source/Camera/CameraSensorDescription.cpp +++ b/Gems/ROS2/Code/Source/Camera/CameraSensorDescription.cpp @@ -22,7 +22,11 @@ namespace ROS2 , m_cameraName(cameraName) , m_cameraNamespace(effectiveNamespace) , m_viewToClipMatrix(CameraUtils::MakeClipMatrix( - m_cameraConfiguration.m_width, m_cameraConfiguration.m_height, m_cameraConfiguration.m_verticalFieldOfViewDeg)) + m_cameraConfiguration.m_width, + m_cameraConfiguration.m_height, + m_cameraConfiguration.m_verticalFieldOfViewDeg, + m_cameraConfiguration.m_nearClipDistance, + m_cameraConfiguration.m_farClipDistance)) , m_cameraIntrinsics(CameraUtils::MakeCameraIntrinsics( m_cameraConfiguration.m_width, m_cameraConfiguration.m_height, m_cameraConfiguration.m_verticalFieldOfViewDeg)) { @@ -37,6 +41,11 @@ namespace ROS2 AZ_Assert( m_cameraConfiguration.m_width > 0 && m_cameraConfiguration.m_height > 0, "Camera resolution dimensions should be above zero"); AZ_Assert(!m_cameraName.empty(), "Camera name cannot be empty"); + AZ_Assert(m_cameraConfiguration.m_nearClipDistance > 0.0f, "Near clip distance should be greater than zero"); + AZ_Assert(m_cameraConfiguration.m_farClipDistance > m_cameraConfiguration.m_nearClipDistance , "Far clip distance should be greater than the near plane distance"); + AZ_Assert( + m_cameraConfiguration.m_farClipDistance > m_cameraConfiguration.m_nearClipDistance, + "Far clip distance should be greater than near clip distance"); } } // namespace ROS2