Skip to content

Open-source Autonomy Software in Rust-lang using gRPC for the Roomba series robot vacuum cleaners. Under development.

License

Notifications You must be signed in to change notification settings

Sollimann/CleanIt

Repository files navigation

CleanIt

Build Status codecov minimum rustc 1.45 version Maintenance GitHub pull-requests GitHub pull-requests closed ViewCount License: MIT

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