// the find
Atostek/ros2-client
ROS2 client library based on RustDDS
A pure-Rust ROS2 client library that talks DDS directly through RustDDS, no C bindings required. Covers the full ROS2 feature set — topics, services, actions, parameters, discovery — with an async-first API. Aimed at robotics developers who want memory safety without the FFI tax of linking rcl.
No dependency on rcl or any C DDS library means you can cross-compile and embed without a full ROS2 installation on the target. The async design is a genuine improvement over callback-soup: you keep control flow in your own task rather than handing it to a spin loop. Distribution compatibility is handled cleanly via Cargo features rather than runtime detection. The interop test results are checked in and the CI covers both Ubuntu and macOS, which is unusual for robotics Rust crates.
Message generation from .msg files is still experimental, so you're hand-writing Serde structs for any custom message type — tedious and error-prone at scale. At 124 stars it's a small community, which matters for ROS2 where the ecosystem (rviz, Nav2, MoveIt) assumes rclcpp/rclpy and you'll hit gaps quickly. ROS2 Security is also experimental, which is a problem for anyone deploying on a real robot in a shared network. The README links to Galactic docs even though Jazzy is now the default target — minor but signals the docs haven't kept pace.