// the find
cyberbotics/webots_ros2
Webots ROS 2 packages
Official ROS 2 integration package for the Webots open-source robot simulator, maintained by the Webots team at Cyberbotics. Bridges Webots simulation to the full ROS 2 ecosystem — Nav2, ros2_control, SLAM toolbox, MoveIt — so you can develop and test robot software in simulation before touching hardware. Target audience is robotics researchers and engineers who want a free alternative to Gazebo.
1. The plugin architecture in webots_ros2_driver is well-structured — sensor bridges (IMU, Lidar, RGBD, Camera, GPS) are separate translation units with a clean interface, making it straightforward to add a new device type without touching the core. 2. ros2_control integration is first-class, not bolted on: the Ros2ControlSystem implements the hardware_interface directly, which means you get all the controller manager tooling (pid tuning, state publishers, etc.) for free. 3. Actively maintained by the simulator's own team, so Webots API changes don't silently break the bridge — the controller library is synced via a dedicated CI workflow (libcontroller_updater.yml). 4. Ships working examples for specific robots (TurtleBot3, Crazyflie, Universal Robots) with complete world files, not just toy demos.
1. The controller library under webots_ros2_driver/webots/ is a vendored binary blob (.gitignore hides the .so/.dll files) — you can't inspect or build it yourself without a full Webots install, which makes the package harder to trust in headless CI environments and creates a tight version-coupling that has historically caused breakage when Webots releases a new version. 2. Python-first for higher-level robot drivers (most example drivers are .py) while the core bridge is C++; this means your robot controller lives in two languages and you'll hit GIL/timing issues if you try to do anything latency-sensitive in Python plugins. 3. No multi-robot simulation story — running multiple robot instances in one world requires manual namespace management that isn't documented well, and the TCP client approach adds latency that compounds across robots. 4. Webots itself is not Gazebo — the physics engine and sensor noise models are noticeably simpler, so sim-to-real transfer for anything beyond basic navigation will require significant tuning that the package doesn't help you with.