Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. Robot Operating System 2.0
  3. rmw_iceoryx

rmw_iceoryx

Apache-2.0C++v2.0.3-iron

A ROS 2 middleware implementation using iceoryx for zero-copy inter-process communication via shared memory.

GitHubGitHub
189 stars31 forks0 contributors

What is rmw_iceoryx?

rmw_iceoryx is a ROS 2 middleware (RMW) implementation that integrates the iceoryx shared memory framework to enable high-performance, zero-copy data transport between ROS 2 nodes. It solves the problem of latency and CPU overhead in ROS 2 applications by eliminating data copying through efficient shared memory communication.

Target Audience

ROS 2 developers working on real-time, resource-constrained, or high-performance applications such as robotics, autonomous systems, or embedded platforms where low latency and minimal CPU usage are critical.

Value Proposition

Developers choose rmw_iceoryx over other ROS 2 middleware for its zero-copy transport capability, which significantly reduces latency and CPU overhead by leveraging shared memory, especially for fixed-size messages. Its seamless integration with existing ROS 2 workspaces without rebuilding messages provides a performance boost with minimal setup.

Overview

rmw implementation for iceoryx

Use Cases

Best For

  • Real-time robotics applications requiring low-latency data exchange between nodes.
  • High-performance autonomous vehicle systems where minimizing CPU overhead is essential.
  • Resource-constrained embedded platforms that benefit from efficient shared memory communication.
  • ROS 2 projects using fixed-size or Plain Old Data (POD) message types for optimized zero-copy transport.
  • Applications needing to transport large data payloads like images or sensor data without copying overhead.
  • Developers seeking to leverage iceoryx's shared memory framework within a ROS 2 ecosystem for improved performance.

Not Ideal For

  • Projects heavily relying on dynamic message types like strings or variable-length arrays
  • Teams requiring full ROS 2 parameter server support or built-in bag recording capabilities
  • Cross-platform ROS 2 applications targeting operating systems without robust shared memory support
  • Environments where running and managing a separate daemon process is impractical or undesirable

Pros & Cons

Pros

Zero-Copy Performance

Enables direct data sharing via shared memory for fixed-size messages, drastically reducing latency and CPU overhead by eliminating serialization and copying, as demonstrated in the loaned message workflow.

Seamless ROS 2 Integration

Built on rosidl_typesupport_introspection, allowing integration without rebuilding ROS 2 messages, and supports standard CLI tools like ros2 topic and node commands from Eloquent onwards.

Efficient Memory Management

Leverages iceoryx's RouDi daemon to allocate and manage shared memory segments, optimizing inter-process communication for fixed-size Plain Old Data (POD) types.

Compatibility with ROS 2 Demos

Works out-of-the-box with existing ROS 2 demo nodes and tools such as rqt_graph and rviz2, facilitating easy adoption and testing in familiar workflows.

Cons

Dynamic Message Incompatibility

Struggles with variable-sized data types like strings or arrays, as zero-copy requires fixed memory allocation, forcing fallback to copy-based transport and negating performance benefits.

Incomplete Feature Support

Missing key ROS 2 features such as parameter servers (ros2 param list) and bag recording, as admitted in the limitations table, limiting its use in full-fledged applications.

Daemon Dependency Complexity

Requires running the RouDi daemon to manage shared memory, adding operational overhead and a potential single point of failure compared to simpler RMW implementations.

Immature Development State

Under heavy development with features marked as incomplete or questionable (e.g., ros2 bag, tf2), which may lead to instability or breaking changes in production environments.

Frequently Asked Questions

Quick Stats

Stars189
Forks31
Contributors0
Open Issues16
Last commit1 year ago
CreatedSince 2019

Tags

#robotics#iceoryx#ros2#c-plus-plus#shared-memory#inter-process-communication#zero-copy#real-time#middleware

Built With

c
colcon
C
CMake
C
C++

Included in

Robot Operating System 2.02.1k
Auto-fetched 1 day ago

Related Projects

rmw_zenohrmw_zenoh

RMW for ROS 2 using Zenoh as the middleware

Stars472
Forks94
Last commit5 days ago
rmw_fastrtps_cpprmw_fastrtps_cpp

Implementation of the ROS Middleware (rmw) Interface using eProsima's Fast RTPS.

Stars197
Forks142
Last commit19 days ago
rmw_cycloneddsrmw_cyclonedds

ROS 2 RMW layer for Eclipse Cyclone DDS

Stars171
Forks118
Last commit25 days ago
rmwrmw

The ROS Middleware (rmw) Interface.

Stars116
Forks82
Last commit17 days ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub