CppRobotics
CppRobotics copied to clipboard
cpp implementation of robotics algorithms including localization, mapping, SLAM, path planning and control
CppRobotics
This is the cpp implementation of the PythonRobotics
Requirment
- cmake
- opencv 3.3
- Eigen 3
- CppAD / IPOPT (for MPC convex optimization) install tips
- ~~ROS~~ (~~To make the repo lightweight :)~~. Yet, we may still need it for 3D visualization.)
Build
$ mkdir build
$ cd build
$ cmake ../
$ make -j 8
Find all the executable files in build/bin.
Table of Contents
-
Localization
- Extended kalmam filter
- Particle filter
- Histogram filter
-
Mapping
- Gaussian grid map
-
SLAM
- FastSLAM 1.0
-
Path Planning
- Dijkstra
- A Star
- RRT
- Dynamic Window Approach
- Model Predictive Trajectory Generator
- Cubic Spline Planner
- State Lattice Planner
- Frenet Frame Trajectory
-
Path Tracking Control
- LQR Sterring Control
- LQR Speed and Steering Control
- Model Predictive Speed and Steering Control
-
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

Particle Filter Localization
- green line: the groundtruth trajectory
- black line: dead reckoning
- red points: landmarks
- blue line: estimated positions

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
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

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
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 and IPOPT.)
