ROS 2 Jazzy Jalisco Released!

Happy World Turtle Day! Today the ROS 2 Release Team is happy to announce the tenth release of ROS 2: Jazzy Jalisco (codenamed jazzy).

In addition to the official logo shared previously, we also have a new Jazzy Jalisco turtlesim icon.

Jazzy Jalisco is a long term support (LTS) release that will be supported until May 2029. The distribution is primarily supported on the following platforms:

Tier 1 platforms:

  • Ubuntu 24.04 (Noble): amd64 and arm64
  • Windows 10 (Visual Studio 2019): amd64

Tier 2 platforms:

  • RHEL 9: amd64

Tier 3 platforms:

  • macOS: amd64
  • Debian Bookworm: amd64

For more information about RMW implementations, compiler/interpreter versions, and system dependency versions see REP 2000.

If you are new to ROS, we recommend trying Jazzy Jalisco on a Tier 1 supported platform. Check the installation instructions and tutorials on, and give Jazzy a spin! Should you run into any difficulties, please ask a question on ROS Stack Exchange. Also, a quick reminder, our Jazzy T-shirt and swag campaign is still live! You can still grab all the cool merch if you want to support the release. All proceeds help support the Open Source Robotics Foundation (OSRF).

New Features and Enhancements

Jazzy Jalisco is feature packed and full of improvements! If you want the gritty details feel free to peruse the release notes and changelog for core ROS 2 packages. We’ve summarized a few new features we’ll think you’ll love below:

Easier Gazebo Integration

Even though the OSRF maintains the Gazebo simulator, we’ve always strived to keep ROS simulator agnostic. No simulator is perfect, and we want ROS users to choose the simulator that works best for their particular application. However, usability, education, and “batteries included” also matter! Many of the newer members of our community, particularly students, struggled with getting ROS and Gazebo to work well together. Starting with Jazzy we’re trying to improve the usability of Gazebo with ROS while still giving users the option to use their favorite simulator. To do this we’ve started recommending a particular Gazebo release for each ROS release. For Jazzy Jalisco, the recommended Gazebo release is Gazebo Harmonic. From now on, for each recommended Gazebo release, we’ll distribute Gazebo vendor packages that users can easily install so they can get started quickly! You can find a full list of our Gazebo vendor packages, and instructions on how to use them here.

ROS Command Line Interface Improvements

The ROS 2 command line sports a handful of new features that should make your life easier! Here are a couple of highlights:

  • Pick your own log file names! Just add --log-file-name to set a custom log file for a ros2 run command.
  • Set your own Quality of Service when calculating topic statistics.
  • Calls to ros2 service info now report the number of connected clients.
  • Actions now report their type information – i.e. ros2 action type \action_name returns the action type.
ROSBag Improvements

ROS services play a critical role in any ROS system, as most developers use services as the building blocks for more complex behaviors or as the user-facing API for a robot. Making a robot perform a behavior is often as simple as calling a quick service request. On the other hand ROSBags on the are often used by ROS developers much like an airplane’s “black box,” with ROSBag data often being used to analyze and debug failure modes. Unfortunately, in all previous ROS 2 releases, ROSBag files could not log service calls, making it difficult to understand the series of service calls that led to a particular failure mode. Jazzy fixes this oversight by adding the ability to log and replay service calls directly to a ROSBag file!

Another useful feature we’ve added to ROSBags in Jazzy is the ability to selectively record topics by type. Let’s say you wanted to record all of the image topics for every one of the five cameras on your autonomous car. Prior to Jazzy you would need to enumerate every image topic on your robot to make that happen. Now you can simply tell ROSBag to log all messages of type sensor_msgs/msg/Image and ROSBag will take care of the rest! But wait, there is more! You can also exclude particular message types too! This is particularly useful if you want to keep your ROSBags lean so you can quickly share them with colleagues.


RViz2, the built-in ROS 2 visualization tool, comes with a suite of new features that improve RViz’s overall usability and help filter out unnecessary information. Briefly we’ve added the following features:

