Giter Site home page Giter Site logo

ctfchan / learnroboticscpp Goto Github PK

View Code? Open in Web Editor NEW
44.0 4.0 18.0 3.66 MB

Classical robotics algorithms implemented in C++17.

CMake 2.16% C++ 96.57% Shell 0.50% Dockerfile 0.77%
robotics rrt path-planning pathfinding rrtstar prm ekf dwa demo dijkstra

learnroboticscpp's Introduction

LearnRoboticsCpp

This repository contains my implementations of classical robotics algorithms in C++. Inspiration drawn from PythonRobotics and CppRobotics. The CppRobotics repo was very good, but it used OpenCV to plot 2D graphs. I found the process of converting 2D points to pixel coordinates in OpenCV very tedious and it seems like a bit of a hack. This repo uses gnuplot-iostream instead for plotting which makes much prettier graphs than OpenCV and allows for us to easily make 3D plots.

Some of these implementations will have a tutorial attached to it. It's still a work in progress.

Table of Contents

Requirments

Tested on Ubuntu 18.04

Running with Docker

The Docker image is about 3GB.

Deployment

$ sudo docker build -f Dockerfile -t ctfchan/learn-robotics-cpp:latest .
$ sudo docker push ctfchan/learn-robotics-cpp:latest

Make sure -it ctfchan/learn-robotics-cpp goes last when you do docker run.

$ sudo docker pull ctfchan/learn-robotics-cpp
$ sudo docker run --name learn-robotics-cpp --mount type=bind,source="$(pwd)",target=/root/LearnRoboticsCpp -it ctfchan/learn-robotics-cpp

From inside the Docker

$ cd ~/LearnRoboticsCpp
$ ./bin/state_lattice # or whatever executable you want to run

The images will show up in the animations directory.

docker stop when you're done. docker rm when you want to get rid of the container to start over or something.

$ sudo docker stop learn-robotics-cpp
$ sudo docker rm learn-robotics-cpp

docker exec to run it after you stop it.

$ sudo docker exec learn-robotics-cpp bash

Path Planning

DWA

DWA Demo

Dijkstra

Dijkstra Demo

A*

A* Demo

PRM

PRM Demo

RRT

RRT Demo

RRTStar

RRTStar Demo

Potential Field

Potential Field Demo

Quintic Polynomial

Quintic Polynomial Demo

Explanation

Cubic Spline

Cubic Spline Demo

Explanation

Model Predictive Trajectory Generation

 Model Predictive Trajectory Generation

Explanation

State Lattice Planner

Left to right: uniform, biased, lane sampling

Tutorial

Path Tracking

Move To Pose

Move To Pose Demo

Stanley Control

Stanely Control Demo

Model Predictive Control

Model Predictive Control Demo

Tutorial

Localization

Extended Kalman Filter

Extended Kalman Filter Demo

Tutorial

Unscented Kalman Filter

Unscented Kalman Filter Demo

We can see error ellipse in this demo is a much better approximation of the true distribution. EKF can be biased and inconsistent.

Tutorial

Particle Filter

Particle Filter Demo

learnroboticscpp's People

Contributors

ctfchan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.