No version for distro humble. Known supported distros are highlighted in the buttons above.
No version for distro jazzy. Known supported distros are highlighted in the buttons above.
No version for distro kilted. Known supported distros are highlighted in the buttons above.
No version for distro rolling. Known supported distros are highlighted in the buttons above.
Repository Summary
| Description | ROS 2 RMW implementation for iceoryx2 |
| Checkout URI | https://github.com/ekxide/rmw_iceoryx2.git |
| VCS Type | git |
| VCS Version | main |
| Last Updated | 2025-03-28 |
| Dev Status | UNKNOWN |
| Released | UNRELEASED |
| Tags | No category tags. |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Packages
| Name | Version |
|---|---|
| rmw_iceoryx2_cxx | 0.1.0 |
| rmw_iceoryx2_cxx_demo_nodes | 0.1.0 |
| rmw_iceoryx2_cxx_test_msgs | 0.1.0 |
README
rmw_iceoryx2
Introduction
[!IMPORTANT] The implementation is still in an “alpha” stage. Not all functionality is implemented/stable so surprises are to be expected.
If encountering problems, please create an issue so we can converge to stability :).
ROS 2 rmw implementation for iceoryx2.
iceoryx2 is a shared memory IPC middleware written in Rust for improved memory
safety and easier safety certifiability. The implementation leverages the C++
bindings to the Rust core.
Feature Completeness
| Feature | Status |
|---|---|
| Node | :white_check_mark: |
| Guard Condition | :white_check_mark: |
| Event | :construction: |
| Publish-Subscribe | :white_check_mark: |
| Server-Client | :construction: |
| Message Serialization | :white_check_mark: |
| Waitset | :white_check_mark: |
| Graph | :construction: |
| QoS | :construction: |
| Logging | :white_check_mark: |
Performance
[!NOTE]
- The latency measurement can be reproduced with these instructions
- The measurements were taken on a Ryzen 3950X without a fine-tuned OS - lower latency could be expected on a fine-tuned target
- The
performance_testtool usesrmw_iceoryx2through the ROS 2 stack, which naturally introduces some overhead compared to pureiceoryx2- The minimal possible latency achievable with
iceoryx2is in the nanosecond range

Setup
-
Set up your environment for building ROS 2 from source
-
Create a ROS 2 workspace:
mkdir -p ~/workspace/src
- Clone the ROS 2 source:
vcs import --input https://raw.githubusercontent.com/ros2/ros2/rolling/ros2.repos ~/workspace/src
- Clone
iceoryxandiceoryx2source:
vcs import --force --input https://raw.githubusercontent.com/ekxide/rmw_iceoryx2/refs/heads/main/iceoryx.repos ~/workspace/src
- Clone
rmw_iceoryx2:- Either
mainor a specific version tag e.g.v0.1.0
- Either
git clone -b main https://github.com/ekxide/rmw_iceoryx2.git ~/workspace/src/rmw_iceoryx2/
- Build ROS 2 with
rmw_iceoryx2and the demo nodes:
cd ~/workspace/
RMW_IMPLEMENTATION=rmw_iceoryx2_cxx colcon build --symlink-install --packages-up-to ros2cli_common_extensions rmw_iceoryx2_cxx rmw_iceoryx2_cxx_demo_nodes
- Verify the build:
source ~/workspace/install/setup.zsh # or setup.bash
ros2 doctor --report
The middleware should be properly set:
``` RMW MIDDLEWARE middleware name : rmw_iceoryx2_cxx
File truncated at 100 lines see the full file
CONTRIBUTING
No version for distro galactic. Known supported distros are highlighted in the buttons above.
No version for distro iron. Known supported distros are highlighted in the buttons above.
No version for distro melodic. Known supported distros are highlighted in the buttons above.
No version for distro noetic. Known supported distros are highlighted in the buttons above.