Open-source Autonomy Software in Rust-lang with gRPC for the Roomba series robot vacuum cleaners

Overview

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

Structure

Project Layout

├── Cargo.toml (workspace)
├── Cargo.lock
├── api (bin)
|   └── server
├── autonomy (bin)
|   └── mission
|   └── motion
|   └── slam
|   └── perception
|   └── risk
├── drivers (lib)
|   └── roomba
|   └── realsense
|   └── rplidar
|   └── raspberryPi
└── protos
|   └── sensors.proto
|   └── state.proto
|   └── map2D.proto
└── 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

You might also like...
Diosic is an open source web-based music collection server and streamer

Diosic is an open source web-based music collection server and streamer. Mainly suitable for users who need to deploy on servers with low hardware specifications.

Open source bible study program on Linux!
Open source bible study program on Linux!

Open Witness Library Open Witness Library is a program to read articles that carries God's true name. Warning This branch is outdated, please refer to

An open-source UCIe implementation developed at UC Berkeley.

UCIe An open-source UCIe implementation developed at UC Berkeley. This project is very early-stage. If you are interested in contributing, see below.

An AI-native lightweight, reliable, and high performance open-source vector database.
An AI-native lightweight, reliable, and high performance open-source vector database.

What is OasysDB? OasysDB is a vector database that can be used to store and query high-dimensional vectors. Our goal is to make OasysDB fast and easy

High Assurance Rust - A free book about developing secure and robust systems software.

High Assurance Rust - A free book about developing secure and robust systems software.

An inquiry into nondogmatic software development. An experiment showing double performance of the code running on JVM comparing to equivalent native C code.
An inquiry into nondogmatic software development. An experiment showing double performance of the code running on JVM comparing to equivalent native C code.

java-2-times-faster-than-c An experiment showing double performance of the code running on JVM comparing to equivalent native C code ⚠️ The title of t

Scans a given directory for software of unknown provinence (SOUP) and dumps them in a json-file

Scans a given directory for software of unknown provinence (SOUP) and writes them to a json-file. The json-file contains name, version and a meta property for each SOUP.

Goodname is a tool to assist you with cool naming of your methods and software

Goodname is a tool to assist you with cool naming of your methods and software. Given a brief description of your method or software, this tool enumerates name candidates forming subsequences of the description (i.e., abbreviation).

Comments
  • Feat/odometry

    Feat/odometry

    • added computation of pose and velocity (no covariance yet)
    • added wheel encoder wrapping
    • added wrapping of heading
    • added timer utils

    up next:

    • add error model (covariances)
    opened by Sollimann 0
  • Odometry covariance computation bug?

    Odometry covariance computation bug?

    Thanks for the covariance computations at https://github.com/Sollimann/CleanIt/blob/main/autonomy/src/slam/README.md !

    However, in the definition of $F_p = \frac{\delta f}{\delta x, \delta y, \delta\theta}$, it seems to me the equation for $\frac{\delta f}{\delta\theta}$ should have $\Delta s$ in absolute values (on both first and second row). I can't figure out mathematically why it should be so, but practically, if I use the signed $\Delta s$, the covariance decreases when the robot reverses, which is probably not what you want.

    Do you also observe this behavior?

    opened by peci1 0
  • use message-queue between processes

    use message-queue between processes

    The architecture can be improved by using e.g NATS for messaging between services, while using gRPC as a forward facing API (facade) for the user. This should improve the design.

    Could also look into using actix actor framework instead of NATS

    opened by Sollimann 0
Releases(1.0.0)
Owner
Kristoffer Rakstad Solberg
Software Engineer @cognitedata. Former Head of Robotic Controls @vortexntnu. M.Sc in ICT & Marine Cybernetics from NTNU, with a visiting semester at NUS.
Kristoffer Rakstad Solberg
Rust library provides a standalone implementation of the ROS (Robot Operating System) core

ROS-core implementation in Rust This Rust library provides a standalone implementation of the ROS (Robot Operating System) core. It allows you to run

Patrick Wieschollek 3 Apr 26, 2023
Secure mTLS and gRPC backed runtime daemon. Alternative to systemd. Written in Rust.

Auraed A runtime daemon written in Rust. Designed to run as pid 1 mTLS backed gRPC API over unix domain socket Run executables Run containers Run virt

Aurae Runtime 57 Dec 22, 2022
Charted's email service built in Rust that can be connected via gRPC

email-service is a small microservice to help transfer emails towards other people without trying to implement it in different languages. This is used in charted-server for member invitations, passwordless authentication, and more.

charted 7 Mar 6, 2023
In this repository you can find modules with code and comments that explain rust syntax and all about Rust lang.

Learn Rust What is this? In this repository you can find modules with code and comments that explain rust syntax and all about Rust lang. This is usef

Domagoj Ratko 5 Nov 5, 2022
A conky-like system monitor made for the sole purpose of teaching myself rust-lang.

Pomky A conky-like system monitor made for the sole purpose of teaching myself rust-lang. It is not as configurable, modular, or feature packed as con

null 3 Nov 17, 2022
A complicated eso-lang written in Rust that doesn't limit your creativity!

Documentation for mott Introduction mott (from french "mot" = word) is (maybe) the first programming language, that doesn't limit your creativity to p

Lars 1 Feb 1, 2022
Accompanying the 5-class, 1 class per week series of Ultimate Rust: Foundations

Ultimate Rust Foundations Presented by Ardan Labs, Ultima Rust: Foundations gives you a "zero to hero" class to get you started with Rust. You'll lear

Herbert 7 May 22, 2023
Orion lang is a lispy programming language that is strongly and statically typed.

Orion Orion is a lisp inspired statically typed programming language written in Rust Install To install orion you can either: Download binary from the

Wafelack 226 Dec 17, 2022
Maai_core is an open source AI that is written in rust

maai_core is an open source AI that is written in rust. It is more focused on being lightweight and speedy.

Max Beier 2 Aug 1, 2022
An open source WCH-Link library/command line tool written in Rust.

wlink - WCH-Link command line tool NOTE: This tool is still in development and not ready for production use. Known Issue: Only support binary firmware

WCH MCU for Rust 22 Mar 7, 2023