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
State Lattice Planner
Controllers
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