Release Notes#

Zenoh in gz-transport#

Gazebo now supports Zenoh as an alternative transport implementation, offering improved discovery, interoperability, and performance. To enable Zenoh, set the environment variable export GZ_TRANSPORT_IMPLEMENTATION=zenoh. This allows Gazebo to leverage Zenoh’s features and potentially integrate more seamlessly with ROS 2 and other systems utilizing Zenoh.

See the tracking issue and the implementation pull request gazebosim/gz-transport#665 for more details.

Improve Gazebo APIs for Reinforcement Learning#

Several APIs have been improved to streamline reinforcement learning pipelines. We have also added an example integration with the StableBaselines3 Python package for reinforcement learning, enabling users to experiment with RL algorithms within Gazebo. The example provides a starting point for developing and testing robotic control policies.

RL_with_gazebo_simple_example

Example of doing Reinforcement Learning in Gazebo#

See the tracking issue and the implementation pull requests gazebosim/gz-sim#2667 and gazebosim/gz-sim#2647 for more details

Implement ROS standard simulation interfaces#

Gazebo now supports the standard ROS 2 simulation interfaces, enabling seamless integration with ROS 2 ecosystems and providing access to features for controlling and querying the simulation state. Documentation has also been added to guide users on utilizing these new interfaces.

See the tracking issue and the implementation pull requests gazebosim/ros_gz#790 and gazebosim/docs#601 for more details

Remove major version from package names#

We have refactored package naming to remove major version numbers, simplifying dependency management and reducing maintenance overhead. This change impacts how Gazebo packages are identified in CMake builds, package installations, and import statements.

See the announcement for more details.

Migrate from Qt5 to Qt6#

With Qt5 reaching end of life, Gazebo has been migrated to Qt6. While there are no major changes to end-users of the Gazebo GUI, gz-gui plugin authors will need to make changes to ensure compatibility with Qt6. Gazebo plugin maintainers should use our migration guide to update their plugin to QT6.

See the tracking issue and the implementation pull requests gazebosim/gz-gui#666 and gazebosim/gz-sim#2832 for more details

Resolve auto inertia based on input mass#

Inertia parameters can now be automatically set based on an object’s mass specified in an SDF file. This eliminates the need to manually compute and set the density of collision objects. When both mass and density are set, Gazebo now correctly scales the auto-computed inertia based on the specified mass, respecting the density ratios between collisions.

See the tracking issue and the implementation pull request gazebosim/sdformat#1513 for more details

Standalone executables for the gz tool#

Previously, the gz tool, a Ruby-based CLI interface, offered subcommands by loading shared libraries provided by each of the Gazebo libraries. This approach had several downsides including difficulty with debugging with gdb, portability issues when running on Windows or macOS. With the new approach each of the libraries provide standalone executables that are spawn by the gz tool. The standalone executables can be executed directly if desired, making it significantly easier to run under gdb. Unlike loading shared libraries, running executables is much more straightforward and does not have any of the portability issues of the previous approach.

See the tracking issue and one of the implementation pull requests gazebosim/gz-sim#2849 for more details

Parallel asset download#

This enhancement significantly improves Gazebo’s startup time and responsiveness when loading worlds with many assets. Assets are now downloaded in parallel, allowing the GUI to remain interactive during the loading process and enabling users to close the window if needed.

See the tracking issue and one of the implementation pull requests gazebosim/gz-sim#2992 for more details

Occupancy Grid Export#

This enhancement adds a plugin that enables end users to directly export occupancy grids for use with Nav2 or other mobile robotics software.

See the pull request gazebosim/gz-sim#2958 for more details.

Lookup Wheel Slip system#

Introduced a new system that works in conjunction with the existing WheelSlip system to dynamically adjust wheel slip and friction parameters. Using an 8-bit slip- and friction-encoded lookup map representing the terrain the wheeled vehicle is on, the LookupWheelSlip system modifies lateral slip, longitudinal slip, and friction parameters in real time based on the wheel’s position in the world, enabling more realistic vehicle behavior on variable surfaces.

See the pull request gazebosim/gz-sim#3003 for more details.

Bazel Module Migration#

Migrated gz packages from the legacy Bazel workspace-based setup to the new Bazel module system (Bzlmod). As part of this effort, key third-party dependencies including DARTSim, Bullet, FreeImage, Assimp and more were packaged and published to the Bazel Central Registry (BCR). All Jetty and Ionic versions of the libraries have been uploaded to BCR. Note that gz-launch has been excluded due to deprecation, gz-gui is not yet supported, and migration of gz-rendering in currently in progress.