第二篇博文推了太久,时间都用来学数据结构和算法,控制专业最大的问题在于很多人只会使用Matlab/Simulink, 不懂数据结构和算法不会写代码,幸亏我认清形式比较早,希望学控制的同学们多写代码,什么时候能用C/C++写出各种数值优化算法的代码才好找工作啊,光懂理论无法C++实现都是扯淡。

言归正传,一般博士面试第二次面试都是考验一下候选人的学术能力。所以第二次面试教授主要是考验我对上个博客中提到的那篇论文的稳定性的理解和评估. 这篇博客主要结合面试来对模型预测控制的稳定性进行一次总结, 纯理论分析对于真实的自动驾驶MPC效果尚未可知。

我们以线性系统作为例子, 假设线性系统的方程为
x+=Ax+Buy=Cx+Dux^{+} = A x + Bu \\ y = Cx + Du x+=Ax+Buy=Cx+Du
输入量和状态量都存在线性约束

LQR控制一般是针对infinite horizon 的, 优化问题定义如下
J∞(x)=minx,u∑i=0∞xiTQxi+uiTRuis.t.xi+1=Axi+Buix0=xJ^{\infty}(x) = min_{x, u} \sum_{i = 0}^{\infty}x^{T}_{i}Qx_{i} + u_{i}^{T}Ru_{i} \\ s.t. x_{i+1} = Ax_{i} + Bu_{i} \\ x_{0} = x J∞(x)=minx,u​i=0∑∞​xiT​Qxi​+uiT​Rui​s.t.xi+1​=Axi​+Bui​x0​=x
MPC优化问题一般定义如下:
J∗(x)=minx,u∑i=0N−1xiTQxi+uiTRuis.t.xi+1=Axi+Buix0=xCxi+Dui≤bJ^{*}(x) = min_{x, u} \sum_{i = 0}^{N-1}x^{T}_{i}Qx_{i} + u_{i}^{T}Ru_{i} \\ s.t. x_{i+1} = Ax_{i} + Bu_{i} \\ x_{0} = x \\ Cx_{i} + Du_{i} \leq b J∗(x)=minx,u​i=0∑N−1​xiT​Qxi​+uiT​Rui​s.t.xi+1​=Axi​+Bui​x0​=xCxi​+Dui​≤b
假设Q=QT≥0Q=Q^{T} \geq 0Q=QT≥0, R=RT≥0R=R^{T} \geq 0R=RT≥0
对于线性MPC我们一般都把上述问题转换为二次规划(QP)问题去求解。
然后我盗用一下经典模型预测控制教材 Predictive Control with Constraints里面的Cessana Citation Aircraft的例子

当飞机处于5000m高空,速度为128.2 m/sec的时候,我们可以使用如下的连续的状态方程
x˙=[−1.282200.9800010−5.42920−1.83660−128.2128.200]x+[−0.30−170]u\dot{x} = \begin{bmatrix} -1.2822&0&0.98&0 \\ 0&0&1&0\\ -5.4292&0&-1.8366&0 \\ -128.2&128.2&0&0 \end{bmatrix} x + \begin{bmatrix} -0.3 \\ 0 \\ -17 \\ 0 \end{bmatrix}u x˙=⎣⎢⎢⎡​−1.28220−5.4292−128.2​000128.2​0.981−1.83660​0000​⎦⎥⎥⎤​x+⎣⎢⎢⎡​−0.30−170​⎦⎥⎥⎤​u
y=[01000001]xy = \begin{bmatrix} 0 & 1 &0&0 \\ 0&0&0&1 \end{bmatrix}x y=[00​10​00​01​]x
该系统的输入量为升降舵偏转角 Input: elevator angle
状态量:

  • x1x_{1}x1​: angle of attack
  • x2x_{2}x2​: pitch angle
  • x3x_{3}x3​: pitch rate
  • x4x_{4}x4​: altitude

输出量:

  • pitch angle
  • altitude

