From bee361feb96f5fcf2b25c895cf40f2e1c6ee8caf Mon Sep 17 00:00:00 2001 From: Jun Zeng Date: Sun, 20 Dec 2020 19:26:06 -0800 Subject: [PATCH] Update README.md --- README.md | 66 ++++++++++++---------------------- car-racing/README.md | 12 +++++++ double-integrator-2D/README.md | 21 +++++++++++ 3 files changed, 56 insertions(+), 43 deletions(-) create mode 100644 car-racing/README.md create mode 100644 double-integrator-2D/README.md diff --git a/README.md b/README.md index 45ce77c..16dc6ae 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,28 @@ # MPC-CBF -Model Predictive Control with Control Barrier Functions +We propose a control framework which unifies the model predictive control and control barrier functions. This is the reference implementation of our paper: +### Safety-Critical Model Predictive Control with Discrete-Time Control Barrier Function +[PDF](https://arxiv.org/abs/2007.11718) | [Code: Double Integratror](double-integrator-2D) | [Code: Car Racing](car-racing) -![](car-racing/demo.gif) +*Jun Zeng, Bike Zhang and Koushil Sreenath* -# Prerequisites -## Matlab + + +#### Citing +If you find this code useful in your work, please consider citing: +```shell +@article{zeng2020mpccbf, + title={Safety-critical model predictive control with discrete-time control barrier function}, + author={Zeng, Jun and Zhang, Bike and Sreenath, Koushil}, + journal={arXiv preprint arXiv:2007.11718}, + year={2020} +} +``` + +### Instructions +Two independent markdown files are written to illustrate numerical examples of [double integrator](double-integrator-2D/README.md) and [racing car](car-racing/README.md). + +### Dependencies +#### Matlab The packages needed for running the code are [Yalmip](https://yalmip.github.io/) and [IPOPT](https://projects.coin-or.org/Ipopt/wiki/MatlabInterface). -We also provide the zipped version of precompiled .mex files for IPOPT in the folder `packages` in case you don't have it. Unzip that file and add those .mex files into your MATLAB path. - -# Description -## 2D double integrator -The 2D double integrator is assigned to reach the target position at origin while avoiding obstacles. We have three classes for different controllers: `DCLF_DCBF.m` (DCLF-DCBF), `MPC_CBF.m` (MPC-CBF) and `MPC_DC` (MPC-DC), respectively. - -Moreover, to illustrate the performance among them, we have: -* `main.m`: Run DCLF-DCBF/MPC-CBF/MPC-DC respectively. -* `analysis_gamma.m`: Run analysis for different hyperparameter $\gamma$. -* `analysis_horizon.m`: Run analysis for different horizon. - -We illustrate the performance between DCLF-DCBF/MPC-DC/MPC-CBF -| DCLF-DCBF | MPC-DC (N=8) | -| --- | --- | -| | | - -| MPC-CBF (N=1) | MPC-CBF (N=8) | -| --- | --- | -| | | - -and also the safety performance for different numbers of horizon and hyperparameters -| Different hyperparameter | Different horizon | -| --- | --- | -| | | - -## Car racing competition -We have the speed profile and control input shown as follow, - - - - - - - -The animation can be found on the top of this readme, we will release full code after the paper is accepted. - -# References -This repository is based on the following: -* Jun Zeng, Bike Zhang and Koushil Sreenath. "Safety-Critical Model Predictive Control with Discrete-Time Control Barrier Function." [[PDF]](http://arxiv.org/abs/2007.11718) +We also provide the zipped version of precompiled .mex files for IPOPT in the folder `packages` in case you don't have it. Unzip that file and add those .mex files into your MATLAB path. \ No newline at end of file diff --git a/car-racing/README.md b/car-racing/README.md new file mode 100644 index 0000000..cf4011c --- /dev/null +++ b/car-racing/README.md @@ -0,0 +1,12 @@ +### Car racing competition +The source codes are mainly adapted from Ugo's LMPC code and there are some lagacy features which are not used in our paper. + +We simulate a car racing competition between several cars, and ego car's speed profile and control input are shown as follow, + + + + + + + +The animation can be found on the top of this readme, we will release full code after the paper is accepted. \ No newline at end of file diff --git a/double-integrator-2D/README.md b/double-integrator-2D/README.md new file mode 100644 index 0000000..089626f --- /dev/null +++ b/double-integrator-2D/README.md @@ -0,0 +1,21 @@ +### 2D double integrator +The 2D double integrator is assigned to reach the target position at origin while avoiding obstacles. We have three classes for different controllers: `DCLF_DCBF.m` (DCLF-DCBF), `MPC_CBF.m` (MPC-CBF) and `MPC_DC` (MPC-DC), respectively. + +Moreover, to illustrate the performance among them, we have: +* `main.m`: Run DCLF-DCBF/MPC-CBF/MPC-DC respectively. +* `analysis_gamma.m`: Run analysis for different hyperparameter $\gamma$. +* `analysis_horizon.m`: Run analysis for different horizon. + +We illustrate the performance between DCLF-DCBF/MPC-DC/MPC-CBF +| DCLF-DCBF | MPC-DC (N=8) | +| --- | --- | +| | | + +| MPC-CBF (N=1) | MPC-CBF (N=8) | +| --- | --- | +| | | + +and also the safety performance for different numbers of horizon and hyperparameters +| Different hyperparameter | Different horizon | +| --- | --- | +| | \ No newline at end of file