CleanIt
Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners
Motivation
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.
Contributions are welcome!
Would you like to contribute with work and/or ideas, feel free to check out the Project Backlog
Run the Roomba client and API
Run the server
$ cargo run --bin streaming-server
Run the client
$ cargo run --bin roomba-client
Structure
Project Layout
βββ 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
Crate/package Layout
βββ 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
Pre-requisites
Software
Linux
$ [sudo] apt-get install libudev-dev pkg-config
User 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 $USER
Logout and login again for this to take effect.
MacOs
$ brew install *TODO*
Hardware
- 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