finds.dev← search

// the find

RosLibRust/roslibrust

★ 127 · Rust · MIT · updated Jun 2026

An async first rust client for ROS supporting multiple backends: ROS1, rosbridge, and Zenoh.

A Rust async library for talking to ROS1 and ROS2 without needing a ROS installation. It abstracts over four backends — native ROS1 TCPROS, rosbridge WebSocket, Zenoh, and a mock — behind a single trait, so code written against TopicProvider works unchanged across all of them. The target is robotics developers who want Rust's memory safety and async performance without writing C++ ROS nodes.

The trait-based backend abstraction is the genuinely useful part: you write your subscriber/publisher logic once and swap backends at compile time, which means the same code can run on a real robot or in a unit test with MockRos. Compile-time message generation from .msg/.srv files is a real win — no runtime registration, no stringly-typed message passing, type errors catch at build time. The MCAP integration (roslibrust_mcap) for reading and writing bag files is well-scoped and has benchmarks, which is more than most robotics Rust projects bother with. CI coverage across ROS Noetic, Humble, Iron, Kilted, and Rolling in devcontainers is thorough; this is hard infrastructure to maintain and they're doing it.

ROS2 support is explicitly experimental and not on crates.io — the README readme inline comments it out with a note saying 'not yet released'. That is the backend most people starting a new project want, and it is the one you cannot actually use yet. The crate family is fragmented across many sub-crates (roslibrust_ros1, roslibrust_ros2, roslibrust_zenoh, roslibrust_rosbridge, roslibrust_transforms, roslibrust_mcap) each with its own Cargo.toml and README, which makes understanding what to actually depend on confusing. Actions (ROS's goal-based async interface) are not mentioned anywhere in the docs or examples — that is a significant gap for any non-trivial robot project. At 127 stars, the community is small enough that if you hit a bug in an edge case you will likely be fixing it yourself.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →