// the find
eclipse-zenoh/zenoh-plugin-ros2dds
A Zenoh plug-in for ROS2 with a DDS RMW. See https://discourse.ros.org/t/ros-2-alternative-middleware-report/ for the advantages of using this plugin over other DDS RMW implementations.
A Rust plugin that bridges ROS 2's DDS communications over Zenoh, letting you run standard ROS 2 nodes on a robot while the bridge handles all inter-host transport. Aimed at robotics engineers hitting the usual DDS pain points: wifi unreliability, bandwidth, and multi-robot namespace chaos. Ships as both a loadable plugin and a standalone binary, so you can drop it in without touching your existing ROS setup.
The namespace configuration is genuinely useful — setting it per-bridge rather than per-node means you don't have to touch every node on a fleet of robots to avoid topic collisions. The admin space over Zenoh queryables gives you real-time introspection of discovered nodes, routes, and DDS entities without a separate monitoring stack. Symbol prefixing via a cargo feature is a thoughtful solution to the DLL hell problem when loading multiple DDS plugins alongside each other. The integration test suite covers all four route directions (ROS→Zenoh and Zenoh→ROS for both services and actions), which is the hard part of getting ROS middleware semantics right.
The SIGSEGV risk from Rust ABI mismatches between plugin and router is a real operational hazard — the warning is there but there's no tooling to catch version drift before it crashes in production. CycloneDDS-only testing is a meaningful limitation; if your robot runs FastDDS (which ships with many ROS 2 distros by default), you're on your own and the bridge explicitly disclaims support for non-standard features like shared memory transport. The `prefix_symbols` and `dds_shm` features are mutually exclusive with no clear path to using both, which will bite anyone running on resource-constrained hardware where shared memory matters. Cross-compilation setup requiring Zig as a linker adds a non-obvious dependency that isn't part of any standard ROS or Rust workflow.