# mpc_python I keep here my Jupyter notebooks on R&D on Model Predictive Control applyied to path-following problems in driverless vehicles. Includes also a Pybullet simulation to showcase the results. This mainly uses **[CVXPY](https://www.cvxpy.org/)** as a framework. This repo contains code from other projecs, check them out in thr special thanks section. ## Contents ### Python Scripts The settings for tuning the MPC controller are in the **mpc_config** class. Scripts for running the algorithm with/without the pybullet simulation, *these require some tidy up* :/ ```bash python mpc_pybullet_demo/mpc_demo_pybullet.py ``` A simpler demo wich does not use pybullet is also provided, this is useful for debugging ```bash python mpc_pybullet_demo/mpc_demo_pybullet.py ``` ### Jupyter Notebooks 1. State space model derivation -> analytical and numerical derivaion of the model 2. MPC -> implementation and testing of various tweaks/improvements 3. Obstacle Avoidance -> Using halfplane constrains to avaoid track collisions -> Sill work in progress ## Results Racing car model is from: *https://github.com/erwincoumans/pybullet_robots*. ![](img/f10.png) Results: ![](img/demo_bullet.gif) ![](img/demo.gif) To run the pybullet demo: ```bash python3 mpc_demo/mpc_demo_pybullet.py ``` To run the simulation-less demo: ```bash python3 mpc_demo/mpc_demo_pybullet.py ``` ## Requirements The dependencies can be installed using pip (): ```bash pip3 install --user --requirement requirements.txt ``` ## References & Special Thanks :star: : * [Prof. Borrelli - mpc papers and material](https://borrelli.me.berkeley.edu/pdfpub/IV_KinematicMPC_jason.pdf) * [AtsushiSakai - pythonrobotics](https://github.com/AtsushiSakai/PythonRobotics/) * [erwincoumans - pybullet](https://pybullet.org/wordpress/) * [alexliniger - mpcc](https://github.com/alexliniger/MPCC) and his [paper](https://onlinelibrary.wiley.com/doi/abs/10.1002/oca.2123) * [arex18 - rocket-lander](https://github.com/arex18/rocket-lander)