A ROS 2 middleware layer that enables the Eclipse Cyclone DDS implementation for fast, reliable, and robust ROS 2 communication.
rmw_cyclonedds is a ROS 2 RMW (ROS Middleware) layer that integrates Eclipse Cyclone DDS as the underlying Data Distribution Service (DDS) implementation. It provides a high-performance, easy-to-use, and reliable communication backbone for ROS 2 applications, aiming to deliver the fastest and most robust ROS 2 experience.
ROS 2 developers and system integrators working on performance-critical applications, particularly in fields like IoT and autonomous driving where reliable, high-speed data distribution is essential.
Developers choose rmw_cyclonedds for its focus on speed and reliability, leveraging the mature Eclipse Cyclone DDS implementation, along with simple configuration via environment variables and active maintenance across multiple ROS 2 distributions.
ROS 2 RMW layer for Eclipse Cyclone DDS
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Optimized for large data samples with specific tuning recommendations like increasing Linux buffer sizes, aiming to make ROS 2 applications run significantly faster.
Switching middleware is straightforward via an environment variable (RMW_IMPLEMENTATION=rmw_cyclonedds_cpp), requiring no complex build or setup steps.
Leverages Eclipse Cyclone DDS, a proven open-source implementation with strong adoption in IoT and autonomous driving, backed by the Eclipse Foundation.
Includes tools like ddsperf for performance testing and detailed tracing options via CYCLONEDDS_URI, aiding in troubleshooting communication issues.
Actively maintained across multiple ROS 2 distributions from Dashing to Foxy and beyond, ensuring compatibility with various project versions.
Performance tuning and debugging tools are heavily focused on Linux, with sysctl commands for buffer sizes, making it less optimal or harder to configure on other operating systems.
In networks without multicast, manual peer configuration is required using CYCLONEDDS_URI, which can complicate setup and maintenance for distributed systems.
Generating useful logs involves exporting verbose environment variables and using external tools like Wireshark, which can be cumbersome for quick issue resolution.