Miscellaneous Improvements of Note

Across the project there were a bunch of small improvements that should make life easier for ROS developers. Many of these improvements came from community members trying to make everyone’s lives just a little bit easier!

A Community Effort

ROS 2 is truly a community effort, and this could not have been better exemplified by our public beta testing 3 of Jazzy Jalisco over the past few weeks. Almost 400 test cases were put through the ringer with several improvements identified along the way. It really helped “harden” the Jazzy distribution. The release team would like to extend a heartfelt thank you to all testers. For our top twenty testers you should get an e-mail in your inbox with a swag coupon code sometime later next week. A full list of our testers and the number of issues they tested:

See list of testers

pradyum: 115
mikaelarguedas: 52
fujitatomoya: 51
ganatrask: 32
jasmeet0915: 21
knmcguire: 20
samuel-ongzx: 18
slowrunner: 17
jmackay2: 15
clalancette: 9
Trushant-Adeshara-UM: 9
Kartik9250: 9
ottojo: 6
Benjamin-Tan: 6
hwoithe: 5
wep21: 4
clemefr: 4
Nikhil-Singhal-06: 4
Barry-Xu-2018: 4
iam-shanmukha: 3
Tacha-S: 3
Ayush1285: 3
MGupta28: 2
srsaito: 1
prototriangle: 1
msadowski: 1
mdxtinkernick: 1
jaspreet491: 1
ahcorde: 1

Thanks to the 211 contributors who contributed to this release through code changes, documentation, and testing.

See full list of contributors

Adam Aposhian
Addisu Z. Taddese
Aditya Pande
Alberto Soragna
Alejandro Hernández Cordero
Aleksander Szymański
Alex Moriarty
Alexey Merzlyakov
Alexis Paques
Ali Ashkani Nia
Andrea Sorbini
Andrew Symington
Anton Kesy
Antonio Cuadros
Arne B
Arne Hitzmann
Austin Moore
Barry Xu
Bence Magyar
Bernd Pfrommer
Boris Boutillier
Breno Cabral
Carlos Andrés Álvarez Restrepo
Chen Lihui
Chris Lalancette
Christian Henkel
Christian Ruf
Christoph Fröhlich
Christophe Bedard
Christopher Wecht
Cliff Wu
Corey Quinn
Cristian Chitiva
Cristóbal Arroyo
Daisuke Nishimatsu
David Dorf
David V. Lu!!
David Yackzan
Devarsi Rawal
Eetu Silvennoinen
Eloy Briceno
Emerson Knapp
Enrico Sutera
Eric W
Erich L Foster
Fangjun Kuang
Felipe Gomes de Melo
Felix Divo
Felix Exner (fexner)
Felix F Xu
Felix Penzlin
Francesco Fallica
Francisco Martín Rico
G.A. vd. Hoorn
George Broughton
Giorgio Pintaudi
Guillaume Doisy
Guiseppe Rizzi
Gökçe Aydos
Hans-Joachim Krauch
Henning Kayser
Homalozoa X
Hunter L. Allen
Ignacio Vizzo
Isaac Saito
Isabel Paredes
Ivan Perez
Jasmeet Singh
Jason O’Kane
Jeffery Hsu
Jesús Poderoso
Jiaqi Li
Jonas Otto
Jordan Palacios
Jorge Perez
Katherine Scott
Kenji Brameld
Kenta Yonekura
Kimberly McGuire
Kotaro Yoshimoto
Lewe Christiansen
Lloyd Pearson
Lou Amadio
Luca Della Vedova
Lucas Walter
Lucas Wendland
M. Fatih Cırıt
M. Hofstätter
Manuel Roglan
Marc Bestmann
Marco A. Gutierrez
Markus Bader
Matt Condino
Matthew Elwin
Matthew Foran
Matthias Schoepfer
Matthijs van der Burgh
Michael Carlstrom
Michael Carroll
Michael Ferguson
Michael Jeronimo
Michael Orlov
Michael Razum
Michal Sojka
Miguel Company
Mikael Arguedas
Mike Purvis
Morgan Quigley
Muhammad Ashfaq
Murilo M Marinho
Nathan Wiebe Neufeldt
Nick Lamprianidis
Nick Morales
Oren Bell
Patrick Roncagliolo
Paul Erik Frivold
Paul Gesel
Peter Favrholdt
Pradyum Aadith
Przemysław Dąbrowski
Pururva Lakkad
Quentin Quadrat
Ricardo de Azambuja
Robert Brothers
Roderick Taylor
Romain Lebbadi-Breteau
Roman Sokolkov
Ruddick Lawrence
Sai Kishor Kothakota
Scott K Logan
Shane Loretz
Silvio Traversaro
Simon Jones
Stefan Fabian
Steve Macenski
Steve Peters
Thiemo Kohrt
Tim Clephas
Timo Röhling
Timon Engelke
Tom Noble
Tomoya Fujita
Tony Najjar
Tully Foote
Tyler Weaver
Victor Lee
Vincent Richard
Vladimir Fokow
Vladimir Ivan
William Woodall
Yannis Gerlach
Yasushi SHOJI
Zac Stanton
Øystein Sture

