Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ros2-rust/ros2_rust
Rust bindings for ROS 2
https://github.com/ros2-rust/ros2_rust
robotics ros ros2 rust
Last synced: about 1 month ago
JSON representation
Rust bindings for ROS 2
- Host: GitHub
- URL: https://github.com/ros2-rust/ros2_rust
- Owner: ros2-rust
- License: apache-2.0
- Created: 2017-11-26T10:45:09.000Z (about 7 years ago)
- Default Branch: main
- Last Pushed: 2024-10-26T18:11:58.000Z (about 2 months ago)
- Last Synced: 2024-10-26T20:07:48.364Z (about 2 months ago)
- Topics: robotics, ros, ros2, rust
- Language: Rust
- Homepage:
- Size: 516 KB
- Stars: 948
- Watchers: 34
- Forks: 127
- Open Issues: 57
-
Metadata Files:
- Readme: README.md
- Contributing: docs/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-list - ros2_rust - rust/ros2_rust?style=social"/> : Rust bindings for ROS2. (Robot Operating System)
- awesome-rust-list - ros2_rust - rust/ros2_rust?style=social"/> : Rust bindings for ROS2. (Robot Operating System)
README
ROS 2 for Rust
==============| Target | Status |
|----------|--------|
| **Ubuntu 20.04** | [![Build Status](https://github.com/ros2-rust/ros2_rust/actions/workflows/rust.yml/badge.svg?branch=main)](https://github.com/ros2-rust/ros2_rust/actions/workflows/rust.yml?branch=main) |Introduction
------------This is a set of projects (the `rclrs` client library, code generator, examples and more) that
enables developers to write ROS 2 applications in Rust.Features and limitations
------------------------The current set of features include:
- Message generation
- Support for publishers and subscriptions
- Loaned messages (zero-copy)
- Tunable QoS settings
- Clients and servicesLots of things are still missing however, see the [issue list](https://github.com/ros2-rust/ros2_rust/issues) for an overview. You are very welcome to [contribute](docs/CONTRIBUTING.md)!
Since the client library is still rapidly evolving, there are no stability guarantees for the moment.
Sounds great, how can I try this out?
-------------------------------------Here are the steps for building the `ros2_rust` examples in a vanilla Ubuntu Focal installation. See the [in-depth guide for building `ros2_rust` packages](docs/building.md) for more details and options, including a Docker-based setup.
```shell
# Install Rust, e.g. as described in https://rustup.rs/
# Install ROS 2 as described in https://docs.ros.org/en/humble/Installation.html
# Assuming you installed the minimal version of ROS 2, you need these additional packages:
sudo apt install -y git libclang-dev python3-pip python3-vcstool # libclang-dev is required by bindgen
# Install these plugins for cargo and colcon:
cargo install --debug cargo-ament-build # --debug is faster to install
pip install git+https://github.com/colcon/colcon-cargo.git
pip install git+https://github.com/colcon/colcon-ros-cargo.gitmkdir -p workspace/src && cd workspace
git clone https://github.com/ros2-rust/ros2_rust.git src/ros2_rust
vcs import src < src/ros2_rust/ros2_rust_humble.repos
. /opt/ros/humble/setup.sh
colcon build
```Then, to run the minimal pub-sub example, do this:
```shell
# In a new terminal (or tmux window)
. ./install/setup.sh
ros2 run examples_rclrs_minimal_pub_sub minimal_publisher
# In a new terminal (or tmux window)
. ./install/setup.sh
ros2 run examples_rclrs_minimal_pub_sub minimal_subscriber
```
or```shell
# In a new terminal (or tmux window)
. ./install/setup.sh
ros2 launch examples_rclrs_minimal_pub_sub minimal_pub_sub.launch.xml
```Further documentation articles:
- [Tutorial on writing your first node with `rclrs`](docs/writing-your-first-rclrs-node.md)
- [Contributor's guide](docs/CONTRIBUTING.md)