Skip to content

shassen14/rust_robotics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rust_robotics

This project was inspired by PythonRobotics, the desire to learn Rust, and previous work I've done. I am still learning, so please feel free to contribute any way you see fit. Thanks!

Table of Contents

Current Project State

Architecturally, the project is a WIP. The vision is to work on algorithms in the following manner (i.e. system modeling -> controls -> path/motion planning -> inertial sensor imitation -> localization -> basic visual sensor imitation -> mapping).

Basic Robotics Pipeline

This is generally how data flows to get robots to achieve goals autonomously. We will work on algorithms unintuitively from the bottom to upstream.

Basic Robotics Pipeline

NOTE: Since this is the beginning, the program is very volatile and could easily have breaking changes

Robotic Algorithms Implemented

  1. There is a simple ODE (Ordinary Differential Equation) solver implementation being from the Runge-Kutta family (Euler all the way up to RK4).
    • This is helpful to model systems (kinematics, dynamics, empirical) and find their solution/states.
    • Code here
  2. A base interface (rust trait) to model systems. Code here

Requirements/Quick Install

  1. Rust Installation for your specified OS
  2. Clone this repo and change your directory into this repo using the command line interface
  3. cargo build --release
    • Release build optimizes for storage size and cpu usage

Run Example Binaries

Assumption is you are in the repo directory in the command line interface

Once this repo is more flushed out, these files will be moved to an examples directory

N Joint Robotic Arm Simulation

Pure Pursuit on a Predetermined Path using Kinematic Bicycle Model

To-Do's

Robotics Related

  1. Base interface for controls
    • Base interface for pathtracking as an extension?
  2. Double check jacobians for all models
  3. Feedforward control input for all models

Non-Robotics Related

  1. Function returns Result<> instead of the expected values for error handling
  2. Function arguments have std::option for optional arguments. This will help with default API values.
  3. Ability to move axis range while plotting for animations.
    • Like a panning camera to center around an object
  4. Multiplot function wrappers to graph multiple plots at the same time in animations
    • Need to have mouse point position converted to graph location
  5. 3D plotting for animations
  6. Combination of 3D plots and 2D plots
  7. Utilities for command line argument for binaries
  8. CSV to SQLite
  9. Move binaries to examples
    • Examples need a generic program flow
  10. Github workflow