Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/onlytailei/CppRobotics
cpp implementation of robotics algorithms including localization, mapping, SLAM, path planning and control
https://github.com/onlytailei/CppRobotics
algorithms cpp localization planning robotics
Last synced: 3 months ago
JSON representation
cpp implementation of robotics algorithms including localization, mapping, SLAM, path planning and control
- Host: GitHub
- URL: https://github.com/onlytailei/CppRobotics
- Owner: onlytailei
- License: mit
- Created: 2019-03-28T07:09:18.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-03-08T13:25:58.000Z (8 months ago)
- Last Synced: 2024-05-08T10:32:11.859Z (6 months ago)
- Topics: algorithms, cpp, localization, planning, robotics
- Language: C++
- Homepage:
- Size: 6.43 MB
- Stars: 1,731
- Watchers: 58
- Forks: 478
- Open Issues: 6
-
Metadata Files:
- Readme: readme.md
- License: LICENSE.md
Awesome Lists containing this project
README
# CppRobotics
This is the cpp implementation of the [PythonRobotics](https://github.com/AtsushiSakai/PythonRobotics)
## Requirment
- cmake
- opencv 3.3
- Eigen 3
- [CppAD](https://www.coin-or.org/CppAD/Doc/install.htm) / [IPOPT](https://www.coin-or.org/Ipopt/documentation/node14.html) (*for MPC convex optimization*) [install tips](https://github.com/udacity/CarND-MPC-Quizzes/blob/master/install_Ipopt_CppAD.md)
- ~~ROS~~ (*~~To make the repo lightweight :)~~. Yet, we may still need it for 3D visualization.*)## Build
$ mkdir build
$ cd build
$ cmake ../
$ make -j 8Find all the executable files in ***build/bin***.
# Table of Contents
* [Localization](#localization)
* [Extended kalmam filter](#extended-kalman-filter-localization)
* [Particle filter](#particle-filter-localization)
* Histogram filter
* [Mapping](#mapping)
* Gaussian grid map
* [SLAM](#SLAM)
* FastSLAM 1.0
* [Path Planning](#path-planning)
* [Dijkstra](#dijkstra)
* [A Star](#a-star)
* [RRT](#rrt)
* [Dynamic Window Approach](#dynamic-window-approach)
* [Model Predictive Trajectory Generator](#model-predictive-trajectory-generator)
* [Cubic Spline Planner](#cubic-spline-planner)
* [State Lattice Planner](#state-lattice-planner)
* [Frenet Frame Trajectory](#frenet-frame-trajectory)
* [Path Tracking Control](#path-tracking-control)
* [LQR Sterring Control](#lqr-steering-control)
* [LQR Speed and Steering Control](#lqr-speed-and-steering-control)
* [Model Predictive Speed and Steering Control](#mpc-speed-and-steering-control)
* [Aerial Navigation](#aerial-navigation)
* Drone 3D Trajectory Following
* Rocket Powered Landing# Localization
## Extended Kalman Filter Localization
* green line: the groundtruth trajectory
* black line: dead reckoning
* red points: observations (e.g. GPS)
* blue line: estimated positions[Probabilistic Robotics](http://www.probabilistic-robotics.org/)
## Particle Filter Localization
* green line: the groundtruth trajectory
* black line: dead reckoning
* red points: landmarks
* blue line: estimated positions[Probabilistic Robotics](http://www.probabilistic-robotics.org/)
# Path Planning
## Dijkstra
* blue point: the start point
* red point: the goal point## A star
* blue point: the start point
* red point: the goal point## RRT
* red circle: the start point
* blue circle: the goal point
* black circle: obstacles## Dynamic Window Approach
* blue circle: the target point
* red circle: the robot[The dynamic window approach to collision avoidance](https://ieeexplore.ieee.org/document/580977)
## Model Predictive Trajectory Generator
This part is based on the bicycle motion model.
* blue circle: the target point
* red circle: the initial point## Cubic Spline Planner
## State Lattice Planner
* blue circle: the target point
* red circle: the initial point[State Space Sampling of Feasible Motions for High-Performance Mobile Robot Navigation in Complex Environments](https://www.ri.cmu.edu/pub_files/pub4/howard_thomas_2008_1/howard_thomas_2008_1.pdf)
## Frenet Frame Trajectory
* black line: the planned spline path
* red circle: the obstacle
* blue circle: the planned trajectory
* green circle: the real-time position of robot[Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame](https://www.researchgate.net/publication/224156269_Optimal_Trajectory_Generation_for_Dynamic_Street_Scenarios_in_a_Frenet_Frame)
# Path Tracking Control
## LQR Steering Control
* black line: the planned spline path
* red circle: the position under lqr control## LQR Speed and Steering Control
* black line: the planned spline path
* red circle: the position under lqr control## MPC Speed and Steering Control
* black line: the planned spline path
* blue line: the passed path
* yellow cross: the reference trajectory for MPC
(To compile this part, you need to uncomment the related lines in CMakeLists.txt and install [CppAD](https://www.coin-or.org/CppAD/Doc/install.htm) and [IPOPT](https://coin-or.github.io/Ipopt/).)