ROS wouldn’t exist if it weren’t for all of our wonderful package maintainers. We’ve asked all of the package maintainers who plan to have their code ready for release today, or soon, to prepare “Jazzy jives”. In the comments below they’ll be posting brief updates about all of the new features they are bringing to Jazzy for their packages.

Preview: Zenoh RMW!

While it is not technically a part of this release, we also want to say a few words about Zenoh. Back in September, we said that we would be working on a new ROS middleware (RMW) that integrates Zenoh with ROS 2 (please see that post for lots of details on why we made this choice). We’ve made steady progress on it, and rmw_zenoh is now feature complete. However, it is still a preview because there are some known bugs in it, and we aren’t quite ready to commit to it for the long term. Rest assured that we’ll be continuing to work on and improve it in the coming year.

To use this new RMW you will need to compile it from source. Since this is a preview feature we want to hear about your experiences, particularly for larger ROS deployments with heavy networking needs. For more information on how to use it, please see the README in GitHub - ros2/rmw_zenoh: RMW for ROS 2 using Zenoh as the middleware.

Finally, we’d like to announce the name of the next ROS 2 release for May 2025:

:partying_face: Kilted Kaiju :partying_face:


Congratulations all! :partying_face:

Very excited about the new rmw_zenoh, is it anticipated that it will be backported to this Jazzy LTS once it’s more stable and tested, or will we have to wait until the next release?


Could you provide a list of these known bugs?

1 Like

Please see my response in Jazzy Jalisco Testing & Tutorial Kickoff Party / Instructions - #15 by clalancette

1 Like
1 Like

Another great job by @clalancette, the ROS team, and the whole community!

:jazzy: :jazzy: :jazzy:


Unofficial docker images for ROS Jazzy are now available :jazzy: :tada: :jazzy:

docker run --rm=true -ti ros2 --help

All images are updated once per week at midnight GMT on Sunday. Additionally each ROS distro’s images are updated automatically after a sync.


Some cool additions and improvements to ros2_tracing, which provides tracing instrumentation for ROS 2 along with tools to easily configure tracing:


I’m happy to announce catch_ros2, the first ROS 2 package release to come out of Northwestern University’s MSR program. With input from Matthew Elwin and Hang Yin, I developed this package to provide a lightweight ROS 2 wrapper around the simple-to-use Catch2 v3 C++ testing framework. The package provides a simple interface for using Catch2 v3 within ROS 2 packages for both unit testing of package modules and integration testing of interactions/interfaces between nodes.

I’ll highlight specifically the integration testing functionality, which allows developers to define what nodes are launched with a typical launch file (Python, XML, or YAML of course) and write a test node to control test logic and assertions. A custom CMake function allows integration tests to be run automatically through colcon test.

