Bladeren bron

Lidar: Fixed data acquisition while publishing disabled

Lidar: Fixed data acquisition while publishing disabled
Mike Chang 1 jaar geleden
bovenliggende
commit
ba6fa9929a

+ 5 - 4
Gems/ROS2/Code/Source/Lidar/ROS2Lidar2DSensorComponent.cpp

@@ -79,10 +79,6 @@ namespace ROS2
             m_sensorConfiguration.m_frequency,
             [this]([[maybe_unused]] auto&&... args)
             {
-                if (!m_sensorConfiguration.m_publishingEnabled)
-                {
-                    return;
-                }
                 FrequencyTick();
             },
             [this]([[maybe_unused]] auto&&... args)
@@ -112,6 +108,11 @@ namespace ROS2
     {
         RaycastResult lastScanResults = m_lidarCore.PerformRaycast();
 
+        if (!m_sensorConfiguration.m_publishingEnabled)
+        { // Skip publishing when it is disabled.
+            return;
+        }
+
         auto* ros2Frame = GetEntity()->FindComponent<ROS2FrameComponent>();
         auto message = sensor_msgs::msg::LaserScan();
         message.header.frame_id = ros2Frame->GetFrameID().data();

+ 3 - 7
Gems/ROS2/Code/Source/Lidar/ROS2LidarSensorComponent.cpp

@@ -107,10 +107,6 @@ namespace ROS2
             m_sensorConfiguration.m_frequency,
             [this]([[maybe_unused]] auto&&... args)
             {
-                if (!m_sensorConfiguration.m_publishingEnabled)
-                {
-                    return;
-                }
                 FrequencyTick();
             },
             [this]([[maybe_unused]] auto&&... args)
@@ -135,7 +131,7 @@ namespace ROS2
     {
         auto entityTransform = GetEntity()->FindComponent<AzFramework::TransformComponent>();
 
-        if (m_canRaycasterPublish)
+        if (m_canRaycasterPublish && m_sensorConfiguration.m_publishingEnabled)
         {
             const builtin_interfaces::msg::Time timestamp = ROS2Interface::Get()->GetROSTimestamp();
             LidarRaycasterRequestBus::Event(
@@ -146,8 +142,8 @@ namespace ROS2
 
         auto lastScanResults = m_lidarCore.PerformRaycast();
 
-        if (m_canRaycasterPublish)
-        { // Skip publishing when it can be handled by the raycaster.
+        if (m_canRaycasterPublish || !m_sensorConfiguration.m_publishingEnabled)
+        { // Skip publishing when it is disabled or can be handled by the raycaster.
             return;
         }