Sollimann / CleanIt

Open-source Autonomy Software in Rust-lang using gRPC for the Roomba series robot vacuum cleaners. Under development.
MIT License
270 stars 15 forks source link
autonomous-robots autonomy grpc irobot missionplanner motion-control motion-planning obstacle-avoidance pathplanning robot-localization robotics roomba ros rust rust-lang sensor-fusion serial slam vacuum-robot

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