Check out the README for more documentation and examples! If you’re a fan of Catch2 and looking to use it for integration/unit testing in your ROS 2 packages, we hope this package will make it easier to do so. Wishing you all the most extensive test coverage!

The official docker images are available in the docker main library :whale: :turtle: !

docker run -it --rm ros:jazzy

Please check out ROS Jazzy docker images for more details

Happy containing !


On the new Zenoh RMW, a part of the team who helped with rmw_zenoh (@Yadunund and myself) will host a webinar to talk about it and compare it with the zenoh_bridge_ros2dds on Tuesday, May 28th at 8am PST/5pm CET.
It’ll be streamed live (here so you can ask us questions. The recording will remain on Youtube. Join us if you can.


Congratulations on the release of Jazzy Jalisco!

The Gazebo team is happy to announce that Gazebo Harmonic :gazebo: is available for ROS Jazzy! Get started with:

sudo apt install ros-jazzy-desktop-full

See Gazebo Harmonic in action at the community meeting held right before the release and read the release post to learn about all the new features available.

ROS and Gazebo-Classic

As announced earlier, Gazebo-classic (aka Gazebo11, see Terminology) is no longer being actively developed and will not be available on ROS Jazzy (REP 2000). Instead, we recommend users to migrate to modern Gazebo (formerly known as Ignition). Please see the migration guide to get started.

Updates for Jazzy

For the ROS Jazzy release, the Gazebo team has been working in collaboration with the ROS team to improve the integration of Gazebo and ROS. We would like to announce the availability of Gazebo Vendor packages and give you a sneak-peak of upcoming features.

Gazebo Vendor Packages

Gazebo libraries are now available directly from via vendor packages. The packages are built in the ROS buildfarm and as part of their build process, fetch the sources of the underlying Gazebo library and build it. In addition, the vendor packages provide CMake shims that make it possible to use CMake targets without version numbers. See the documentation for full details.

A special thanks to @mjcarroll, @clalancette, @cottsay, and @nuclearsandwich for their help and guidance in creating these vendor packages.

Improved Launch Files (Coming soon)

ROS launch files used to start Gazebo, spawn models in simulation, and start the ros_gz bridge are now much simpler and more idiomatic. New XML and YAML elements are available to simplify the creation of launch files. As an example, here’s how you can start gzserver and the bridge from an XML file:

  <gz_server world_sdf_file="$(find-pkg-share my_package)/worlds/my_world.sdf" />
  <ros_gz_bridge config_file="$(find-pkg-share my_package)/config/bridge_config.yaml" />

See issue to keep track of progress.

Improved ros_gz_bridge performance (Coming soon)

A new parameter use_composition is also available in all the new launch files to leverage the ability to launch composable nodes. This feature allows us to run Gazebo, the ros_gz_bridge, and other potential ROS composable nodes within the same process. This improves performance by avoiding message serialization and network transport between Gazebo and ROS.

See issue to keep track of progress.

:gazebo: Gazebo Development Team


I guess the webinar starts in an hour :slight_smile:

No, it already started. So it wasn’t 5 CET but 5 CEST.

Sorry about this time zone error ! :sweat_smile:

For those who missed the rmw_zenoh webinar, the recording is available here:


Just FYI.

I put some core system updates together in markdown presentation slide for everyone.
If anything wrong or missing, please let me know!



ROS Clock is now updated with Jazzy as an active distro and Kilted distro listed as a future. < 1 year on Noetic. 175 days left on Iron.


On slide 9 I think there’s a command wrong.
ros2 bag record --all-services --all-topics
ros2 bag record --all
Is there a place that can get updated so new users don’t get confused?

1 Like

@Raivias Good eye! thanks!

html slides are generated from markdown presentation, presentation/ROS_Jazzy_Jalisco/ at master · fujitatomoya/presentation · GitHub

i will check and fix it later today.