MotionPlanning
Motion planning algorithms commonly used on autonomous vehicles. (path planning + path tracking)
Install / Use
/learn @zhm-real/MotionPlanningREADME
Overview
This repository implemented some common motion planners used on autonomous vehicles, including
- Hybrid A* Planner
- Frenet Optimal Trajectory
- Hierarchical Optimization-Based Collision Avoidance (H-OBCA) (Incomplete)
Also, this repository provides some controllers for path tracking, including
- Pure Pursuit + PID
- Rear-Wheel Feedback + PID
- Front-Wheel Feedback / Stanley + PID
- LQR + PID
- Linear MPC
Requirement
- Python 3.6 or above
- SciPy
- cvxpy
- Reeds-Shepp Curves
- pycubicspline
Vehicle models
This repository uses two models: simple car model and car pulling trailers model.
Hybrid A* Planner
<div align=right> <table> <tr> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/HybridAstarPlanner/gif/hybrid%20Astar-1.gif" alt="1" width="400"/></a></td> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/HybridAstarPlanner/gif/hybrid%20Astar-2.gif" alt="2" width="400"/></a></td> </tr> </table> <table> <tr> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/HybridAstarPlanner/gif/hybrid%20Astar-t1.gif" alt="11" width="400"/></a></td> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/HybridAstarPlanner/gif/hybrid%20Astar-t5.gif" alt="12" width="400"/></a></td> </tr> </table> <table> <tr> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/HybridAstarPlanner/gif/hybrid%20Astar-t3.gif" alt="13" width="400"/></a></td> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/HybridAstarPlanner/gif/hybrid%20Astar-t2.gif" alt="14" width="400"/></a></td> </tr> </table> </div>State Lattice Planner
<div align=right> <table> <tr> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/LatticePlanner/gif/Crusing.gif" alt="1" width="400"/></a></td> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/LatticePlanner/gif/StoppingMode.gif" alt="2" width="400"/></a></td> </tr> </table> </div>Controllers
<div align=right> <table> <tr> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/Control/gif/purepursuit1.gif" alt="1" width="400"/></a></td> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/Control/gif/RWF1.gif" alt="2" width="400"/></a></td> </tr> </table> <table> <tr> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/Control/gif/stanley.gif" alt="1" width="400"/></a></td> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/Control/gif/MPC.gif" alt="2" width="400"/></a></td> </tr> </table> <table> <tr> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/Control/gif/LQR_Kinematic.gif" alt="1" width="400"/></a></td> <td><img src="https://github.com/zhm-real/MotionPlanning/blob/master/Control/gif/LQR_Dynamics.gif" alt="2" width="400"/></a></td> </tr> </table> </div>Paper
Planning
- Basic Path Planning Algorithms: PathPlanning
- Baidu Apollo Planning module: Recommended Materials
- Survey of Planning and Control algos: A Survey of Motion Planning and Control Techniques for Self-driving Urban Vehicles
- Hybrid A* Planner: Practical Search Techniques in Path Planning for Autonomous Driving
- Frenet Optimal Trajectory: Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame
Control
- Baidu Apollo Control module: Recommended Materials
- Pure Pursuit: Implementation of the Pure Pursuit Path Tracking Algorithm
- Rear-Wheel Feedback: Automatic Steering Methods for Autonomous Automobile Path Tracking
- Front-Wheel Feedback / Stanley: Stanley: The Robot that Won the DARPA Grand Challenge
- LQR: ApolloAuto/apollo: An open autonomous driving platform
- Linear MPC: MPC-Based Approach to Active Steering for Autonomous Vehicle Systems
Useful Material
- HybridAStarTrailer (Julia): by AtsushiSakai
- Hybrid Path Planner (C++): by KTH Research Concept Vehicle
