Skip to content

Conversation

@Botman-Mike
Copy link

Summary

Adds missing <topic> tag to IMU sensor Gazebo definitions for omnidirectional platforms (R100, DO100, DO150).

Problem

Without the <topic> tag, Gazebo publishes IMU data on default topic names instead of the namespace-aware topics expected by ros_gz_bridge, causing IMU data to not reach ROS 2 in simulation.

Expected topic: /{namespace}/sensors/imu_0/data_raw
Actual topic (broken): /world/{world}/model/{namespace}/link/imu_0_link/sensor/imu_0/imu

This breaks sensor fusion in ekf_localization_node since no IMU data is available.

Root Cause

Omnidirectional platforms (R100, DO100, DO150) were missing the <topic> tag that was added to differential drive platforms (J100, W200, DD100, DD150) in v0.2.10.

Solution

Add <topic>$(arg namespace)/sensors/imu_0/data_raw</topic> to the IMU Gazebo sensor block in each platform's URDF to match the pattern used in other platforms.

Testing

Platform: R100 (Ridgeback)
ROS 2: Jazzy
Gazebo: Harmonic

Before fix:

$ ros2 topic hz /r100_0000/sensors/imu_0/data_raw
WARNING: topic does not appear to be published yet

**After fix:**
$ ros2 topic hz /r100_0000/sensors/imu_0/data_raw
average rate: 27.346
	min: 0.022s max: 0.080s std dev: 0.00954s window: 141
	
IMU data is now successfully consumed by ekf_localization_node for sensor fusion.

##Files Changed

clearpath_platform_description/urdf/r100/r100.urdf.xacro
clearpath_platform_description/urdf/do100/do100.urdf.xacro
clearpath_platform_description/urdf/do150/do150.urdf.xacro

Fixes missing <topic> tag in IMU sensor definitions for R100, DO100,
and DO150 platforms. Without this tag, Gazebo publishes IMU data on
default topic names instead of the namespace-aware topics expected by
ros_gz_bridge, causing IMU data to not reach ROS 2 in simulation.

This issue only affected omnidirectional platforms (mecanum wheel
configurations). Differential drive platforms (J100, W200, DD100, DD150)
were already fixed in v0.2.10.

Tested on R100 platform with Gazebo Harmonic and ROS 2 Jazzy.
IMU data now successfully bridges to /r100_0000/sensors/imu_0/data_raw
and is consumed by ekf_localization_node for sensor fusion.
@Botman-Mike Botman-Mike requested a review from a team as a code owner November 18, 2025 19:45
@Botman-Mike Botman-Mike requested review from luis-camero and tonybaltovski and removed request for a team November 18, 2025 19:45
@Botman-Mike
Copy link
Author

My repo may be private. Let me know if you can't access it and need more details. The omnidirectional platform IMU's need to be fixed like the other platforms were in a previous issue.

Copy link
Member

@tonybaltovski tonybaltovski left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for catching this! Just one nit but looks good otherwise.

<update_rate>50</update_rate>
<visualize>true</visualize>
<gz_frame_id>imu_0_link</gz_frame_id>
<topic>$(arg namespace)/sensors/imu_0/data_raw</topic>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you fix the indent on this please?

@mergify
Copy link

mergify bot commented Nov 18, 2025

🧪 CI Insights

Here's what we observed from your CI run for 1c7ef28.

🟢 All jobs passed!

But CI Insights is watching 👀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants