.. toctree:: :hidden: Jazzy-Jalisco-Complete-Changelog
Table of Contents
Jazzy Jalisco is the tenth release of ROS 2. What follows is highlights of the important changes and features in Jazzy Jalisco since the last release. For a list of all of the changes since Iron, see the :doc:`long form changelog <Jazzy-Jalisco-Complete-Changelog>`
Jazzy Jalisco is primarily supported on the following platforms:
Tier 1 platforms:
- Ubuntu 24.04 (Noble):
amd64
andarm64
- 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.
Starting with Jazzy Jalisco, we are streamlining how ROS 2 and Gazebo integrate. For every ROS 2 release, there will be a recommended, supported Gazebo release that goes along with that release. For Jazzy Jalisco, the recommended Gazebo release will be Harmonic.
To make it easier for ROS 2 packages to consume Gazebo packages, there are now gz_*_vendor
packages.
Those packages are:
- gz_common_vendor: https://github.com/gazebo-release/gz_common_vendor
- gz_cmake_vendor: https://github.com/gazebo-release/gz_cmake_vendor
- gz_math_vendor: https://github.com/gazebo-release/gz_math_vendor
- gz_transport_vendor: https://github.com/gazebo-release/gz_transport_vendor
- gz_sensor_vendor: https://github.com/gazebo-release/gz_sensor_vendor
- gz_sim_vendor: https://github.com/gazebo-release/gz_sim_vendor
- gz_tools_vendor: https://github.com/gazebo-release/gz_tools_vendor
- gz_utils_vendor: https://github.com/gazebo-release/gz_utils_vendor
- sdformat_vendor: https://github.com/gazebo-release/sdformat_vendor
ROS 2 packages can use the functionality in these packages by adding dependencies in package.xml
, e.g.:
<depend>gz_math_vendor</depend>
And then using them in CMakeLists.txt
, e.g.:
find_package(gz_math_vendor REQUIRED) find_package(gz-math) add_executable(my_executable src/exe.cpp) target_link_libraries(my_executable gz-math::core)
Note
It will still be possible to use alternate Gazebo versions with Jazzy Jalisco. But those will not be as well tested or integrated with ROS 2. See https://gazebosim.org/docs/harmonic/ros_installation for more information.
Added a new message with all fields needed to define a velocity and transform it.
See ros2/common_interfaces#240 for more details.
Added new type of Marker, ARROW_STRIP
, to Marker.msg.
See ros2/common_interfaces#242 for more details.
See ros-perception/image_common#272 for more details.
See ros-perception/image_common#274 for more details.
Added parameter so users can selectively disable image_transport
plugins at runtime.
See ros-perception/image_common#264 for more details.
Allow users to pass in a custom quality-of-service when creating image_transport
publishers and subscribers.
See ros-perception/image_common#288 for more detatils.
Users can now start the image_transport
republisher node as an rclcpp_component.
See ros-perception/image_common#275 for more details.
Allows users to use Type Adaptation within message_filters.
See ros2/message_filters#96 for more information.
Implements the ~/get_type_description
service which allows external users to get descriptions of each type that a node offers.
This is offered by each node according to REP 2016.
See ros2/rcl#1052 for more details.
New type support helper for services rclcpp::get_service_typesupport_handle
is added to extract service type support handle.
See ros2/rclcpp#2209 for more details.
New class ParameterEventHandler
allows us to monitor and respond changes to parameters via parameter events.
See ros2/rclpy#1135 for more details.
It is now possible to use --log-file-name
command line argument to specify the log file name prefix.
ros2 run demo_nodes_cpp talker --ros-args --log-file-name filename
See ros2/ros2cli#856 for more information.
A user-settable QoS parameter was added to the TopicStatisticsOptions
, which allows the statistics to have a different QoS from the subscription itself.
See ros2/rclcpp#2323 for more details.
It is now possible to get the number of clients created by a service.
It is now possible to use the type
sub-command to check the action type.
ros2 action type /fibonacci
action_tutorials_interfaces/action/Fibonacci
See ros2/ros2cli#894 for more information.
It is now possible to record and play service data with the ros2bag
command line interface.
This features builds on Service Introspection, which has been available since Iron Irwini. Service recording and display adds the ability to record service data into a bag file. And Service playback can play that service data from the bag file.
Record all services data:
ros2 bag record --all-services
Record all services and all topic data:
ros2 bag record --all
Play service data from bag file:
ros2 bag play --publish-service-requests bag_path
See the design document for more information.
It is now possible to filter by topic type.
ros2 bag record --topic_types sensor_msgs/msg/Image sensor_msgs/msg/CameraInfo
ros2 bag record --topic_types sensor_msgs/msg/Image
See more details ros2/rosbag2#1577 and ros2/rosbag2#1582.
This allows a "zero-copy" when using intra-process communication during data record or reply.
This can significantly reduce CPU load during recording or reply when dealing with high-bandwidth data streams and will help to avoid data loss in the transport layer.
It also provides the ability to use YAML configuration files for rosbag2_transport::Player
and rosbag2_transport::Recorder
composable nodes.
See https://github.com/ros2/rosbag2/tree/jazzy?tab=readme-ov-file#using-with-composition for more details.
See ros2/rosbag2#1607 for more details.
Where available, rosbag2
now uses the send and receive timestamps as provided by the middleware.
These timestamps are more indicative of when the data was actually sent and received, respectively.
Note that saving the timestamp into a bag is currently only supported for MCAP files (the default).
See ros2/rosbag2#1531 for more details.
It is now possible to specify the priority of the thread that performs compression.
See ros2/rosbag2#1457 for more details.
Added start_time_ns
and end_time_ns
to the StorageOptions
to exclude messages not in
[start_time;end_time]
during the ros2 bag convert
operation.
See ros2/rosbag2#1455 for more details.
rosbag2
has always stored metadata in the metadata.yaml
file associated with a bag file.
Now the metadata is also stored in each bag file, once when opening the file and a second time when closing the written bag file.
This allows bag files to be self-contained, and used without the metadata.yaml
file in the rosbag2 player or third-party applications.
ros2 bag reindex
can still be used to restore the metadata.yaml
file, if desired.
See ros2/rosbag2#1241 for more details.
It is now possible to instrospect QoS setting from Python bindings.
See ros2/rosbag2#1648 for more details.
The key
annotation allows indicating that a data member is part of the key, which can have zero or more key fields and can be applied to structure fields of various types.
See ros2/rosidl#796 and ros2/rosidl_typesupport_fastrtps#116 for more details.
When there are many frames on /tf
it can be hard to properly visualize them in RViz, especially if frames overlap.
The usual solution to this is to enable and disable desired frames in Frames field of the TF display.
Now it is possible to filter frames using regular expressions.
See ros2/rviz#1032 for more details.
It is possible to visualize Hz in the topic status widget.
See ros2/rviz#1113 for more details.
It is possible to reset Time using a new service or using the keyboard shortcut R
.
See ros2/rviz#1109 and ros2/rviz#1088 for more details.
It is possible to subscribe to point clouds using the point_cloud_transport
package.
See ros2/rviz#1008 for more details.
It is possible to use the same plugins available in the ROS 1 version.
- DepthCloud
- AccelStamped
- TwistStamped
- WrenchStamped
- Effort
It is possible to visualize CameraInfo messages in the 3D scene.
See ros2/rviz#1166 for more details.
std::expected is C++23 feature, which is not yet supported in ROS 2.
However, it is possible to use tl::expected
from rcpputils via a backported implementation.
See ros2/rcpputils#185 for more details.
It is now possible to output dates in a human readable format when using console logging by using the {date_time_with_ms}
token in the RCUTILS_CONSOLE_OUTPUT_FORMAT
environment variable.
See ros2/rcutils#441 for more details.
Polygons are often used to represent specific objects but are difficult to rectify currently without any kind of specific identification. This feature adds an ID field to disambiguate polygons.
See ros2/common_interfaces#232 for more details.
In Humble, the headers: tf2_bullet/tf2_bullet.h
, tf2_eigen/tf2_eigen.h
, tf2_geometry_msgs/tf2_geometry_msgs.h
,
tf2_kdl/tf2_kdl.h
, tf2_sensor_msgs/tf2_sensor_msgs.h
were deprecated in favor of: tf2_bullet/tf2_bullet.hpp
,
tf2_eigen/tf2_eigen.hpp
, tf2_geometry_msgs/tf2_geometry_msgs.hpp
, tf2_kdl/tf2_kdl.hpp
, tf2_sensor_msgs/tf2_sensor_msgs.hpp
In Jazzy, the tf2_bullet/tf2_bullet.h
, tf2_eigen/tf2_eigen.h
, tf2_geometry_msgs/tf2_geometry_msgs.h
,
tf2_kdl/tf2_kdl.h
, tf2_sensor_msgs/tf2_sensor_msgs.h
headers have been completely removed.
Previously wait_for_transform_async
and wait_for_transform_full_async
of the Buffer
class returned a future containing true or false
In Jazzy, the future will contain the information of the transform being waited on.
Included new API to lookup the velocity of the moving frame in the reference frame.
See ros2/geometry2#646 for more information.
New timer API rcl_timer_call_with_info
is added to collect actual and expected call time when the timer is called.
This allows users to get the timer information when the timer is expected to be called and actual time that timer is called.
See ros2/rcl#1113 for more details.
Added special handling for timers with a clock that has time override enabled. For these timer we should not compute a timeout, as the waitset is woken up by the associated guard condition.
See ros2/rcl#1146 for more details.
Fixed data race conditions in executors.
See ros2/rclcpp#2500 for more details.
Improve the number of rcl_wait_set
creations and deletions by making the default Single/Multithreaded executors work like the static single threaded executor
in terms of entity collection rebuilding.
See ros2/rclcpp#2142 for more details.
Due to this change, callbacks in the executor are no longer ordered consistently, even within the same entity.
See ros2/rclcpp#2532 for more details.
The rclcpp::get_typesupport_handle
that extracts message type support handle is deprecated, and will be removed in a future release.
Instead, rclcpp::get_message_typesupport_handle
should be used.
See ros2/rclcpp#2209 for more details.
In Iron, the header rclcpp/qos_event.hpp
was deprecated in favor of rclcpp/event_handler.hpp
.
In Jazzy, the rclcpp/qos_event.hpp
header has been completely removed.
Back in Humble, subscription signatures of the form void callback(std::shared_ptr<MessageT>)
and void callback(std::shared_ptr<MessageT>, const rclcpp::MessageInfo &)
were deprecated.
In Jazzy, these subscription signatures have been removed.
Users should switch to using void callback(std::shared_ptr<const MessageT>)
or void callback(std::shared_ptr<const MessageT>, const rclcpp MessageInfo &)
.
rclcpp::TimerInfo
argument is added to the timer callback to collect actual and expected call time when the timer is called.
This allows users to get the timer information when the timer is expected to be called and actual time that timer is called.
See ros2/rclcpp#2343 for more details.
Added a function to stop callbacks of a goal handle after it has gone out of scope. This function allows us to drop the handle in a locked context.
See ros2/rclcpp#2281 for more details.
Add new node interface TypeDescriptionsInterface
to provide the GetTypeDescription
service.
See ros2/rclcpp#2224 for more details.
The rclpy.node.Node.declare_parameter
does not allow statically typing parameter without a default value.
See ros2/rclpy#1216 for more details.
Added type checking to improve the experience for anyone using static type checking.
See ros2/rclcpp#2224, ros2/rclpy#1240, ros2/rclpy#1237, ros2/rclpy#1231, ros2/rclpy#1241, and ros2/rclpy#1233.
The --exclude
CLI option was renamed to the --exclude-regex
to better reflect what it does.
See ros2/rosbag2#1480 for more information.
Enum values are now used for offered_qos_profiles
in the code, in human-readable string values for QoS settings in the metadata, and in the overriding QoS profile YAML files.
See https://github.com/ros2/rosbag2/tree/jazzy?tab=readme-ov-file#overriding-qos-profiles for an example.
See ros2/rosbag2#1609 for more details.
See ros2/rosbag2#1422 for more details.
See ros2/rosbag2#1557, ros2/rosbag2#1301 and ros2/rosbag2#1464 for more details.
See ros2/rosbag2#1538 for more details.
See ros2/rosbag2#1425 for more details.
This minimizes the probability of losing messages during bag split operation when recording with the SQLite3 storage plugin.
See ros2/rosbag2#1516 for more details.
There are some breaking changes in the rosbag2 API and Ubuntu Noble library versions that required some changes to rqt_bag
.
See ros-visualization/rqt_bag#156 for more details.
For progress on the development of Jazzy Jalisco, see this project board.
For the broad process followed by Jazzy Jalisco, see the :doc:`process description page <Release-Process>`.
To come.
- November, 2023 - Platform decisions
- REP 2000 is updated with the target platforms and major dependency versions.
- By January, 2024 - Rolling platform shift
- Build farm is updated with the new platform versions and dependency versions for Jazzy Jalisco.
- Mon. April 8, 2024 - Alpha + RMW freeze
- Preliminary testing and stabilization of ROS Base [1] packages, and API and feature freeze for RMW provider packages.
- Mon. April 15, 2024 - Freeze
- API and feature freeze for ROS Base [1] packages in Rolling Ridley. Only bug fix releases should be made after this point. New packages can be released independently.
- Mon. April 22, 2024 - Branch
- Branch from Rolling Ridley.
rosdistro
is reopened for Rolling PRs for ROS Base [1] packages. Jazzy development shifts fromros-rolling-*
packages toros-jazzy-*
packages.- Mon. April 29, 2024 - Beta
- Updated releases of ROS Desktop [2] packages available. Call for general testing.
- Wed, May 1, 2024 - Kick off of Tutorial Party
- Tutorials hosted at https://github.com/osrf/ros2_test_cases are open for community testing.
- Mon. May 13, 2024 - Release Candidate
- Release Candidate packages are built. Updated releases of ROS Desktop [2] packages available.
- Mon. May 20, 2024 - Distro Freeze
- Freeze all Jazzy branches on all ROS 2 desktop packages and
rosdistro
. No pull requests for anyjazzy
branch or targetingjazzy/distribution.yaml
inrosdistro
repo will be merged.- Thu. May 23, 2024 - General Availability
- Release announcement. ROS 2 desktop packages source freeze is lifted and
rosdistro
is reopened for Jazzy pull requests.
[1] | (1, 2, 3) The ros_base variant is described in REP 2001 (ros-base). |
[2] | (1, 2) The desktop variant is described in REP 2001 (desktop-variants). |