The State of ROS: From theIron Age to the Jazzy Age
Chris Lalancette - ROS 2 Technical LeadYadunund Vijay - Iron ROS Boss
October 18, 2023

Who are we?

Outline● ROS distribution update● The community● New core features in Iron Irwini (May 2023)● Features in development for Jazzy Jalisco (May2024)● Long-term outlook for core features

ROS Distribution update

ROS Distros (REP-2000)
DistroEOL
Dates

Kinetic

Dashing

Galactic

Melodic

Foxy

4/20215/2021

11/2022

5/20235/2023IronNoetic

11/2024 5/2025

20202025
6/20205/20215/2022

5/2023
Jazzy
Jalisco(LTS)
5/2024

DistroReleaseDates

ROS 2 ROLLING RIDLEYROS Distros (REP-2000)
DistroEOL
Dates

Kinetic

Dashing

Galactic

Melodic

Foxy

4/20215/2021

11/2022

5/20235/2023IronNoetic

11/2024 5/2025

2020

2025
6/20205/20215/2022

5/2023
Jazzy
Jalisco(LTS)
5/2024

DistroReleaseDates

ROS 2 ROLLING RIDLEYROS Distros (REP-2000)
DistroEOL
Dates

Kinetic

Dashing

Galactic

Melodic

Foxy

4/20215/2021

11/2022

5/20235/20232020
6/2020DistroReleaseDates

5/2021●●

ROS 1: 1.5 years to transition!
5/2022ROS
2: Humble, 5/2023
Iron, or Rolling(Jazzy)ROS 2 ROLLING RIDLEY

Iron

Noetic11/2024 5/2025
2025

Jazzy
Jalisco(LTS)
5/2024

How are releases produced?

# Packages available (September 2023)

1987

1323

1156

1073

45.1%

Percentage ROS downloads that were ROS 2 in April 2023!

43,447,402
ROS package downloads in April 2023 alone!

17.14%
Growth in ROS downloads between 4/2022 and 4/2023

Package downloads

The Community

ROS Bosses●●What is a ROS Boss?
Who are the ROS Bosses?
○ROS 2■ Rolling: Steven! Ragnarök■ Jazzy: Marco A. Gutiérrez
■ Iron: Yadunund Vijay■ Humble: Audrow Nash
■ Galactic: Scott K Logan■ Foxy: Jacob Perron / Dharini Dutia■ Eloquent: Michael Carroll■ Dashing: Steven! Ragnarök■ Crystal: Steven! Ragnarök■ Bouncy: Mikael Arguedas / Steven! Ragnarök■ Ardent: Steven! Ragnarök○ROS 1■ Noetic: Shane Loretz■ Melodic: Chris Lalancette■ Lunar: Mikael Arguedas / Chris Lalancette■ Kinetic: Tully Foote■ Jade: Tully Foote / William Woodall■ Indigo: Tully Foote■ Hydro: Tully Foote■ Groovy: Tully Foote■ Fuerte: Ken Conley■ Electric: Ken Conley■ Diamondback: Ken Conley■ C Turtle: Ken Conley■ Box Turtle: Ken Conley

TSC (Technical Steering Committee)

Resources
●
●
●
●
●
●
●

Core documentation: https://docs.ros.org
Package index: https://index.ros.org
Discourse for discussion, announcements, or release:https://discourse.ros.org
Discord server for real-time conversation:
https://www.ros.org/blog/discord/
ROS Robotics stack exchange:
https://robotics.stackexchange.com/questions/tagged/ros
Working groups: https://docs.ros.org/en/rolling/TheROS2-Project/Governance/Working-Groups.html
GitHub:○ https://github.com/ros2○ https://github.com/ament○ https://github.com/ros

New CoreFeatures inIron Irwini
Released May 23rd 2023

Changelog

Python APIDocumentation
Primary Contributors: Abrar Rahman Protyasha & Yadunund
Vijay

●

●
●
●

https://docs.ros.org contains API level
documentation for all released
packages
C++ has existed for awhile
Python API docs are newrclpy:
https://docs.ros.org/en/rolling/p/rclpyREP-2012 ServiceIntrospection
Primary Contributors: Brian Chen & Jacob Perron & Chris Lalancette

