Skip to content

25 path-tracking algorithms are (goint to be) implemented with python.

License

Notifications You must be signed in to change notification settings

MizuhoAOKI/path_tracking_catalog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

License: MIT Poetry

Path Tracking Catalog

25 path-tracking algorithms are (goint to be) implemented with python.

nine_pathtracking_algorithms.mp4

Setup

git clone https://github.com/MizuhoAOKI/path_tracking_catalog.git
cd path_tracking_catalog
poetry install

Vehicle Models for Simulation

Definition of Coordinate Systems

definition_of_frames

Dynamic Bicycle Model

$$\begin{align} &\frac{\mathrm{d}}{\mathrm{d}t} \begin{bmatrix} p^G_x \\\ p^G_y \\\ \phi \\\ v^B_x \\\ v^B_y \\\ \omega \\\ \end{bmatrix} = \begin{bmatrix} v^B_x \cos\phi - v^B_y \sin\phi \\\ v^B_x \sin\phi + v^B_y \cos\phi \\\ \omega \\\ {a}\cos\beta - (F_{f}^{\rm{lat}}\sin {{\delta}})/m + v^B_y \omega \\\ {a}\sin\beta + F_{r}^{\rm{lat}}/m + F_{f}^{\rm{lat}} \cos{\delta}/m - v^B_x \omega \\\ (F_{f}^{\rm{lat}}l_f\cos{\delta} - F_{r}^{\rm{lat}}l_r)/I_z\\ \end{bmatrix}, \\ \\\ & F_{f}^{\rm{lat}} = - C_f \left( \frac{v^B_y + l_f \omega}{v^B_x} - {\delta} \right), \\ \\\ & F_{r}^{\rm{lat}} = - C_r \left( \frac{v^B_y - l_r \omega}{v^B_x} \right), \\ \\\ & \beta = \tan^{-1} \left( \frac{v^B_y}{v^B_x} \right) \approx \frac{v^B_y}{v^B_x} \ \ \ (\because v^B_y \ll v^B_x ). \end{align}$$

DBM

dbm_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/dynamic_bicycle_model.ipynb

Kinematic Bicycle Model

$$\begin{align} & \frac{\mathrm{d}}{\mathrm{d}t} \begin{bmatrix} p^G_x \\\ p^G_y \\\ \phi \\\ V \end{bmatrix} = \begin{bmatrix} V \cos(\phi + \beta) \\\ V \sin(\phi + \beta) \\\ (V/l_r) \sin\beta \\\ {a} \end{bmatrix},\\ \\\ & \beta = \tan^{-1} \left( \frac{l_r}{l_f + l_r} \tan({\delta}) \right). \end{align}$$

KBM

kbm_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/kinematic_bicycle_model.ipynb

Unicycle Model

$$\begin{align} \frac{\mathrm{d}}{\mathrm{d}t} \begin{bmatrix} p^G_x \\\ p^G_y \\\ \phi \\\ V \end{bmatrix} = \begin{bmatrix} V \cos\phi \\\ V \sin\phi \\\ ( V / l ) \tan{\delta} \\\ {a} \end{bmatrix}. \end{align}$$

UM

ucm_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/unicycle_model.ipynb

Control Algorithms

Bang-Bang Control

bangbang_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/bangbang.ipynb

PID Control

pid_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/pid.ipynb

Pure-Pursuit Control

purepursuit_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/purepursuit.ipynb

Stanley Control

stanley_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/stanley.ipynb

Fuzzy Logic Control

fuzzy_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/fuzzy.ipynb

Dynamic Window Approach

Simple Path Tracking

dwa_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/dwa_pathtracking.ipynb

Path Tracking with Obstacle Avoidance

dwa_obstacle_avoidance_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/dwa_obstacle_avoidance.ipynb

State Lattice Planner

State Feedback Control

state_feedback_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/state_feedback.ipynb

Linear Quadratic Regulator

lqr_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/lqr.ipynb

Model Predictive Control

Model Predictive Path-Integral Control

Simple Path Tracking

mppi_pathtracking_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/mppi_pathtracking.ipynb

Path Tracking with Obstacle Avoidance

mppi_obstacle_avoidance_demo.mp4
cd path_tracking_catalog
poetry run jupyter notebook notebooks/mppi_obstacle_avoidance.ipynb

Sliding Mode Control

Q-Learning