Rusty Robot is a modular, scalable, and real-time robotic control system built using Rust. The project leverages modern Rust features, including asynchronous programming and a layered architecture, to control a variety of hardware components over wireless networks.
Note
This project is still in the relatively early stages of development, and as such there should be no expectation of API stability.
- Special thanks to Mark S. the one and only WonderSmith
- Thank you to the hardworking teams of Rust Embedded, Embassy-Rs, ESP-Rs, and PicoServe for making it possible to develop this platform
- Thank you to the Rust community for their invaluable resources and support
- Inspired by ROS, YARP and Orca to make a robotics platform for embedded devices that require low resources
Currently, the project in very early development meaning that you will be able to build each library separately, however at the time of writing this you can pass the variables from the boards to the application yet.
We use xtask
to build and run the project in a modular way so every aspect of it gets configured correctly. At the time of writing this only esp32
has been worked on and only for Xtensa
If you are running Rust Rover, you will need to create a rust-toolchain.toml
and change the channel to esp
. This has not been tested on any other ide, however xtask
denotes the toolchain at time of build.
Build:
cargo xtask build-package esp32 --target xtensa-esp32-none-elf
Run:
cargo xtask run esp32 --bin rr-app
+--------------------------------------------------------+
| API |
+--------------------------------------------------------+
+--------------------------------------------------------+ +-------+
| Application | | |
+--------------------------------------------------------+ | |
+--------------------------------------------------------+ | |
| Communications | | |
+----------------+------------------+--------------------+ | |
|Network Services| Message Manager |Data Synchronization| | |
+----------------+------------------+--------------------+ | |
+--------------------------------------------------------+ |Tracing|
| Hardware Layer | | |
| +-----------------+ | | |
| | Middleware | | | |
| +-----------------+ | | |
+--------------------------------------------------------+ | |
| Configurations & Initializations | | |
+---------+ +--------+ +-------+ +---------------+ | |
| ESP32 | | RP2040 | | Local | | Future Boards | | |
+---------+-----+--------+---+-------+---+---------------+ +-------+
+--------------------------------------------------------+
| GPIOs, Sensors, Actuators |
+--------------------------------------------------------+
- Application Layer (integrating hardware and communications)
- Create first integrated application example
- Communications Layer
- Network Services
- Message Management
- Data synchronization
- Hardware Layer (supporting ESP32, RP2040, and local testing)
- ESP32 (Xtensa only)
- RP2040
- Local Testing (Ubuntu Only)
Licensed under either of:
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.