ROS 2 provides a wide range of functionalities for robotics development. Unless otherwise specified, features are available across all supported platforms (Ubuntu 24.04 (Noble), Windows 10), supported DDS implementations (eProsima Fast DDS, RTI Connext DDS, and Eclipse Cyclone DDS), and programming language client libraries (C++ and Python).
Core Communication & Middleware:
- DDS-based Discovery & Transport: Uses DDS for discovery, transport, and serialization.
- Multiple RMW Implementations: Supports choosing different Middleware (RMW) implementations at runtime (e.g., Eclipse Cyclone DDS, eProsima Fast DDS, RTI Connext DDS).
- Communication Patterns: Supports Publish/Subscribe (Topics), Clients/Services, and Actions.
- Quality of Service (QoS): Settings available to handle non-ideal network conditions.
- Namespacing & Remapping: Supports namespaces for nodes/topics and static remapping of ROS names.
Advanced Node & System Capabilities:
- Lifecycle Management: Support for managed nodes (C++ only).
- Node Composition: Ability to compose nodes at compile, link, load, or run time (C++ only).
- Intra-process Communication: High-performance communication within the same process (C++ only).
- Launch System: A dedicated system for coordinating multiple nodes.
- Security: DDS-Security support via
sros2.
Specialized Support:
- Real-time: Preliminary support for real-time code (Linux only; not available for Fast RTPS).
- Microcontrollers: Preliminary support for "bare-metal" microcontrollers.
- Pluggable Buffer Backends: Experimental support for
uint8[] fields (e.g., GPU memory transport), currently supported in rmw_fastrtps_cpp and available via C++ APIs.