• Stars
    star
    263
  • Rank 155,624 (Top 4 %)
  • Language
    Rust
  • License
    MIT License
  • Created almost 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

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

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