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