node_name:
ros__parameters:
p1: ["a", "aa"]
The following also works:
/node_name:
/**:
**:
|
||
|---|---|---|
| common | ||
| examples | ||
| msg_gen | ||
| rcl | ||
| src | ||
| tests | ||
| .gitignore | ||
| Cargo.toml | ||
| README.md | ||
| build.rs | ||
README.md
R2R - Minimal ROS2 Rust bindings
Minimal bindings for ROS2 that do not require hooking in to the ROS2 build infrastructure. If you want a more ROS-oriented approach, see https://github.com/ros2-rust/ros2_rust. In these bindings, convenience Rust types are created by calling into the c introspection libraries to circumvent the .msg/.idl pipeline. The convenience types can be ignored when you need to trade convenience for performance, e.g. treating large chunks of data manually.
How to use
- Make sure you have libclang installed. (e.g. libclang-dev on ubuntu)
- Depend on this package: r2r = { git = "https://github.com/sequenceplanner/r2r" }.
- You need to source your ROS2 installation before building/running.
- The bindings will rebuild automatically if/when you source your workspace(s).
- If you make changes to existing message types, run cargo clean -p msg_gen to force recompilation of the rust message types on the next build.
A couple of examples are included in examples/
. /opt/ros/foxy/setup.sh
cargo build
cargo run --example subscriber_with_thread
An example application can be found here https://github.com/sequenceplanner/r2r-echo, which can be installed by running cargo install --git https://github.com/sequenceplanner/r2r-echo.
What works?
- Up to date with ROS2 ~Dashing~ ~Eloquent~ Foxy
- Building Rust types
- Publish/subscribe
- Services (servers, not clients yet)
- Parameters
TODO
- The code generation is currently just a big hack. Needs cleanup and refactoring.
- Expose more of the RCL like QoS settings and logging.
- Services and action types...