Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
rmw-zerodds-shim — ROS 2 RMW Implementation
Liefert librmw_zerodds.{so,dylib,dll} so dass rclcpp/rclpy ueber
RMW_IMPLEMENTATION=rmw_zerodds_cpp ZeroDDS als RMW-Backend nutzen
kann.
Architektur
rclcpp / rclpy / rclrs
│ rmw API (REP-2007)
▼
librmw_zerodds.{so,dylib,dll} ◀── diese Crate
│ ZeroDDS C-API (zerodds.h)
▼
libzerodds.{so,dylib,dll} (crates/zerodds-c-api)
│ RTPS over UDP/TCP/SHM/UDS
▼
Wire
REP-2007-Mapping (Topic-Mangling, QoS-Profile, Identifier-Constraints)
kommt aus crates/ros2-rmw. Wire-Pfad ist die ZeroDDS-DCPS-Runtime
ueber zerodds-c-api. Discovery laeuft via SPDP/SEDP automatisch.
Phase-A vs Phase-B
Phase-A (jetzt): Pub-Sub-Pipeline + Initialisierung. Stubs fuer
Services, Wait-Sets, Loaning — diese returnen RMW_RET_UNSUPPORTED
und blockieren rclcpp's Plugin-Loader nicht.
Phase-B (folgt): Service-Layer (auf RPC-Crate), Wait-Sets, Guard-Conditions, Loan-Borrowing, Type-Hash (REP-2009).
Build
Standalone (ohne ROS)
In einem ROS-2-Workspace
# 1) Rust-Build im ZeroDDS-Repo
# 2) ament_cmake-Wrapper im ROS-2-Workspace
ZERODDS_HOME=/zerodds \
Verwendung
RMW_IMPLEMENTATION=rmw_zerodds_cpp \
# In einem zweiten Terminal:
RMW_IMPLEMENTATION=rmw_zerodds_cpp \
Distro-Targets
- ROS 2 Humble — ament_cmake 1.5.x (Ubuntu 22.04 LTS)
- ROS 2 Iron — ament_cmake 2.x (Ubuntu 22.04 LTS)
- ROS 2 Jazzy — ament_cmake 2.x (Ubuntu 24.04 LTS)
CI-Job ci/jobs/rmw-distro-build.yml baut alle drei Distros in
separaten Docker-Layern.
Symbole
Die Library exportiert rmw_zerodds_*-Praefixierte Funktionen.
rclcpp ruft sie via Plugin-Discovery durch. Phase-B addet die
unpraefixierten rmw_*-Aliase fuer rmw-side-by-side-Kompatibilitaet.
| Phase-A implementiert | Phase-A stub (UNSUPPORTED) |
|---|---|
..._get_implementation_identifier |
..._create_client |
..._get_serialization_format |
..._create_service |
..._init / _shutdown |
..._wait |
..._create_node / _destroy_node |
..._borrow_loaned_message |
..._create_publisher / _publish |
|
..._create_subscription / _take |
|
..._buffer_free |
Tests
Phase-A: 6 Unit-Tests (Codes, Identifier, Serialization-Format, NULL-Tolerance, Stubs).
Status
- ✅ Crate skeleton, cdylib + staticlib + rlib
- ✅ cbindgen-generierte
rmw_zerodds.h(Phase-A-API) - ✅ ament_cmake-Wrapper-Files (
ament/CMakeLists.txt+package.xml) - ✅ Pub-Sub-Pipeline live (gegen
zerodds-c-api-Runtime) - 🔲 ros2-Live-Smoke (Humble, Iron, Jazzy) — Phase-A zweite Etappe
- 🔲 Service-Layer + Wait-Sets — Phase-B
- 🔲 Type-Hash REP-2009 — Phase-B