https://github.com/rclrust/rclrust
Yet another ROS2 Rust client
https://github.com/rclrust/rclrust
robotics ros2 rust
Last synced: 6 months ago
JSON representation
Yet another ROS2 Rust client
- Host: GitHub
- URL: https://github.com/rclrust/rclrust
- Owner: rclrust
- License: apache-2.0
- Archived: true
- Created: 2021-07-24T01:26:34.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2023-07-03T06:12:54.000Z (about 2 years ago)
- Last Synced: 2024-12-20T10:20:52.057Z (7 months ago)
- Topics: robotics, ros2, rust
- Language: Rust
- Homepage:
- Size: 9.48 MB
- Stars: 54
- Watchers: 2
- Forks: 7
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-list - rclrust
- awesome-rust-list - rclrust
README
# rclrust
[](https://github.com/rclrust/rclrust/actions/workflows/test.yaml)
[](https://github.com/rclrust/rclrust/actions/workflows/doc.yaml)
[](https://crates.io/crates/rclrust)
[](https://codecov.io/gh/rclrust/rclrust)
[](https://deps.rs/repo/github/rclrust/rclrust)
[](https://blog.rust-lang.org/2021/06/17/Rust-1.53.0.html)
[](https://github.com/rclrust/rclrust/blob/main/LICENSE)This is yet another ROS2 client library written in Rust.
I have implemented it independent of the ament or colcon.
By using proc-macro to generate message-type and service-type code, crate dependency resolution can now be completed in `cargo`. This was inspired by [rosrust](https://github.com/adnanademovic/rosrust)## Supporting Environments
- Rust: 1.56+
- ROS2:
- Foxy ([doc](https://rclrust.github.io/rclrust/foxy/main/rclrust/index.html))
- Galctic ([doc](https://rclrust.github.io/rclrust/galactic/main/rclrust/index.html))
- Rolling ([doc](https://rclrust.github.io/rclrust/rolling/main/rclrust/index.html))
- OS:
- Ubuntu
- DDS:
- Fast DDS (Default for Foxy)
- Cyclone DDS (Default for Galactic+)## Supporting features
- Code generation from `.msg`, `.srv`, `.action`
- Loggers
- Publishers/Subscriptions
- Services/Clients
- Timers
- Parameters (without services)## TODO
- Parameter services/clients
- Actions
- Lifecycles
- More
- Unit test
- Documentation
- Examples (especially with ament)
- etc...## Distribution
RclRust is supporting multiple distributions by using [cargo features](https://doc.rust-lang.org/cargo/reference/features.html).
If you use a fixed distribution, set `features` in `Cargo.toml` as follows.```toml
rclrust = { git = "https://github.com/rclrust/rclrust.git", features = ["foxy"] }
```Otherwise, do not set `features` in `Cargo.toml` and pass target features like `--featuers rclrust/${ROS_DISTRO}` on build.
```toml
rclrust = { git = "https://github.com/rclrust/rclrust.git" }
```## Examples
### Prepare
```sh-session
$ git clone [email protected]:rclrust/rclrust.git
$ cd rclrust
$ cargo build
```### Pub/Sub
Publisher:
```sh-session
$ cargo run --features --examples publisher
```Subscription
```sh-session
$ cargo run --features --examples subscription
```
Other examples are [here](https://github.com/rclrust/rclrust/tree/main/rclrust/examples), and examples with colcon are [here](https://github.com/rclrust/rclrust-examples).
## Notice
The icon of RclRust was created by combinating and modifing the following materials.
- [ros.svg](https://github.com/ros-infrastructure/artwork/blob/master/orgunits/ros.svg) © ROS (Licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/))
- [Gear-icon.png](https://commons.wikimedia.org/wiki/File:Gear-icon.png) (Licensed under [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/deed.en))## The other ROS2 clients written in Rust
- [ros2_rust](https://github.com/ros2-rust/ros2_rust)
- [r2r](https://github.com/sequenceplanner/r2r)