The Gazebo team is happy to announce the 9th major release of Gazebo, code named Ionic!
Ionic is a short term support release, meaning it is a stepping stone between our major release Gazebo Harmonic and the forthcoming Gazebo Jetty release (more on that in second).
If you would like to see Gazebo Ionic in action, we demonstrated many new features at our monthly community meeting last Wednesday (direct video link):
You can find the full list of new features in the gz-Ionic repo, but here’s a brief summary:
-
Ionic demo world – Try out the Ionic demo world, which showcases some of the highlights from the Ionic release! This demo world also includes a demo of Nav2 and Open-RMF integration.
-
New Setup Gazebo Github Action – this is huge! It is now simpler than ever to use Gazebo as part of your continuous integration and deployment pipeline for testing and validation. This Github Action will automatically install Gazebo on your CI instance which can then be used for automated testing.
-
Gazebo Sphinx documentation – we’ve moved all of our Gazebo documentation to use the Sphinx documentation platform! This migration makes it much easier to write Gazebo docs by allowing docs writers the option preview changes without setting up a local docs environment. Gazebo developers will benefit from Sphinx’s mobile support, light and dark mode, search feature, SEO improvements, and interoperability with the ROS docs. Get a preview here.
-
Improved ROS-Gz launch files – we’ve created a more compact and idiomatic syntax to start Gazebo, create entities, and start the ros-gz bridge. This feature is available for both YAML and XML launch file types.
-
Composable nodes come to Gazebo – using ROS’s composable node primitive it is now possible to start Gazebo, ros_gz_bridge, and ROS nodes within the same process! This feature cuts down on the memory and transport overhead required to run ROS and Gazebo together.
-
Collision mesh optimization – we’ve added support for mesh optimization on the collision mesh. Users can now specify whether or not to perform mesh optimization on a collision mesh in SDF (requires SDF version >= 1.11). Two optimization methods are currently supported:
convex_decomposition
andconvex_hull
. -
New console logging featuring spdlog – Console logging has been reimplemented using spdlog. While the existing macros such as gzerr, gzwarn, and gzmsg continue to work as before, you can now get access to the raw spdlog logger, which provides greater control and flexibility. A new macro, gztrace is also provided, which can be useful in debugging or data collection scenarios. With spdlog, you also get the ability to use format strings.
-
Improvements to Bullet Featherstone physics – the bullet-featherstone plugin in gz-physics, now includes support for nested models, off-diagonal inertia, enforcing joint velocity and effort limits, configuring solver iterations, and more. There are also features for performance improvements and physics stability such as auto-deactivation, static object collision optimization, and use of convex hull shapes for convex decomposed meshes.
-
Specifying SDF plugins does not override default plugins – Gazebo Ionic now loads default plugins when a user specifies an additional plugin. This leads to much simpler and more compact SDF files. This policy can be disabled using the
<gz:policy>
settings to revert to how it functioned in previous Gazebo versions. -
Gz-transport ignores messages that share a publisher and subscriber – We’ve added a option to SubscriberOptions in gz-transport to ignore messages when a publisher and subscriber share the same node. This feature was particularly interesting to avoid loops in the ros_gz bridge.
-
Improvements to gz topic and gz service CLI commands – most gz-transport functionality are exposed via the command line. Gazebo Ionic users can make one-way service requests directly from the command line. Synchronous service requests have now a default timeout, reducing the amount of typing from the CLI. Gazebo Ionic allows users to request no-input service requests directly from the command line. See gz-transport#477, gz-transport#486, gz-transport#487, gz-transport#503, and gz-transport#506
-
Gazebo users can now track and follow entities automatically using the Gazebo GUI – no more manually following a robot or other entity! Just select track from the GUI and the camera follows the selected entity.
-
Flip a switch to turn on the lights! New dynamic materials allow users to change the color and emissivity of objects via interactions; these features allow Ionic users to simulate lightbulbs, LEDs, and other illuminated objects.
-
New cone primitive enables ice cream, planes, sensors and much more! You can now create a parametric cone primitive from the Gazebo GUI or in your SDF file.See gz-gui#621, gz-math#594, gz-msgs#442, gz-physics#639, gz-rendering#1003, gz-sim#2410, and sdformat#1418.
-
Gazebo / ROS vendor packages – make it possible to install ROS and Gazebo using Apt from the command line. Quickly and easily take Ionic for a spin with ROS Jazzy and Rolling. You can also build your own source code against these packages using provided CMake shims.
Gazebo now works natively on Windows – Gazebo support is still experimental and support is on a best-effort basis, but in addition to working in WSL, the Gazebo server and GUI both run natively on Windows.
Platform Support
As of the release date, the currently supported platforms are:
- Ubuntu Noble (24.04) on amd64
Platforms supported at best-effort include arm architectures, Windows and macOS.
If you would like to take Gazebo Ionic for a spin you can find full installation instructions here. If our install instructions look a bit different it is because we migrated the Gazebo documentation to Sphinx! It even supports dark mode!
If you are planning on pairing Gazebo with ROS please check out our guidance on this documentation page. Like Gazebo Harmonic, Ionic supports ROS vendor packages, allowing you to install and build against Gazebo by simply installing a set of Apt packages.
Contributors and Supporters
We’d also like to give a special thanks to the community members who helped us review Ionic tutorials during the Tutorial Party and contributed to make this Gazebo release happen. The results from our Ionic Test and Tutorial Party we’re quite impressive and we were so happy to see so many new contributors! Our tutorial party went incredibly well! We had 31 participants help us with testing the Ionic release which allowed us to:
- Close 413 out of 664 total testing tickets
- Close 151 out of 181 Ubuntu tickets
- Close 64 out of 180 MacOS tickets
- Close 77 out of 180 Windows tickets*
Our contributors to the T&T Party Included:
- avanmalleghem: 65
- trushant05: 56
- Combuster54: 37
- khshmt: 29
- akky20: 27
- heramb-modugula: 26
- caguero: 22
- jmackay2: 18
- knmcguire: 15
- alesof: 12
- Mechazo11: 12
- j-rivero: 9
- Sanjay1911: 9
- david-dorf: 7
- shameekganguly: 6
- sreekanthr: 5
- csimon-be: 5
- ahcorde: 5
- jennuine: 4
- Tiryoh: 4
- utkuesen: 3
- Yadunund: 3
- EnzoGhisoni: 3
- jc-sz: 2
- alexandrosnic: 2
- NickTziaros: 2
- peci1: 1
- bperseghetti: 1
- PannagaS: 1
- JeremyDWilliams: 1
Note: T&T party stats do not reflect activity after the party ended on September 13th, 2024.
We would also like to thank everyone that contributed to Ionic:
Full list of contributors
-
AZMYIN MD KAMAL (Mechazo11)
-
Abhiroop Bhavsar (akky20)
-
AddisonFarley,
-
Addisu Z. Taddese (azeey)
-
Afereti Pama (retinfai)
-
Alan (alanmehio)
-
Alejandro Hernández Cordero (ahcorde)
-
Alessandro Croci (xela-95)
-
Alessandro Sofia (alesof)
-
Alexandros Nicolaou (alexandrosnic)
-
Amronos (Amronos)
-
Antoine Van Malleghem (avanmalleghem)
-
Arjo Chakravarty (arjo129)
-
Aryan Jagushte (aryanjagushte)
-
Asa Paparo (AngleSideAngle)
-
Ash Babu (ashBabu)
-
Athena Z. (athenaz2)
-
Ayush Singh (Ayush1285)
-
AzulRadio,
-
Baljinder Singh Bal (singhbal-baljinder)
-
Benjamin Perseghetti (bperseghetti)
-
Benoit Maurin (unjambonakap)
-
Bi0T1N,
-
Bogdanov Anton (Bogdanov-am)
-
Carlos Agüero (caguero)
-
Choi Eungyu (gyuray-dev)
-
Cristóbal Arroyo (Crola1702)
-
Daisuke Sato (Tiryoh)
-
David Dorf (david-dorf)
-
Dharini Dutia (quarkytale)
-
El Jawad Alaa (ejalaa12)
-
Eloy Briceno (Voldivh)
-
Enzo Ghisoni (EnzoGhisoni)
-
EyalBrilling,
-
Francisco Martín Rico (fmrico)
-
Franco Cipollone (francocipollone)
-
Frederik Markus (frede791)
-
Gabriel Arjones (g-arjones)
-
Gaurav Kumar (GauravKumar9920)
-
Graziato Davide (Fixit-Davide)
-
Henry Kotzé (henrykotze)
-
Heramb Modugula (heramb-modugula)
-
Ian Chen (iche033)
-
Jagadeeshan S (ms-jagadeeshan)
-
Jasmeet Singh (jasmeet0915)
-
Jenn Nguyen (jennuine)
-
Jorge J. Perez (Blast545)
-
Jose Luis Rivero (j-rivero)
-
Katherine Scott (kscottz)
-
Khaled Gabr (khaledgabr77)
-
Kimberly N. McGuire (knmcguire)
-
Krzysztof Wojciechowski (Kotochleb)
-
Luca Della Vedova (luca-della-vedova)
-
Mabel Zhang (mabelzhang)
-
Maksim Derbasov (ntfshard)
-
Marco A. Gutierrez (marcoag)
-
Mark Choi (bchoineubility)
-
Martin Pecka (peci1)
-
Michael Beardsworth (mbeards)
-
Michael Carroll (mjcarroll)
-
Mirko Ferrati (MirkoFerrati)
-
Mohammadreza Beygifard (Mohammadreza-Beygifard)
-
Nabeel Sherazi (nabeelsherazi)
-
Nate Koenig (nkoenig)
-
Nick Oliver (PixnBits)
-
Nikos Tziaros (NickTziaros)
-
Orestis Kaparounakis (KomaGR)
-
Pedro Roque (Pedro-Roque)
-
Qingyou Zhao (qingyouzhao)
-
Rein Appeldoorn (reinzor)
-
Rhys Mainwaring (srmainwaring)
-
Roderick Taylor (rodericktaylor)
-
Ruben Vidal (Combuster54)
-
Ryan (Ryanf55)
-
Ryan Govostes (rgov)
-
Rômulo Cerqueira (romulogcerqueira)
-
Sammit Dhar (sdhar04)
-
Saurabh Kamat (sauk2)
-
Scott K Logan (cottsay)
-
Sebastian Castro (sea-bass)
-
Sebastian Kasperski (skasperski)
-
Serkan Mazlum (serkanMzlm)
-
Silvio Traversaro (traversaro)
-
Sreekanth Rajan (sreekanthr)
-
Steve Macenski (SteveMacenski)
-
Steve Peters (scpeters)
-
Tom Creutz (tomcreutz)
-
Trushant Adeshara (trushant05)
-
Tully Foote (tfoote)
-
Victor T. Noppeney (Vtn21)
-
Vincent (VincidaB)
-
Yadu (Yadunund)
-
Yaswanth (yaswanth1701)
-
aadith-warrier,
-
cord-burmeister,
-
dureduck (chenyenru)
-
jmachowinski,
-
jrutgeer,
-
mosfet80,
-
norakon,
-
shameekganguly,
-
wittenator,
-
zhileiren,
-
Øystein Sture (oysstu)
Swag and 3D Model
If you would like to show your support for the project be sure to get your Ionic swag! We’re offering a wide range of Gazebo swag items including t-shirts, sweat shirts, pillows, coffee mugs, flags, posters and notebooks. All proceeds go to support the project.
If you have access to a 3D printer and want to print your own Gazebo Ionic swag, the Gazebo project’s own designer Cole Biesemeyer has shared a 3D model of the Gazebo Ionic model on Thingiverse.
Next Up: Gazebo Jetty!
The next release, Gazebo Jetty, is scheduled to be released in September 2025. Keep an eye on the roadmap for what’s coming up, and let us know what features you’re interested in!
The Gazebo Dev Team