update .gitignore
parent
697e194d12
commit
819de117e0
|
@ -1,4 +1,3 @@
|
||||||
*.pyc
|
*.pyc
|
||||||
*.DS_Store
|
*.DS_Store
|
||||||
/notebook/.ipynb_checkpoints
|
*.ipynb_checkpoints
|
||||||
.ipynb_checkpoints
|
|
||||||
|
|
|
@ -1,62 +0,0 @@
|
||||||
# mpc_python
|
|
||||||
|
|
||||||
Python implementation of a mpc controller for path tracking using **[CVXPY](https://www.cvxpy.org/)**.
|
|
||||||
|
|
||||||
## About
|
|
||||||
|
|
||||||
The MPC is a model predictive path following controller which does follow a predefined reference by solving an optimization problem. The resulting optimization problem is shown in the following equation:
|
|
||||||
|
|
||||||
![](img/quicklatex_equation.png)
|
|
||||||
|
|
||||||
The terns of the cost function are the sum of the **reference tracking error**, **heading effort** and **actuaction rate of change**.
|
|
||||||
|
|
||||||
Where R,P,Q are the cost matrices used to tune the response.
|
|
||||||
|
|
||||||
The vehicle model is described by the bicycle kinematics model using the state space matrices A and B:
|
|
||||||
|
|
||||||
![](img/quicklatex2.png)
|
|
||||||
|
|
||||||
The state variables **(x)** of the model are:
|
|
||||||
|
|
||||||
* **x** coordinate of the robot
|
|
||||||
* **y** coordinate of the robot
|
|
||||||
* **v** velocuty of the robot
|
|
||||||
* **theta** heading of the robot
|
|
||||||
|
|
||||||
The inputs **(u)** of the model are:
|
|
||||||
|
|
||||||
* **a** linear acceleration of the robot
|
|
||||||
* **delta** steering angle of the robot
|
|
||||||
|
|
||||||
## Demo
|
|
||||||
|
|
||||||
The MPC implementation is tested using **[bullet](https://pybullet.org/wordpress/)** physics simulator. Racing car model is from: *https://github.com/erwincoumans/pybullet_robots*.
|
|
||||||
|
|
||||||
![](img/f10.png)
|
|
||||||
|
|
||||||
Results:
|
|
||||||
|
|
||||||
![](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
|
|
||||||
|
|
||||||
```bash
|
|
||||||
pip3 install --user --requirement requirements.txt
|
|
||||||
```
|
|
||||||
|
|
||||||
## References
|
|
||||||
* [mpc paper](https://borrelli.me.berkeley.edu/pdfpub/IV_KinematicMPC_jason.pdf)
|
|
||||||
* [pythonrobotics](https://github.com/AtsushiSakai/PythonRobotics/)
|
|
||||||
* [pybullet](https://pybullet.org/wordpress/)
|
|
|
@ -1203,9 +1203,9 @@
|
||||||
],
|
],
|
||||||
"metadata": {
|
"metadata": {
|
||||||
"kernelspec": {
|
"kernelspec": {
|
||||||
"display_name": "Python [conda env:.conda-jupyter] *",
|
"display_name": "Python 3",
|
||||||
"language": "python",
|
"language": "python",
|
||||||
"name": "conda-env-.conda-jupyter-py"
|
"name": "python3"
|
||||||
},
|
},
|
||||||
"language_info": {
|
"language_info": {
|
||||||
"codemirror_mode": {
|
"codemirror_mode": {
|
||||||
|
@ -1217,7 +1217,7 @@
|
||||||
"name": "python",
|
"name": "python",
|
||||||
"nbconvert_exporter": "python",
|
"nbconvert_exporter": "python",
|
||||||
"pygments_lexer": "ipython3",
|
"pygments_lexer": "ipython3",
|
||||||
"version": "3.8.5"
|
"version": "3.7.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"nbformat": 4,
|
"nbformat": 4,
|
||||||
|
|
Loading…
Reference in New Issue