{"id":31847748,"url":"https://github.com/mizuhoaoki/path_tracking_catalog","last_synced_at":"2025-10-12T09:54:29.400Z","repository":{"id":196994744,"uuid":"697739339","full_name":"MizuhoAOKI/path_tracking_catalog","owner":"MizuhoAOKI","description":"25 path-tracking algorithms are (goint to be) implemented with python.","archived":false,"fork":false,"pushed_at":"2024-05-18T13:08:17.000Z","size":41173,"stargazers_count":79,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-18T14:24:48.432Z","etag":null,"topics":["control","control-engineering","control-theory","controller","dynamic-window-approach","fuzzy-logic","fuzzy-logic-control","lqr","lqr-controller","mppi","path-following","path-tracking","pid","pid-control","pid-controller","pure-pursuit","purepursuit","python","stanley","vehicle-dynamics"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MizuhoAOKI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-09-28T11:30:11.000Z","updated_at":"2024-05-18T13:08:21.000Z","dependencies_parsed_at":null,"dependency_job_id":"a122535c-801f-4dc6-9eef-d10976344918","html_url":"https://github.com/MizuhoAOKI/path_tracking_catalog","commit_stats":{"total_commits":59,"total_committers":1,"mean_commits":59.0,"dds":0.0,"last_synced_commit":"98cdd6c7290b56fa9311bce65b16bfabfdcd6b81"},"previous_names":["mizuhoaoki/path_tracking","mizuhoaoki/path_tracking_catalog"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/MizuhoAOKI/path_tracking_catalog","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MizuhoAOKI%2Fpath_tracking_catalog","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MizuhoAOKI%2Fpath_tracking_catalog/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MizuhoAOKI%2Fpath_tracking_catalog/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MizuhoAOKI%2Fpath_tracking_catalog/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MizuhoAOKI","download_url":"https://codeload.github.com/MizuhoAOKI/path_tracking_catalog/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MizuhoAOKI%2Fpath_tracking_catalog/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279010964,"owners_count":26084840,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-12T02:00:06.719Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["control","control-engineering","control-theory","controller","dynamic-window-approach","fuzzy-logic","fuzzy-logic-control","lqr","lqr-controller","mppi","path-following","path-tracking","pid","pid-control","pid-controller","pure-pursuit","purepursuit","python","stanley","vehicle-dynamics"],"created_at":"2025-10-12T09:54:14.188Z","updated_at":"2025-10-12T09:54:29.395Z","avatar_url":"https://github.com/MizuhoAOKI.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Poetry](https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json)](https://python-poetry.org/)\n![](https://geps.dev/progress/36)\n\n# Path Tracking Catalog\n25 path-tracking algorithms are (goint to be) implemented with python.\n\nhttps://github.com/MizuhoAOKI/path_tracking_catalog/assets/63337525/1b2b39f6-87fc-4f3d-9b18-4ae32f71b5fd\n\n- [Vehicle Models for Simulation](#vehicle-models-for-simulation)\n  - [x] [Dynamic Bicycle Model](#dynamic-bicycle-model)\n  - [x] [Kinematic Bicycle Model](#kinematic-bicycle-model)\n  - [x] [Unicycle Model](#unicycle-model)\n- [Control Algorithms](#control-algorithms)\n  - [x] [Bang-Bang Control](#bang-bang-control)\n  - [x] [PID Control](#pid-control)\n  - [x] [Pure Pursuit Control](#pure-pursuit-control)\n  - [x] [Stanley Control](#stanley-control)\n  - [x] [Fuzzy Logic Control](#fuzzy-logic-control)\n  - [ ] Genetic Algorithm\n  - [x] [Dynamic Window Approach](#dynamic-window-approach)\n  - [ ] State Lattice Planner\n  - [x] [State Feedback Control](#state-feedback-control)\n  - [x] [Linear Quadratic Regulator (infinite horizon)](#linear-quadratic-regulator)\n  - [ ] Linear Quadratic Regulator (finite horizon)\n  - [ ] Differential Dynamic Programming (infinite horizon)\n  - [ ] Differential Dynamic Programming (finite horizon)\n  - [ ] Iterative LQR (infinite horizon)\n  - [ ] Iterative LQR (finite horizon)\n  - [ ] Linear Model Predictive Control (formulated as Quadratic Programming)\n  - [ ] Nonlinear Model Predictive Control (solved by C/GMRES method)\n  - [x] [Model Predictive Path-Integral Control](#model-predictive-path-integral-control)\n  - [ ] Sliding Mode Control\n  - [ ] Q-Learning\n  - [ ] Multi Layer Perceptron\n  - [ ] Linear Quadratic Gaussian\n  - [ ] H∞ Control (LMI)\n  - [ ] Lyapunov\n  - [ ] Adaptive Control\n\n## Setup\n```sh\ngit clone https://github.com/MizuhoAOKI/path_tracking_catalog.git\ncd path_tracking_catalog\npoetry install\n```\n\n## Vehicle Models for Simulation\n\n### Definition of Coordinate Systems\n\u003cimg src=\"./media/def_of_frames.svg\" width=\"500px\" alt=\"definition_of_frames\"\u003e\n\n### Dynamic Bicycle Model\n\n```math\n\\begin{align}\n\u0026\\frac{\\mathrm{d}}{\\mathrm{d}t}\n\\begin{bmatrix}\np^G_x \\\\\np^G_y \\\\\n\\phi \\\\\nv^B_x \\\\\nv^B_y \\\\\n\\omega \\\\\n\\end{bmatrix}\n=\n\\begin{bmatrix}\nv^B_x \\cos\\phi - v^B_y \\sin\\phi \\\\\nv^B_x \\sin\\phi + v^B_y \\cos\\phi \\\\\n\\omega \\\\\n{a}\\cos\\beta - (F_{f}^{\\rm{lat}}\\sin {{\\delta}})/m + v^B_y \\omega \\\\\n{a}\\sin\\beta + F_{r}^{\\rm{lat}}/m + F_{f}^{\\rm{lat}} \\cos{\\delta}/m - v^B_x \\omega \\\\\n(F_{f}^{\\rm{lat}}l_f\\cos{\\delta} - F_{r}^{\\rm{lat}}l_r)/I_z\\\n\\end{bmatrix}, \\\\ \\\\\n\u0026 F_{f}^{\\rm{lat}} = - C_f \\left( \\frac{v^B_y + l_f \\omega}{v^B_x} - {\\delta} \\right), \\\\ \\\\\n\u0026 F_{r}^{\\rm{lat}} = - C_r \\left( \\frac{v^B_y - l_r \\omega}{v^B_x} \\right), \\\\ \\\\\n\u0026 \\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 ).\n\\end{align}\n```\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./media/DBM.svg\" width=\"500px\" alt=\"DBM\" /\u003e\n\u003c/p\u003e\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/d51c3821-9b35-4e91-8235-e63b18f33f03\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/dynamic_bicycle_model.ipynb\n```\n\n### Kinematic Bicycle Model\n\n```math\n\\begin{align}\n\u0026 \\frac{\\mathrm{d}}{\\mathrm{d}t}\n\\begin{bmatrix}\np^G_x \\\\\np^G_y \\\\\n\\phi \\\\\nV\n\\end{bmatrix}\n=\n\\begin{bmatrix}\nV \\cos(\\phi + \\beta) \\\\\nV \\sin(\\phi + \\beta) \\\\\n(V/l_r)  \\sin\\beta \\\\\n{a}\n\\end{bmatrix},\\\\ \\\\\n\u0026 \\beta = \\tan^{-1} \\left( \\frac{l_r}{l_f + l_r} \\tan({\\delta}) \\right).\n\\end{align}\n```\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./media/KBM.svg\" width=\"500px\" alt=\"KBM\" /\u003e\n\u003c/p\u003e\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/b85fe31c-3e4a-47a9-bc54-694cde225bd5\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/kinematic_bicycle_model.ipynb\n```\n\n### Unicycle Model\n\n```math\n\\begin{align}\n\\frac{\\mathrm{d}}{\\mathrm{d}t}\n\\begin{bmatrix}\np^G_x \\\\\np^G_y \\\\\n\\phi \\\\\nV\n\\end{bmatrix}\n=\n\\begin{bmatrix}\nV \\cos\\phi \\\\\nV \\sin\\phi \\\\\n( V / l ) \\tan{\\delta} \\\\\n{a}\n\\end{bmatrix}.\n\\end{align}\n```\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"./media/UM.svg\" width=\"500px\" alt=\"UM\" /\u003e\n\u003c/p\u003e\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/8cba0010-6a21-4830-8974-b4b57c166bcf\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/unicycle_model.ipynb\n```\n\n## Control Algorithms\n### Bang-Bang Control\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/cc88214e-3914-4126-ac57-3f63d8397094\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/bangbang.ipynb\n```\n\n### PID Control\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/83e813d9-b611-49da-abe2-45333bfb80d2\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/pid.ipynb\n```\n\n### Pure-Pursuit Control\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/a23f8437-d695-4848-83fb-a8424f311683\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/purepursuit.ipynb\n```\n\n### Stanley Control\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/43f3ce4f-8181-45ad-bc08-ac96f3a91e2b\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/stanley.ipynb\n```\n\n### Fuzzy Logic Control\n\nhttps://github.com/MizuhoAOKI/path_tracking_catalog/assets/63337525/d8f9f256-4b2c-4b9e-8b57-e33f05e59e6f\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/fuzzy.ipynb\n```\n\n### Dynamic Window Approach\n\n#### Simple Path Tracking\n\nhttps://github.com/MizuhoAOKI/path_tracking_catalog/assets/63337525/23078e50-46a5-48eb-b89b-4a2111b320f0\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/dwa_pathtracking.ipynb\n```\n\n#### Path Tracking with Obstacle Avoidance\n\nhttps://github.com/MizuhoAOKI/path_tracking_catalog/assets/63337525/7b2a80b7-8d3e-4d37-89f4-23337efcb937\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/dwa_obstacle_avoidance.ipynb\n```\n\n### State Lattice Planner\n\n\n### State Feedback Control\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/8e48380b-f840-49cc-91e0-07dad356b5be\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/state_feedback.ipynb\n```\n\n### Linear Quadratic Regulator\n\nhttps://github.com/MizuhoAOKI/path_tracking/assets/63337525/13d6abbc-2904-422d-acba-17ede074a181\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/lqr.ipynb\n```\n\n### Model Predictive Control\n\n\n### Model Predictive Path-Integral Control\n\n#### Simple Path Tracking\n\nhttps://github.com/MizuhoAOKI/path_tracking_catalog/assets/63337525/acfefe3a-a22a-4cbc-a5c8-a83086943684\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/mppi_pathtracking.ipynb\n```\n\n#### Path Tracking with Obstacle Avoidance\n\nhttps://github.com/MizuhoAOKI/path_tracking_catalog/assets/63337525/fe84eaf6-8795-490d-9ef1-efecc427052e\n\n```sh\ncd path_tracking_catalog\npoetry run jupyter notebook notebooks/mppi_obstacle_avoidance.ipynb\n```\n\n### Sliding Mode Control\n\n\n### Q-Learning\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizuhoaoki%2Fpath_tracking_catalog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmizuhoaoki%2Fpath_tracking_catalog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmizuhoaoki%2Fpath_tracking_catalog/lists"}