What?

Why?

How?

Ever want to dig into a ROS
service and see who called it,the request, and the results?

Debugging services is hard.
We wanted a simple way towatch a service in a running
ROS system. You can now
see service events in a
separate topic e.g.

Service introspection is notenabled by default. It must be
enabled for the Client andServer respectively.

Now you can!

/myservice/_service_event

It is a ROS service debugmode!

Pre & Post Parameter Callbacks
Primary Contributors: Deepanshu Bansal & Jacob Perron

What?

Why?

How?

Node parameter callbacks
used to be “all or nothing,”
Every param had to becorrect to take effect. Now
you can modify parameter
lists on the fly! The post
parameter is where you want
to change state.

We wanted to give users
more flexibility without
breaking API. This approachallows users to add
validation and sanitization tocomplex parameter lists.

Check out the
add_pre_set_parameters_callback
add_post_set_parameters_callback

methods in your ROS node.

Matched Events
Primary Contributors: Barry Xu & Tomoya Fujita

What?

Why?

How?

Want to know when apublisher/subscriber pairestablish or drop aconnection? Matched event
callbacks let you do just this!
This can also be triggered
based on compatible QoS.

ROS node computations canbe expensive, and some users
don’t want to publish unlessthe right nodes are listening.
Matched events allow thisfeature.

Matched callbacks can be set
withinPublisherEventCallbacks andSubscriptionEventCallbacks

which are passed as options tothe publisher or subscription
resp.

External Logger
Configuration!
Primary Contributors: Lei Liu & Barry Xu & Tomoya Fujita

What?

Why?

How?

ROS logging is normallyconfigured at the systemlevel. Have you ever wanted
to set just one node toverbose mode at runtime?

ROS systems can be huge!
Users needed a granular way
to set node level logging fromthe CLI.

Enable enable_logger_service atnode creation which will create two
new services:

Now you can!

1. mynode/set_logger_levels
2. mynode/get_logger_levels

New Default Bag Format: MCAP
Primary Contributors: James Smith & Emerson Knapp & Michael Orlov

Standards Evolution

Baked in Message Defs

Enhanced PerformanceInfluenced by ROS 1 bags,
and fixing many of the issues
in SQLite3, MCAP is the newdefault bagging format for
ROS 2 that’s optimized forread and write!

Message definitions are
baked into MCAP, making theformat portable! Third party
tools like PlotJuggler andFoxglove can now render any
MCAP bag file.

Preliminary performance
evaluation indicates a ~2-5x
increase in message
throughput over SQLite on
ROS bag benchmarks(YMMV).

Experimental rclcpp executorPrimary Contributors: Mauro Passerino & Lenny Story & Alberto SoragnaWhat?

Why?

How?

The executor is responsible
for calling your callbacks. Thedefault one uses a fixedpriority order. The new
EventsExecutor maintains
a queue of events andexecutes them as they arrive.

The EventsExecutor canbe more fair to events andcan have better performance
than the default executor.

When writing your nodes, first
explicitly create therclcpp::experimental::executors::EventsExecutor.
Then add your node to theexecutor and spin it!

Features in development for
Jazzy Jalisco

rmw_zenoh●DDS is here to stay but we think analternative middleware protocol isbeneficial to the community.

●

Motivations and community discussions:
https://discourse.ros.org/t/investigationinto-alternative-middlewaresolutions/32642/43●

Report: https://discourse.ros.org/t/ros-2alternative-middleware-report/33771/14

rosbag2 service/action record andplay

Long term outlook for corefeatures

Use of “conda” forWindows

Performance
improvements

Ability to release Rust packages

Evolving messages over time

Automatically detect “best” data delivery

Interested in helping?

http://docs.ros.org/en/rolling/The-ROS2Project/Contributing.html

GazeboGazebo Harmonic features
●●●●
●
●

Python bindings for systems
Automatically compute Moment of Inertia ofmeshes
Exert forces and torques by dragging objects in thescene
Simulate virtual mass of displaced volume of objects
in fluids
Generate custom Gazebo messages
Lens Flare support

ROS is healthy and growing,
thanks to you!

36