最近在学H∞鲁棒控制,因为后面项目中可能要用到此控制方法,所以提前进行了学习,刚开始接触感觉看不太懂,涉及的数学专业知识较深,而且网上资料也比较零星且局限,摸爬了好几天才搞懂了点,现自己总结了下方便后面回顾。
以下内容不涉及过多理论底层知识,更多的是如何上手使用,如何设计控制器。
0. H∞控制概念
H∞控制是专门针对一类不确定性系统的控制方法,用来削弱外部扰动带来的影响,本质也是状态反馈,通过设计一个状态反馈矩阵K使闭环系统稳定的同时,让外部干扰对系统期望输出影响最小。
H∞控制属于鲁棒控制问题中的一种,H∞的∞是无穷范数的意思,即扰动传递函数的无穷范数最小,也即最大幅值最小。
应用场景:H∞控制的由于其具有较强的鲁棒性,对于那些参数大范围变化、模型动态不确定及非线性严重的对象,特别适应,因而在飞行控制系统中得到了广泛的应用。
1. 标准H∞控制
H∞控制的所有问题(收敛控制、跟踪控制)均可转化为标准H∞控制框图,通过构造广义矩阵,然后求解LMI不等式或者Riccati方程得到的控制器K。
2. 状态反馈H∞控制
当系统的状态变量可以获得时,常采用状态反馈H∞控制。
状态反馈控制分为标准状态反馈H∞控制、次优状态反馈H∞控制、最优状态反馈H∞控制三种,本质是求解LMI不等式矩阵得到的控制矩阵K。三种控制器的LMI不等式矩阵基本一样,只是某几项多乘个系数。这里直接给出三种状态反馈H∞控制的LMI不等式矩阵:
标准状态反馈H∞控制:
次优状态反馈H∞控制:
最优状态反馈H∞控制:
LMI不等式矩阵可利用matlab的LMI
工具箱定义,然后再利用LMI求解函数feasp、mincx
函数即可求得控制矩阵K
。对于使用上面来说,状态反馈控制器设计需要自己定义LMI不等式,较麻烦一些,而输出反馈控制matlab封装了现成的函数,无须自己定义LMI,更为方便。
3. 输出反馈H∞控制
当系统的状态变量不可获得时,可采用输出反馈H∞控制。
本质是设计具有状态空间形式的控制器K,输出反馈LMI不等式相比状态反馈要复杂些,自己定义的话要更麻烦,不过好在matlab有封装好的函数直接调用即可。简单说一下底层原理,由于输出反馈的LMI不等式矩阵中包含了未知的控制器参数,所以无法直接定义LMI矩阵,需要使用消元法和变量替代法消去,最终的LMI不等式如下:
看上去是复杂不少哈,不过可以通过定义广义矩阵P,然后直接调用matlab库函数hinflmi
进行求解即可,可太方便了。
注:仿真结果这里只放输出反馈H∞的次优控制了,不然篇幅有点长,状态反馈和输出反馈扰动抑制效果都挺好的。以下图片是二阶倒立摆在具有外部正弦扰动的情况下输出反馈H∞控制器的控制效果,可以看到,摆角和位移在初始状态(1,1)的情况下最终均收敛至零,控制效果良好,达到了扰动抑制的效果。
4. H∞/H2混合控制
即多目标优化问题,让扰动不仅满足H∞范数的指标,还要让扰动满足H2范数的指标。
同样,matlab还是提供了现成的库函数hinfmix
可以直接调用,不过在调用之前需要定义广义矩阵P和将系统极点配置在LMI区域,求解之后可得到控制矩阵K,该控制器能使得总性能指标最小化。
5. 混合灵敏度H∞控制
混合灵敏度控制主要是针对跟踪控制问题进行求解,而前两种控制主要是做收敛控制用的。混合灵敏度以跟踪、抗干扰指标作为目标函数,既考虑了系统模型不确定性的鲁棒跟踪问题,又考虑了对干扰的抑制效果。
混合灵敏度控制的概念有点绕,简单说一下就是,W1对跟踪误差e评价,W2对控制器输出u评价,W3对模型输出y评价,让三者的值均小于某个指标。
常见的鲁棒H∞混合灵敏度问题主要分为 S/T 问 题、S/KS 问题及 S/KS/T 问题三种形式。其中,灵敏度函数 S :d–>y 的传递函数,表征系统抗干扰能力,灵敏度S越接近0越好。补灵敏度函数 T :r->y的传递函数,表征系统的跟踪性能和噪声对系统的影响,T越接近1越好。
在目前的文献调研中,发现有两种解决思路,一种是将跟踪问题转化为标准H∞控制框图得到广义矩阵P,然后对其进行Riccati方程的求解;另一种是直接调用matlab库函数mixsyn
,该方法无须求解广义矩阵,直接根据标称矩阵设计权函数得到控制矩阵K。第一种思路对于系统单输入单输出的话矩阵维度没问题,如果是多输入多输出矩阵维度感觉有些问题,暂时还没找到解决办法。第二种的话目前看来只适用于系统输入个数=输出个数的情况,如果个数不相等的话也有点问题。
以下是第二种方法得到的仿真结果,模型为二阶常规模型,参考指令为正弦指令,扰动为在第2s时有个阶跃扰动,只能说控制效果还行。
注:权函数的选择相当重要,权函数的选择决定了控制效果的优劣。经过目前的总结,选取规则如下:
- W1 应选择控制带宽内较大的W1,应低通
- W2 设为空矩阵表示不对控制输入限幅,或设为一个小的数
- W3 应选择控制带宽外较小的W3 应高通,并且是被控对象加性或者乘性不确定的上界,从而优化求解得到的控制器可以在理论上保证鲁棒稳定性的要求
- W1的截止频率小于W3的截止频率
- % |dcgain| > mag > |hfgain| for a low-pass weight
% |dcgain| < mag < |hfgain| for a high-pass weight
5.1 一种简化的混合灵敏度H∞控制
引用某篇文献中的一段话,“采用H∞控制的混合灵敏度控制策略可直接对闭环传递函数( 如S和T) 的增益进行成形,这是一个H∞优化问题,由于设计中需要选择权函数,设计者不得不进行反复迭代和大量的演算以积累实际经验,无捷径可走,甚至有文献称权函数的选择方法及参数调整是一门艺术”。由此可见,权函数的选择实在是太过于繁琐,对设计者进行控制器设计带来了巨大的麻烦,因此一种简化了的H∞控制混合灵敏度方法诞生了,该方法无须设计任何权函数,直接设计出矩阵K。
应用此种方法可直接得到控制矩阵K,采用这种方法进行仿真,得到的控制效果如下图所示,可见控制效果非常好。将其与标准H∞混合灵敏度控制进行对比,显而易见,此方法不仅跟踪效果更好,还避免了反复尝试不同的权函数,方便还好用。
不过该方法也存在些问题,同样的只适用于系统输入个数=输出个数的情况,对于个数不相等的情况,控制器参数也不好求解。
6 总结与展望
- 状态反馈和输出反馈都需要自己定义外部扰动,而混合灵敏度控制不需要自定义扰动。
基于以上结论,初步完成了H∞状态反馈、输出反馈、H∞/H2混合控制、混合灵敏度控制器设计,能够完成对系统的收敛与跟踪控制,控制效果良好。其次针对混合灵敏度控制的权函数选择过于繁琐的问题,提出了一种简化的混合灵敏度H∞控制,该方法好处在于无须求解权函数,直接设计控制矩阵K,且控制效果更好。坏处在于,仅适用于系统输入个数=输出个数的情况。
后续改进之处有:
- 目前收敛控制问题已得到解决,跟踪控制的系统输入个数=输出个数也得到了解决,但当需要设计系统输入个数不等于输出个数的跟踪控制问题时,应该怎么办?
参考文献
[1] 鲁棒控制——线性矩阵不等式处理方法[M]. 俞立. 清华大学出版社
[2] 李阳,李树民. 基于LMI的输出反馈H∞控制及其仿真[J]. 战术导弹技术,2004(5):44-48. DOI:10.3969/j.issn.1009-1300.2004.05.011.
[3] 甘童辉. 基于鲁棒H∞控制理论的实时混合模拟试验研究[D]. 江苏:东南大学,2022.
[4] 博客——H无穷控制学习笔记——H无穷控制
[5] 博客——H无穷控制