Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners
Motivation is to build a complete DIY autonomy software from scratch (motion planning, guidance and motion control, SLAM, mission control, 2D/3D visualization etc..) with a real-time client-server communication stream using async gRPC for intercommunication and distributed compute.
The SLAM part is work-in-progress here: https://github.com/Sollimann/Occupancy-Grid-FastSLAM/tree/main
Would you like to contribute with work and/or ideas, feel free to check out the Project Backlog
$ cargo run --bin streaming-server
$ cargo run --bin roomba-client
βββ Cargo.toml (workspace)
βββ Cargo.lock
βββ api (lib/bin)
| βββ client
| βββ server
βββ autonomy (bin)
| βββ mission
| βββ motion
| βββ slam
| βββ perception
| βββ risk
βββ drivers (lib)
| βββ roomba
| βββ realsense
| βββ rplidar
| βββ raspberryPi
βββ proto (lib)
| βββ roomba_service.proto
| βββ messages.proto
| βββ types.proto
| βββ robot_state.proto
| βββ map2D.proto
βββ setup (bin)
| βββ config
| βββ main
βββ visualization (bin)
| βββ urdf
| βββ map
| βββ cameraβββ Cargo.toml
βββ Cargo.lock
βββ src
β βββ main.rs
β βββ lib.rs
β βββ bin
β βββ another_executable.rs
βββ tests
β βββ some_integration_tests.rs
βββ benches
β βββ simple_bench.rs
βββ examples
βββ simple_example.rs$ [sudo] apt-get install libudev-dev pkg-configUser serial permission is required to connect to Create over serial. You can add your user to the dialout group to get permission:
$ [sudo] usermod -a -G dialout $USERLogout and login again for this to take effect.
$ brew install *TODO*- iRobot Create 2 (or iRobot Roomba 6xx series with serial USB cable - https://store.irobot.com/en_US/parts-and-accessories/create-accessories/communication-cable-for-create-2/4466502.html )
- Raspberry Pi 4 (4GB)
- Intel RealSense D435 or D435i depth camera
