Skip to content

ROS2 Gazebo harmonic integration

The bridge allows you to connect ROS 2 topics with Gazebo Harmonic topics so you can:

  • Control simulation objects from ROS 2 (e.g., publish velocity commands).
  • Get data from simulation (e.g., sensor readings, /clock).
  • Sync time between ROS 2 and Gazebo.

Tip

parameter_bridge <topic@ROS2_type@gz_type>

Tip

  • @ : a bidirectional bridge,
  • [ : a bridge from Gazebo to ROS,
  • ] : a bridge from ROS to Gazebo.

Check

Simulate using bridge, send message from side to side (no need to run gz sim for this check)

send string message from gz to ros and from ros to gz using cli

  • Run bridge
  • Pub from GZ echo in ROS
  • Pub from ROS echo in GZ
Terminal1: bridge
1
2
3
4
ros2 run ros_gz_bridge parameter_bridge /chatter@std_msgs/msg/String@gz.msgs.StringMsg
#
[INFO] [1734974012.615668960] [ros_gz_bridge]: Creating GZ->ROS Bridge: [/chatter (gz.msgs.StringMsg) -> /chatter (std_msgs/msg/String)] (Lazy 0)
[INFO] [1734974012.616345817] [ros_gz_bridge]: Creating ROS->GZ Bridge: [/chatter (std_msgs/msg/String) -> /chatter (gz.msgs.StringMsg)] (Lazy 0)

pub data from gz to ros

Terminal2: ros subscribe
ros2 topic echo /chatter
Terminal3: gz pub
gz topic -t /chatter -m gz.msgs.StringMsg -p 'data:"Hello"'

pub data from ros to gz

Terminal2: ros pub
ros2 topic pub /chatter std_msgs/msg/String "data: 'Hi'"
Terminal3: gz sub
gz topic -e -t /chatter

ROS Bridge