输入和状态约束:

  • elevator angle ±0.262\pm0.262±0.262 rad(±15∘\pm15^{\circ}±15∘)
  • elevator rate ±0.524rad(\pm0.524 rad(±0.524rad(±15∘\pm15^{\circ}±15∘)
  • pitch angle ±0.349rad(\pm0.349 rad(±0.349rad(±30∘\pm30^{\circ}±30∘)
    该开环系统是不稳定的
    开环极点分别为0,0,−1.5594±2.0900i0, 0, -1.5594\pm2.0900i0,0,−1.5594±2.0900i

第一种情况如下图所示:使用LQR控制器, 同时限制输入, t = 0的时候,飞机比期望的高度要高10m, 也就是说初始状态值为x(0)=[0;0;0;10]x(0) = [0;0;0;10]x(0)=[0;0;0;10]. 采样时间Ts=0.25secT_{s}=0.25 secTs​=0.25sec, Q=IQ=IQ=I, R=10R=10R=10,


闭环系统是不稳定的,也就是说当我们使用LQR控制器并且限制控制器的输出范围会导致不稳定

第二种情况我们使用MPC控制器同时使用限制输入∣ui∣≤0.262|u_{i}| \leq 0.262∣ui​∣≤0.262 , 采样时间Ts=0.25sec,T_{s}=0.25sec,Ts​=0.25sec,, Q=IQ=IQ=I, R=10R=10R=10, 预测步长N=10N=10N=10
在设计MPC控制器的时候我们考虑了输入约束,但是没有考虑输入变化率的约束, 最终系统邓等幅震荡(converge to steady state but to a limit cycle)

第三种情况,我们依旧使用MPC控制器, 我们依旧考虑输入约束∣ui∣≤0.262|u_i| \leq 0.262∣ui​∣≤0.262, 此外我们考虑之前没有考虑输入变化率约束u˙i≤0.349\dot{u}_i \leq 0.349u˙i​≤0.349, 学成离散形式为uk−uk−1≤0.349Tsu_k - u_{k - 1} \leq 0.349T_suk​−uk−1​≤0.349Ts​, u−1=uprevu_{-1} = u_{prev}u−1​=uprev​, 采样时间Ts=0.25secT_{s}=0.25secTs​=0.25sec, Q=IQ=IQ=I, R=10R=10R=10, N=10N=10N=10
我们可以看出来在这种情况下, MPC考虑所有的执行器约束, 闭环系统是稳定的

第四种情况我们改变一下初始值, 初始高度已经提升到100m了,也就是说x(0)=[0;0;0;100]x(0)=[0;0;0;100]x(0)=[0;0;0;100]
在动态过程中Pitch angle出现了巨大的数值,如果我们添加状态约束的话,动态过程中的状态约束很容易不满足
第五种情况 , 之前我们只考虑了输入约束没有考虑状态约束,下面我们添加状态约束,提高飞机乘客的舒适度∣x2∣≤0.349|x_{2}| \leq 0.349∣x2​∣≤0.349
第六种情况 我们不考虑状态约束,但是我们减少预测步长改为N=4N=4N=4
我们发现减小预测步长会导致输出不稳定。
这些例子说明了一个道理,标准的MPC是有问题的。
Apollo 里面用的就是Standard MPC, 这样的模型预测控制会有什么样的问题了,控制中有两个重要特性使用这一种MPC是无法保证的

  1. No feasibility guarantee: MPC问题可能会没有解
  2. No stability guarantee: 轨迹可能没法收敛到原点

为了证明MPC控制的稳定性, 我们来定义一下Feasible Set

The feasible set XNX_{N}XN​ is defined as the set of initial states x for which the MPC problem with horizon NNN is feasible, i.e.
XN:={x∣∃[u0,…,uN+1]s.t.Cui+Dxi≤b,i=1,…,N}X_{N} := \{ x | \exists [u_{0}, \dots, u_{N + 1}] ~s.t. ~Cu_{i} +Dx_{i} \leq b, i = 1, \dots, N \}XN​:={x∣∃[u0​,…,uN+1​] s.t. Cui​+Dxi​≤b,i=1,…,N}
就是说对于一些初始状态,我们选择一系列输入,根据系统的状态方程去计算后续状态,其在预测步长内的状态和输入都不会超出我们规定的范围

我们考虑如下的双积分系统
x+=[1101]x+[01]x^{+} = \begin{bmatrix} 1&1\\ 0&1 \end{bmatrix}x + \begin{bmatrix} 0 \\ 1 \end{bmatrix} x+=[10​11​]x+[01​]
状态约束[−5−5]≤x≤[55]\begin{bmatrix} -5\\-5 \end{bmatrix} \leq x \leq \begin{bmatrix} 5 \\ 5\end{bmatrix}[−5−5​]≤x≤[55​]
输入约束−0.5≤u≤0.5-0.5 \leq u \leq 0.5−0.5≤u≤0.5
预测步长N=3N=3N=3,
状态惩罚矩阵Q=[1001]Q = \begin{bmatrix} 1&0 \\ 0 & 1\end{bmatrix}Q=[10​01​]
输入惩罚系数 R=10R=10R=10
我们使用标准形式的MPC会出现什么情况:

Time step 1 : x(0)=[−4;4],u0∗(x)=0.5x(0) = [-4;4], u^{*}_{0}(x) = 0.5x(0)=[−4;4],u0∗​(x)=0.5
Time step 2: x(0)=[0;3],u0∗(x)=−0.5x(0) = [0;3], u^{*}_{0}(x) = -0.5x(0)=[0;3],u0∗​(x)=−0.5
Time step 3 : $x(0) = [3;2], MPC优化问题没解啦
我们再来看一个例子, 我们有一个不稳定系统
x+=[2100.5]x+[10]x^{+} = \begin{bmatrix} 2&1\\ 0&0.5 \end{bmatrix}x + \begin{bmatrix} 1\\ 0 \end{bmatrix} x+=[20​10.5​]x+[10​]
状态约束[−10−10]≤x≤[1010]\begin{bmatrix} -10\\-10 \end{bmatrix} \leq x \leq \begin{bmatrix} 10 \\ 10\end{bmatrix}[−10−10​]≤x≤[1010​]
输入约束−1≤u≤1-1 \leq u \leq 1−1≤u≤1
状态惩罚矩阵Q=[1001]Q = \begin{bmatrix} 1&0 \\ 0 & 1\end{bmatrix}Q=[10​01​]
下面我们使用不同输入惩罚矩阵RRR和不同的预测步长NNN, 求解标准MPC控制问题
(1) R=10,N=2R=10, N = 2R=10,N=2
(2) R= 2, N = 3

(3) R = 1, N = 4

普通形式的MPC既会导致不稳定又有可能求不到解,那我们怎么办了:
我们改变MPC的优化问题
Introduce terminal cost and constraints to explicitly ensure stability and feasibility:

J∗(x)=minx,u∑i=0N−1xiTQxi+uiTRui+xNTPxNs.t.xi+1=Axi+Buix0=xCxi+Dui≤bxN∈Xfx0=xJ^{*}(x) = min_{x, u} \sum_{i = 0}^{N-1}x^{T}_{i}Qx_{i} + u_{i}^{T}Ru_{i} + x_N^TPx_N \\ s.t. x_{i+1} = Ax_{i} + Bu_{i} \\ x_{0} = x \\ Cx_{i} + Du_{i} \leq b \\ x_N \in X_f \\ x_0 = x J∗(x)=minx,u​i=0∑N−1​xiT​Qxi​+uiT​Rui​+xNT​PxN​s.t.xi+1​=Axi​+Bui​x0​=xCxi​+Dui​≤bxN​∈Xf​x0​=x
其中xNTPxNx_N^{T}Px_{N}xNT​PxN​被称为终端代价(Terminal Cost), xN∈Xfx_N \in X_fxN​∈Xf​被称为终端约束, 那么问题来了,怎么求PPP和XfX_fXf​ 才能保证MPC算法是稳定的


待续

模型预测控制Paolo Falcone 博士面试 (二) - MPC控制的稳定性相关推荐

  1. 《无人驾驶车辆模型预测控制》之基于动力学的MPC设计

    目录 写之前的话: 1. 车辆模型的建立 2. 车辆模型的线性化 ​ 3. 车辆模型离散化 4. 预测模型的建立 5.目标函数及约束 写之前的话: 前面我写到一些列的文章: <无人驾驶车辆模型预 ...

  2. 模型预测控制(Model predictive control,MPC)

    模型预测控制( MPC ) 是一种先进的过程控制方法,用于在满足一组约束条件的同时控制过程.自 1980 年代以来,它一直在化工厂和炼油厂的加工工业中使用.近年来,它还被用于电力系统平衡模型[1]和电 ...

  3. 【控制control】机器人运动控制器----基于模型预测控制MPC方法

    系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 TODO:写完再整理 文章目录 系列文章目录 前言 一.模型预测控制(MPC)的介绍及构成 1.介绍 2.构成 二.模型 ...

  4. 无人驾驶运动控制(二):模型预测控制

    1.引言 模型预测控制是目前控制领域研究的热点,本文将简要介绍模型预测控制的基本概念.特点.研究范围,并推导基于状态空间方程的控制量模型预测控制.控制增量模型预测控制的数学公式. 2.模型预测控制概念 ...

  5. 当模型预测控制遇见机器学习

    喻超 深蓝学院 作者简介: 作者喻超,加拿大滑铁卢大学在读博士,主要研究方向:基于机器学习的模型预测控制技术,及其在车辆动力学.自动驾驶规划和控制领域的应用,硕士毕业于上海交通大学,拥有8年电动汽车控 ...

  6. 干货文稿|当模型预测控制遇见机器学习

    本文来自深蓝投稿作者喻超.加拿大滑铁卢大学在读博士,主要研究方向:基于机器学习的模型预测控制技术,及其在车辆动力学.自动驾驶规划和控制领域的应用,硕士毕业于上海交通大学,拥有8年电动汽车控制系统开发工 ...

  7. 自动驾驶之无人驾驶车辆与模型预测控制

    无人驾驶车辆 无人车辆( Unmanned Vehicle),根据其行驶环境的不同,可以分为空中无人机( Unmanned Aerial Vehicle).水面无人艇( Unmanned Surfac ...

  8. 【控制】模型预测控制 model predictive control 简介

    目录 模型预测控制的一点笔记和看法 1 [控制]模型预测控制 model predictive control 简介 2 [控制]模型预测控制,公式推导,数值仿真,有程序有图 文章目录 1 模型预测控 ...

  9. python路线寻优_使用模型预测控制和PID实现自动驾驶的车道保持

    本文为 AI 研习社编译的技术博客,原标题 : Lane keeping in autonomous driving with Model Predictive Control & PID 作 ...

  10. MPC模型预测控制(二)-MATLAB代码实现

    update:MPC的QQ群 第一个群已经满500人(贫穷使我充不起鹅厂会员),这是第二个群. 群都满了. https://blog.csdn.net/tingfenghanlei/article/d ...

最新文章

  1. 华人世界——客家足迹行
  2. dos2unix install on mac_mac2019新品唇釉来啦!MAC有色唇油试色
  3. 解读刘强东关于人才的两个标准和5个层次
  4. 电子技术学习实践DIY
  5. 在现有的python环境下创建另一个python版本【亲测有效】
  6. 7-6 列出连通集 (25 分)(C语言实现)
  7. ADHD-注意力缺陷多动症
  8. 计算机动漫设计VR主要学什么,VR动漫制作怎么学?
  9. elementui 弹窗 显示详细信息_ElementUI中el-table双击单元格事件并获取指定列的值和弹窗显示详细信息...
  10. 解决scrapy不执行Request回调函数callback
  11. ElasticSearch全文搜索引擎之查询API操作详解
  12. 三级计算机等级2021年9月考试准考证下载步骤
  13. Python 和Java 哪个更适合做自动化测试?
  14. 让PPC手机增加自动对时功能
  15. Instrument使用总结
  16. CDH添加ELASTICSEARCH服务elasticsearch-cdh-parcels
  17. history 路由 vs hash 路由 vs location.href 实现跳转
  18. 如何用课件制作工具演示长方形展开动画
  19. [新闻观察]中国网络“名人博客”风声水起
  20. linux基础知识ppt下载,《Linux基础知识》PPT课件.ppt

热门文章

  1. java的学习--第一章 java基础入门
  2. 企业微信如何借助企客加运营私域流量的策略
  3. python 更新pip镜像源
  4. 大麦盒子 Android4.4,大麦盒子DM4036机顶盒刷安卓系统教程
  5. c语言 面试前必备基础知识
  6. Apollo.Photonics.FOGS.BG.v3.2(以Bragg光栅原理为基础建立的一款光纤设备模拟及优化软件)
  7. c语言实现生成彩票随机号
  8. Vue在线预览word
  9. Android 圆形进度条控件
  10. PHP TCPDF导出支持中文的pdf