https://github.com/openrr/openrr
Open Rust Robotics
https://github.com/openrr/openrr
robotics robotics-programming rust rust-lang
Last synced: 5 months ago
JSON representation
Open Rust Robotics
- Host: GitHub
- URL: https://github.com/openrr/openrr
- Owner: openrr
- License: apache-2.0
- Created: 2020-12-17T03:31:44.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2025-03-26T11:37:41.000Z (6 months ago)
- Last Synced: 2025-04-03T22:39:59.710Z (6 months ago)
- Topics: robotics, robotics-programming, rust, rust-lang
- Language: Rust
- Homepage:
- Size: 112 MB
- Stars: 542
- Watchers: 11
- Forks: 30
- Open Issues: 32
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-list - openrr
- awesome-rust-list - openrr
README
# openrr: `Open Rust Robotics`
[](https://github.com/openrr/openrr/actions) [](https://crates.io/crates/openrr) [](https://codecov.io/gh/openrr/openrr) [](https://docs.rs/openrr)
**For developers and future users**
[](https://openrr.github.io/openrr/openrr) [](https://discord.gg/8DAFFKc88B) [](https://github.com/openrr/openrr-tutorial)
OpenRR (pronounced like "opener") is Open Rust Robotics platform.
**It's heavily under development.**
## Supported Platforms
|OS|Core|GUI|ROS|ROS2|
|--|----|---|---|---|
|Linux (Ubuntu)|✔|✔|✔|✔|
|macOS |✔|✔|✔| |
|Windows |✔|✔| | |* You can use ROS *without ROS installation* on Linux/macOS.
* ROS2 Support is experimental. See [arci-ros2](https://github.com/openrr/openrr/tree/main/arci-ros2) for details.## Dependencies
### Linux
```bash
sudo apt install cmake build-essential libudev-dev xorg-dev libglu1-mesa-dev libasound2-dev libxkbcommon-dev protobuf-compiler
```* cmake build-essential (openrr-planner (assimp-sys))
* libudev-dev (arci-gamepad-gilrs)
* xorg-dev libglu1-mesa-dev libxkbcommon-dev (openrr-gui (egui))
* libasound2-dev (arci-speak-audio)
* protobuf-compiler (openrr-remote)## Architecture

`arci` is a hardware abstraction layer for openrr.
Currently [ROS1](https://ros.org) and [urdf-viz](https://github.com/openrr/urdf-viz) (as a static simulator (actually it's just a viewer)) are implemented.You can write platform/hardware independent code if you use `arci` traits.
## What is OpenRR?
OpenRR contains..
* abstract robot interfaces (`arci`)
* concrete implementation of the interfaces (`arci-ros`, `arci-urdf-viz`, ...)
* library which uses the interfaces (`openrr-client`, ...)
* tools (`openrr-apps`)
* pure libraries nothing to do with `arci` (`openrr-planner`, ...)## Tools
Currently we have some tools to control real/sim robots.
See [openrr-apps](https://github.com/openrr/openrr/tree/main/openrr-apps) for details.
### joint_trajectory_sender
Inspired by [joint_state_publisher_gui](http://wiki.ros.org/joint_state_publisher)
You can use this GUI not only for ROS but anything if you implement `arci::JointTrajectoryClient` and write a small binary main function.
### robot_command
General CLI to access `arci` robot clients. It supports not only sending joint trajectory directly but it supports inverse kinematics with self-collision check, and navigation.
## Format
To format use nightly rustfmt,
```bash
cargo +nightly fmt
```## License
Licensed under the [Apache License, Version 2.0](https://github.com/openrr/openrr/blob/main/LICENSE).
## Related openrr repositories
* [k](https://github.com/OpenRR/k) : kinematics library
* [ros-nalgebra](https://github.com/OpenRR/ros-nalgebra) : rosrust nalgebra converter generator
* [rrt](https://github.com/OpenRR/rrt) : RRT-dual-connect path planner
* [trajectory](https://github.com/OpenRR/trajectory) : trajectory interpolator
* [urdf-rs](https://github.com/OpenRR/urdf-rs) : URDF parser
* [urdf-viz](https://github.com/OpenRR/urdf-viz): URDF visualizer
* ~~[gear](https://github.com/OpenRR/gear)~~ : (deprecated) motion planning library, but it is openrr-planner now.## Why OpenRR?
We strongly believe that Rust is the future of robotics.
OpenRR is the world first robotics platform which is made by Rust, made for Rust.
It can be a reference, a base for the future robotic people, like us.## Contribution
We appreciate for your any contributions!
[Create an issue](https://github.com/openrr/openrr/issues/new) at first is a discord server.
## Using OpenRR
You can read the tutorial books at the following links.
* [English](https://openrr.github.io/openrr-tutorial/en/html)
* [Japanese](https://openrr.github.io/openrr-tutorial/ja/html)