robust-tube-mpc

所属分类:其他
开发工具:matlab
文件大小:175KB
下载次数:27
上传日期:2020-04-21 21:05:05
上 传 者不器不器
说明:  使用管鲁棒模型预测控制 这个库包含示例管模型预测控制(tube-MPC)[1, 2]以及通用模型预测控制(MPC)用MATLAB编写的。
(Robust Model Predictive Control Using Tube This repository includes examples for the tube model predictive control (tube-MPC)[1, 2] as well as the generic model predictive control (MPC) written in MATLAB.)

文件列表:
example\example_dist_inv_set.m (1147, 2019-03-27)
example\example_MPC.m (742, 2019-03-27)
example\example_optimalcontrol.m (765, 2019-03-27)
example\example_tubeMPC.m (1246, 2019-03-27)
fig\sample1.jpg (125712, 2019-03-27)
fig\sample2.jpg (134601, 2019-03-27)
LICENSE.md (1072, 2019-03-27)
src\Graphics.m (2842, 2019-03-27)
src\LinearSystem.m (1418, 2019-03-27)
src\ModelPredictiveControl.m (1738, 2019-03-27)
src\OptimalControler.m (6414, 2019-03-27)
src\TubeModelPredictiveControl.m (4443, 2019-03-27)
src\utils\convert_Poly2Mat.m (608, 2019-03-27)
src\utils (0, 2019-03-27)
example (0, 2019-03-27)
fig (0, 2019-03-27)
src (0, 2019-03-27)

# Robust Model Predictive Control Using Tube This repository includes examples for the tube model predictive control (tube-MPC)[1, 2] as well as the generic model predictive control (MPC) written in MATLAB. ## Requirement 1) optimization_toolbox (matlab)
2) control_toolbox (matlab)
3) Multi-Parametric Toolbox 3 (open-source and freely available at http://people.ee.ethz.ch/~mpt/3/) ## Usage See `example/example_tubeMPC.m` and `example/example_MPC.m` for the tube-MPC and generic MPC, respectively. Note that every inequality constraint here is expressed as a convex set. For example, the constraints on state `Xc` is specified as a rectangular, which is constructed with 4 vertexes. When considering a 1-dim input `Uc`, `Uc` will be specified by min and max value (i.e. `u[u_min, u_max]`), so it will be constructed by 2 vertexes. For more detail, please see the example codes. ## Short introduction to the tube MPC After running `example/example_tubeMPC.m`, you will get the following figure.
none
Now that you can see that the green nominal trajectory starting from the bottom left of the figure and surrounding a "tube". The blue plot means the real trajectory affected by the disturbance. You can see that this real trajectory never stick out from the "tube", and is robustly guided into the region `Xf-Z`.
none
Protting it in a 3-dim fashion with a minus-time axis in the z-direction, you can easily get why we call that "tube". Let me give some important details. The red region `Xc` that contains the pink region `Xc-Z` is the state constraint that we give first. However, considering the uncertainty, the tube-MPC designs the nominal trajectory to be located inside `Xc-Z`, which enables to put "tube" around the nominal trajectory such that the tube is also contained in `Xc-Z`. Of course, the input sequence associated with the nominal trajectory is inside of `Uc-KZ`. If there is no disturbance, putting a terminal constraint `Xf` (set it to Maximum Positively Invariant Set, here) guarantees the stability and feasibility. However, considering the disturbance we have to put the terminal constraint `Xf-Z` instead. Once the terminal constraint `Xf-Z` is satisfied, in spite of the disturbance, the following trajectory will be stable around the origin by LQR feedback without violating any constraints. ## Disturbance invariant set I think one may get stuck at computation of what paper [1] called "disturbance invariant set". The disturbance invariant set is an infinite [Minkowski addition](https://en.wikipedia.org/wiki/Minkowski_addition) `Z = W Ak*W Ak^2*W...`, where denotes Minkowski addition. Obtaining this analytically is impossible, and then, what comes ones' mind first may be an approximation of that by truncation: `Z_approx = W Ak*W... Ak^n*W`. This approximation, however, leads to `Z_approx Z`, which means `Z_approx` is not disturbance invariant. So, we must multiply it by some parameter `alpha` and get `Z_approx = alpha*(W Ak*W... Ak^n*W)` so that `Z Z_approx` is guaranteed. (see `src/LinearSystem.m` for this implementation). The order of truncation and `alpha` are tuning parameters, and I chose values that are large enough. But, if you want to choose them in a more sophisticated way, paper [3] will be useful. Also, `example/example_dist_inv_set.m` may help you understand how disturbance the invariant set works. ## Maximum positively invariant set I used the maximum positively invariant (MPI) set `Xmpi` as the terminal constraint set. (Terminal constraint is usually denoted as Xf in literature). `Xmpi` is computed in the constructor of `OptimalControler.m`. Instead in the tube-MPC, the terminal constraint is set to `XmpiZ` rather than just `Xmpi`, where denotes the pontryagin difference. This operation of robustifies the terminal constraint. # Reference [1] Langson, Wilbur, et al. "Robust model predictive control using tubes." Automatica 40.1 (2004): 125-133. [2] Mayne, David Q., Maria M. Seron, and S. V. Rakovic. "Robust model predictive control of constrained linear systems with bounded disturbances." Automatica 41.2 (2005): 219-224. [3] Rakovic, Sasa V., et al. "Invariant approximations of the minimal robust positively invariant set." IEEE Transactions on Automatic Control 50.3 (2005): 406-410.

近期下载者

相关文件


收藏者