(今天朋友回UCSD了,亲自拍了张照片做封面)。
控制界就喜欢搞三字名词,以至于连不学控制的人都略有耳闻:PID, LQR, MPC, IMC, LMI等等。要说排名前二的,PID绝对是第一,LQR应该能排到第二。今天这篇文章来简要谈谈LQR与其特点。详细的最优控制推导不是我首要想做的事,指明一个思路以及对优缺点的思考才是。未来如果还有时间写最优控制,会再多写几步推导。现在的工具那么多,我们第一要见多识广,第二要知其长短。如今研究者众多,书上的东西都是比较基础的,之后更多的变化就等日后实践与阅读paper来了解了。
其实我开始的时候是把标题取成“LQR-线性二次型调节器”的,不过估计多数人会在后面加个“控制”,所以写成“LQR控制器”让大家都能搜索到吧。知乎中类似的文章有很多,然而真正写的好的文章却寥寥无几,还有很多类似“抛开公式理解xxxx”的科普文章。没有公式,还想从本质上理解,大概是在骗自己——公式已经是最简洁的记录了。
掌握了一种控制设计方法之后,有两种我觉得可以检验优劣的途径:一种是去实践,另一种是看别人的paper如何实践。最好自己有机会去动手实践。看别人的实践也不失为一种好的学习途径,要尤其注意有些作者为了发paper而故意绕开的问题。所以后一种方法也是考验你能不能挑出错误。善于发现问题,不是要你挑人家语法错误,而要重点分析它们解决问题的逻辑是否正确,结果是否与事实符合。
本篇目录:
- 线性二次型最优控制 LQ Optimal Control
- 无限时域LQR Infinite Horizon LQR
- LQR稳定裕度 LQR stability margin
- LQR极限行为 Limitations of behaviourism
- 输出调节器与输出跟踪 Output LQR and Output Tracking
1. 线性二次型最优控制 LQ Optimal Control
我们不必现在深度研究最优控制的求极值技巧(极大值原理,古典变分法与动态规划)。除去求最优控制的技巧,优化控制技术的逻辑很简单:给一个系统,给一个性能函数(performance index, 也叫cost function),求出一个控制序列,使得系统稳定并且性能函数取到极值。至于是取极小值还是极大值,这个取决于求解的问题和性能函数的定义。所以我们来聊聊这个常见的LQR是怎么回事。
Linear Quadratic Regulator, a.k.a, LQR, 是线性二次型调节器的缩写。要说这个LQR,就先得从LQ Optimal Control开始说起。我们研究一个线性时变系统:
定义一个时域连续性能泛函:
是控制起始与终止时间,求一个最优控制时序 使得(1)稳定且(2)取极值,这个问题就是一个LQ Optimal Control Problem.
我们现在就让(2)取极小值吧,考察一下(2)的各项含义:
: 是状态向量,也可以是误差状态向量, 是权重矩阵。由于 我们允许 的特征值为非负, ,即 是semi positive definite 的,我们总有 非负。 衡量了误差 的大小。使用系统状态向量时,可以认为 是与0向量之间的误差。当 最小时,这一项也会要求尽量小。 一般是对角矩阵,对角线上的元素取大于等于0的常值或者时变量,满足最优时误差向量 能够尽可能小。当 是实数时,我们很明显有 ,其非负性和误差大小的衡量作用是很明显的。
: 是控制输入, 和 一样也是权重矩阵。因为我们要求最优控制 的所有时序不全为0,那么任何情况下只要输入不为0, 作为衡量控制消耗项就应该永远大于0,所以有 ,根据定义 即positive definite,是一个正定矩阵. 衡量了control effort,也就是控制所付出的代价。
: 这一项强调了终端误差,当 最小化时,我们就会同时要求 在一定程度上也减小。
在对角线上的每个元素的大小,表示了 的各元素在极小化时的权重,该数越大,期望状态分量误差就越小。一个简单地例子,对于一个3维系统: ,那么第三个状态在极小化中更受到重视,极小化结果应当使得此状态分量误差更小,依次向上递减。从实际的效果来看,大权重的 矩阵能让是状态收敛更快[1,p299],我们下面有解释。所以这也是 半正定的原因了,因为我们可以让某些元素取0,对某些状态不作要求。矩阵 都是同理。
LQ optimal control 是一个finite horizon optimal problem(有限时域优化问题),因为积分的上限是一个有限值,控制任务希望控制器能够在有限时间内把状态转到到零点或者某一个平衡点,保证泛函取极值。在这里就是希望能够在不消耗过多能量的情况下把状态误差保持到最小。这样的控制器也叫 Finite Horizon LQR.
有限时域LQR的求解过程我们这里不追究了,请参考[1,p295]。我们说一下最后解得结果:
其中 是Riccati matrix differential equation的解,是一个real symmetric positive definite matrix,这里不深究了。重要的是,我们发现(3)构成了一个线性状态反馈,只不过反馈增益矩阵是时变的。Finite Horizon LQR的求解比较繁琐,主要是求解 并不容易。
2. 无限时域LQR Infinite Horizon LQR
由于(2)中的积分上限是有限的,最终 总是一个时变值,导致(3)中的增益矩阵也是时变的。我们后来发现,当 时, 能够接近一个常值 。由此启发,我们现在可以对一个线性定常系统:
寻求最优控制使得性能函数:
取得极值。其中 项因为在无穷远处系统状态渐进稳定而必为0,因此可以省略。此时原来 所在的矩阵微分方程变成了Algebraic Riccati Equation(ARE) :
我们有了新的解:
此时控制仍然是一个线性状态反馈,而且反馈增益矩阵还是一个常值矩阵。
采用(5)作为优化性能函数,(7)作为控制律的控制器就是我们常常说的那个无限时域LQR,后来传来传去变成大名鼎鼎、如雷贯耳的“LQR控制器”了。实际上“R”就是Regulator的意思,所以LQR控制器,LQR control的说法其实都有点不太准确。不过无所谓了,盛名在外,不拘小节。
关于Infinite Horizon LQR的几点注意事项:
- LQR显然是同时适用于SISO和MIMO系统的一种控制器。它的实质与状态反馈没有什么差别,只不过通过了优化性能函数得到一组此意义下的最优增益矩阵。所以说上一篇文章中的MIMO反馈增益即可以通过Pole-Placement,也可以通过LQR配置。
- Infinite Horizon LQR只适用于线性系统,并且要求系统是能控的。因为如果系统不能控, 项在无限时域中最后是不会收敛的,所有 都会使得整个积分(2)都会成为无穷大,没有优劣可比。Finite Horizon LQR是没有关系的,因为 肯定是有界的。
- (4)和(7)构成了一个闭环LTI系统,且闭环系统特征值实部均为负,即渐进稳定。
- LQR所采用的是静态增益矩阵 ,所以闭环系统的阶数并不会变化。
- 如果 或者 observable ,两个条件满足一个才能保证闭环系统的是渐进稳定的,(证明见[9,6-6]);
3. LQR稳定裕度/鲁棒性 LQR Robustness / stability margin
我们来看看Inifite Horizon LQR的鲁棒性,in this context, I mean stability margin, 稳定裕度。我们在经典控制部分就讲过,稳定裕度也是一种鲁棒性的表现,体现了系统的输入增益和相位发生变动时,系统是否依然能够保持稳定性。
我们考虑幅值裕度(GM),是衡量系统增益放大多少倍会造成系统的不稳定。假设我们已经通过LQR设计出了反馈控制律(7),即 . 我们把反馈律(7)代入(4),
(8)的闭环稳定性是已经证明可以保证的(通过Lyapunov function ,不打算细说)。如果 增益矩阵发生了变化,稳定性如何? 假设 的秩为 ,我们考虑一个 对角矩阵:
是每一个输入通道上的额外增益。所以加入后整个闭环系统变成了:
其中 。让我们考虑一个Lyapunov function ,只要它对时间导数负定,或者 非取原点时半负定,那么系统就是渐进稳定的,于是我们发现如果
那么就有:
有一个充分条件可以让我们满足(11),即
让我们考虑 是一个正定对角矩阵: ,那么就有
这表明,Infinite Horizon LQR各输入通道具有infinite gain margin(无穷大的增益裕度,意思是再怎么放大增益都能保持稳定),并且可以承受1/2的增益衰减, 50% gain reduction (即各通道增益如果减半,依旧可以保持稳定)。
LQR各通道输入的相位裕度(PM)可以被证明至少是 。这个“至少”我没有调查过为什么,我看了[2]中假定了 的形式才得出来刚好60度的结论,猜想应该是由于 的形式。Anyway,可以证明输入 各通道相位变化正负 之内,原LQR系统依旧能够保持稳定。
关于这个矩阵 ,我们可以理解为一个单独的信号处理模块。我们关心的是,原来的反馈信号 在通过 之前,如果发生了幅值和相位上的perturbation(轻微的扰动),系统是否仍然能够稳定。所以我们上面假设的(9),是把 认为是一个模块,其频率特性满足:相位不变,幅值变化 。因为我们只是给了 个实数,并没有任何相位上的变化,实际上是一个频率特性为: 。那么如果我们考虑每个输入分量 都通过一个模块 ,其频率特性为 ,这样每个反馈输入的相位都会发生 的偏移。可以证明,对于Infinite Horizon LQR,反馈信号可以承受 的相角变化。这个PM在实际工程中已经非常nice了。
不仅如此,[2]中已经证明了一般的线性时变系统(1)也同样满足,当 是正定对角矩阵,增益裕度GM: ,并且相位裕度PM满足 。所以Finite Horizon LQR也拥有同样好的robustness。
4. LQR极限行为 Limitations of behaviourism
关于LQR的极限行为我们已经在第11篇文章中已经讨论过一次:
其实如果你在学习统计机器学习,你对LQR的性能函数和这几项二次型函数不会感到陌生。 不过就是这两项的“惩罚”权重。对于学过控制理论的人来讲,一切都很熟悉也很容易理解。
我们这里再简单说一说:
当 中的权重值远远大于 ,说明此时控制相当廉价(control is cheap)。我们不必控制control effort的大小,因为我们更关注状态误差的收敛速度和大小。此时增益无限制,系统响应速度大。根据根轨迹的性质,增益无穷大时,poles只有两个去处:不是open-loop zeros,就是去了无穷远处。LQR保证最后极点都会在Left Half Plane,因为不稳定的RHP open-loop zero也会被镜像到LHP。其他多余的几条根轨迹会以Butterworth pattern前往无穷远:
The Butterworth pattern refers to an arc in the stable left-half plane, as shown in the figure. The angular separation of n closed-loop poles on the arc is constant, and equal to 180/n. An angle 90/n separates the most lightly-damped poles from the imaginary axis.
当 中的权重值远远小于 ,说明此时控制相当昂贵(control is expensive)。我们必须控制control effort的大小。此时为了节省控制力,我们保留原来开环系统的stable poles位置不变,而后直接把unstable poles通过虚轴镜像为stable poles。如果原来开环就是稳定的,那么增益此时几乎为0,也就是啥事都没干。如果开环还有不稳定的极点,那么LQR将以最小的增益把unstable pole直接镜像。
5. 输出调节器与输出跟踪 Output LQR and Output Tracking
为了形式简洁,我们暂时不考虑把前馈控制量 给考虑进去(其实MATLAB的lqr命令是考虑了的)。考虑我们使用 或者替代(2)中的 :
可以证明 仍然是半正定矩阵。所以我们依旧可以解得最优状态反馈(3),只不过Riccati方程中的矩阵变了。换汤不换药,注意虽然用的输出 ,但得到的仍然是状态反馈。状态反馈的包含的信息更多,优于输出反馈,我们已经说过了。此时选择对应的 ,LQR能够使得输出 的值,终端条件以及control effort在一定平衡之下取到最优。Finite horizon case也是同理的,详见参考资料。当然要注意满足 是observable的,否则有些状态不会受到性能函数约束。
输出跟踪器的实现稍微有点复杂,finite horizon case可以参考[1,p306]. 我们令 ,用 替代原来(2)中的 ,可以求得最优控制使得输出 在finite horizon 中最优跟踪参考信号 。与输出调节器不同的是,输出跟踪器的最优控制理论上是要知道参考信号 的过去和未来全部信息的,即只有完全掌握参考信号才能计算出所谓的最优。但是我们知道往往 会是一个不可准确估计的信号,所以说猜测未来 的走向,无论是直接预判还是采用随机理论,都只能得到一定程度上的近似最优。而定常系统的infinite horizon case,可以用finite horizon case令 取一个较大的值来,来近似得到一个最优控制。这里的近似有两个含义,一个是finite horizon本身可能因为 的信息缺失就只能得到近似解,第二是finite horizon中 不能到达无穷,只能取较大值来近似。
能控能观的LTI系统, ,近似最优控制:
其中 满足:
其实LQR的解不光光能让我们得到最优的控制 ,也能让我们得到最优轨迹 ,这个最优性也是基于所选的性能泛函的。根据生成的轨迹,我们可以对一个系统(可能是非线性的)定义它对应的误差动力学方程,线性化后设计反馈增益令它local stabilization。下面Murray的这张slide展示了这一做法[7]:
这里需要使用gain scheduling, 增益调度,即根据不同的线性化点设计不同的反馈增益 。实际上就是在轨迹上取很多个点作为线性化的点,然后让系统在轨迹上不同点处有不同的增益,使得系统在这些点都能够实现 ,从而实现一种局部的跟踪。
6. 在LQR中实现积分控制 Achieving Integral Action in LQR Synthesis
这一块的内容来自[8,p693],实际上我们之前将积分控制和内模原理的时候已经都讲过了:我们可以添加定义额外的变量 ,把它加入原来的系统设计闭环反馈来实现系统的升阶,让闭环系统稳定迫使系统的状态全部趋近与0,于是误差被消除。当然我们也说过了最简单的积分控制只能处理阶跃和常值信号,其他复杂一点的就要根据IMP取设计了。详见之前的文章吧。我们看到,LQR实质上是一种设计反馈增益矩阵 的方法,所以LQR与积分控制和基于IMP的控制器结合是很自然的事情。
总结
这里已经基本上把LQR的要点都提到了。关于一些工业界的应用,以及最新的关于data-driven LQR之类的请阅读paper。只要有了LQR的基础知识,再去阅读最新的研究就不会两眼一抹黑,什么都看不懂了。
LQR控制的优点就在于设计便利,适用于MIMO系统,学习曲线也不陡,通过几个矩阵来控制稳态性能和控制花费,并且拥有极好的鲁棒稳定性能。其缺点在于二次型性能指标实际中并非每个场景都是一个理想的指标;只适用于线性系统,不过可以设计局部线性化控制器;控制的对性能函数的最优性对模型参数的准确度要求很高;该性能指标对于响应的瞬态不好直接建立关系来控制。
关于这部分的知识在MATLAB中早就已经有了关于求解LQR的命令:lqr, lqry, dlqr,lqi等等。lqr是对应Infinite horizon LQR, lqry对应的Infinite horizon LQ state-feedback regulator with output weighting, dlqr是对应discrete system, lqi是LQR with integral control。更多功能,等你发现。
参考文献 Reference
[1] 刘豹 唐万生,现代控制理论(第三版),2006, 机械工业出版社
[2] Safonov, M., & Athans, M. (1976).Gain and phase margin for multiloop LQG regulators. 1976 IEEE Conference on Decision and Control Including the 15th Symposium on Adaptive Processes.doi:10.1109/cdc.1976.267760
[3] Xue, D., Chen, Y., & Atherton, D. P. (2007).Linear feedback control: analysis and design with MATLAB(Vol. 14). Siam.
[4] Random assortment of things
[5] Positive Definite https://en.wikipedia.org/wiki/Definiteness_of_a_matrix
[6] MIT lecture note: Note 1, Note 2
[7] Caltech CDS 110b Lecture Notes:http://www.cds.caltech.edu/~murray/courses/cds110/wi08/L3-1_lqr.pdf
http://www.cds.caltech.edu/~murray/courses/cds110/wi06/L2-1_LQR.pdf
[8] Goodwin, G. C., Graebe, S. F., & Salgado, M. E. (2001).Control system design. Upper Saddle River, NJ: Prentice Hall.
[9] Lecture Note: http://jitkomut.eng.chula.ac.th
评论(0)
您还未登录,请登录后发表或查看评论