ROS 2 RMW Selection Decision¶
Review date: 2026-04-08.
Decision¶
For the first ROS 2 beta path, validate and ship exactly one middleware
implementation: rmw_cyclonedds_cpp (CycloneDDS).
Do not widen the supported RMW matrix yet.
Treat any second implementation, such as rmw_fastrtps_cpp, as deferred work
until the Humble/Jazzy beta path is stable under one RMW first.
Treat ROS 2 Kilted the same way for now: experimental/manual-only until the
current Humble/Jazzy coverage stays green.
Why CycloneDDS First¶
- The current ROS 2 scope is still deliberately narrow: one Python node, one launch file, one rosbag replay fixture, and first-party docs for Humble and Jazzy. One RMW keeps that support envelope testable.
- CycloneDDS is packaged on both supported distros and is straightforward to
install in the companion containers and GitLab
colconjobs. - The RR IK beta path benefits more from a predictable, explicitly-selected middleware stack than from claiming an early multi-RMW support matrix that the current CI and launch coverage do not yet exercise.
Where The Selection Applies¶
integrations/ros2/src/zeroproofml_ros/package.xmldeclaresrmw_cyclonedds_cppas a runtime dependency sorosdepcan pull it in.integrations/ros2/src/zeroproofml_ros/launch/rr_ik_strict_inference.launch.pydefaultsRMW_IMPLEMENTATIONtormw_cyclonedds_cpp.- The Humble/Jammy and Jazzy/Noble container recipes install
ros-${ROS_DISTRO}-rmw-cyclonedds-cppand exportRMW_IMPLEMENTATION=rmw_cyclonedds_cpp. - The GitLab ROS 2
colconjobs run with the sameRMW_IMPLEMENTATION=rmw_cyclonedds_cppenvironment.
Deferred Second RMW¶
Revisit a second implementation only after the current beta path has basic stability:
- launch/demo docs are unchanged for at least one release cycle,
- rosbag replay and
colcon testcoverage stay green on Humble and Jazzy, and - there is a concrete need to validate a second stack rather than just relying on whatever the distro default happens to be.
At that point, add the second implementation as an explicit widening of the test matrix instead of silently assuming it is supported.