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