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 Kalman Filter Localization
- green line: the groundtruth trajectory
- black line: dead reckoning
- red points: observations (e.g. GPS)
- blue line: estimated positions
Probabilistic Robotics
Particle Filter Localization
- green line: the groundtruth trajectory
- black line: dead reckoning
- red points: landmarks
- blue line: estimated positions
Probabilistic Robotics
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
State Space Sampling of Feasible Motions for High-Performance Mobile Robot Navigation in Complex Environments
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.)