// the find
gazebosim/ros_gz
Integration between ROS (1 and 2) and Gazebo simulation
ros_gz is the official bridge between ROS 2 and Gazebo Sim, translating messages bidirectionally between ROS topics/services and Gazebo Transport. It's the mandatory glue layer for anyone doing robot simulation with the modern Gazebo (post-Ignition rename) — there's no real alternative if you're on this stack.
The bridge uses code generation (`.em` templates) to produce per-type factory classes, so adding a new message type doesn't require hand-writing boilerplate for both directions. The version compatibility matrix is explicit and well-maintained — you can see at a glance which ROS/Gazebo pairs have binary packages versus source-only. The `ros_gz_sim_demos` package ships working SDF worlds and launch files for a dozen sensor types, which is genuinely useful for getting oriented. The `gz_simulation_interfaces` addition in `ros_gz_sim` exposes a proper ROS action interface for stepped simulation control, which matters for reinforcement learning pipelines that need deterministic sim steps.
Build times are brutal — the README itself warns you to set `--parallel-workers=1` because template instantiation will OOM your machine, which is a sign the template architecture has scaled past what's practical. The version matrix has multiple 'only from source' entries for recent ROS/Gazebo combinations, meaning you're frequently on your own for the newest pairings. The `ros_gz_point_cloud` package has a `COLCON_IGNORE` file sitting in it, so it's silently excluded from builds without explanation — that's going to confuse anyone who tries to use it. Message conversion is one-to-one and stateless, so anything requiring coordination across message types (e.g., synchronized camera+depth streams) still needs manual handling on the ROS side.