A ROS 2 middleware implementation that provides the interface between ROS 2 and the eProsima Fast DDS communication layer.
rmw_fastrtps is the default middleware implementation for ROS 2, acting as a bridge that allows ROS 2 applications to communicate using the eProsima Fast DDS (formerly Fast RTPS) protocol. It provides reliable, real-time data exchange for robotic systems by translating ROS 2 APIs into Fast DDS operations. The project includes two variants: rmw_fastrtps_cpp for compile-time type support and rmw_fastrtps_dynamic_cpp for run-time introspection.
ROS 2 developers and roboticists building real-time robotic systems who need configurable, high-performance middleware for inter-process communication. It is particularly suited for those requiring fine-grained control over Quality of Service (QoS) and transport layers.
Developers choose rmw_fastrtps because it is the default and most integrated middleware for ROS 2, offering extensive configurability, high performance through features like zero-copy data sharing, and compatibility with standard ROS 2 APIs. Its dual implementation and support for advanced QoS tuning via XML files provide flexibility not always available in alternative RMW implementations.
Implementation of the ROS Middleware (rmw) Interface using eProsima's Fast RTPS.
Offers both rmw_fastrtps_cpp for compile-time type support and rmw_fastrtps_dynamic_cpp for run-time introspection, catering to different development needs as detailed in the README.
Enables fine-grained control through ROS 2 QoS profiles and Fast DDS XML files, allowing entity-specific profiles for individual topics, services, and clients, as explained in the 'Full QoS configuration' section.
Combines ROS 2 loaned messages with Fast DDS Data Sharing mechanism to enable zero-copy intra-host communication, boosting performance for real-time systems, with setup steps outlined in the README.
Supports configurable transports like UDPv4 and TCP via environment variables, enabling reliable large data transfer over lossy networks, as described in the 'Large data transfer over lossy network' section.
Requires managing multiple environment variables (e.g., RMW_FASTRTPS_USE_QOS_FROM_XML, FASTDDS_BUILTIN_TRANSPORTS) and XML files for advanced features, leading to a steep setup and debugging curve.
Assumes familiarity with DDS concepts and Fast DDS specifics, making it less accessible for developers new to middleware, with configuration rules that are intricate and error-prone.
Default settings like synchronous publication mode may not suit all use cases, requiring manual tuning via environment variables or XML, which isn't always intuitive or documented for beginners.
RMW for ROS 2 using Zenoh as the middleware
rmw implementation for iceoryx
ROS 2 RMW layer for Eclipse Cyclone DDS
The ROS Middleware (rmw) Interface.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.