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_fastrtps_cpp

rmw_fastrtps_cpp

Apache-2.0C++

A ROS 2 middleware implementation that provides the interface between ROS 2 and the eProsima Fast DDS communication layer.

GitHubGitHub
197 stars142 forks0 contributors

What is rmw_fastrtps_cpp?

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.

Target Audience

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.

Value Proposition

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.

Overview

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

Use Cases

Best For

  • Building real-time robotic systems requiring reliable, low-latency data exchange between nodes.
  • Applications needing fine-grained Quality of Service (QoS) configuration for publishers, subscribers, services, and clients via ROS 2 QoS profiles and Fast DDS XML files.
  • High-performance intra-host communication where zero-copy data sharing can be enabled by combining ROS 2 loaned messages with Fast DDS's Data Sharing mechanism.
  • Large data transfer over lossy networks, as it supports configurable transport layers including TCP for reliable transmission.
  • Scenarios requiring flexible publication modes (synchronous, asynchronous, or automatic) to balance latency and throughput via environment variables.
  • Systems where different QoS configurations must be applied to individual entities (like specific topics or services) based on entity-specific profiles.

Not Ideal For

  • Projects needing plug-and-play middleware without XML or environment variable configuration
  • Memory-constrained embedded systems where Fast DDS's default memory policies might cause inefficiencies
  • Teams without DDS or ROS 2 internals expertise, due to reliance on Fast DDS-specific concepts
  • Scenarios prioritizing simplicity and lower resource usage over fine-grained performance tuning

Pros & Cons

Pros

Dual Implementation Flexibility

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.

Advanced QoS Configuration

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.

High-Performance Zero-Copy

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.

Flexible Transport Layers

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.

Cons

Complex Configuration Overhead

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.

Steep Learning 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 Performance Trade-offs

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.

Frequently Asked Questions

Quick Stats

Stars197
Forks142
Contributors0
Open Issues57
Last commit19 days ago
CreatedSince 2015

Tags

#robotics#ros2#dds#qos#communication#zero-copy#real-time#middleware#data-distribution

Built With

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_iceoryxrmw_iceoryx

rmw implementation for iceoryx

Stars189
Forks31
Last commit1 year 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