
上篇聊了自适应控制在线估计参数、实时调整控制器让系统适应变化。思路很好但落地有难度——稳定性证明复杂收敛条件苛刻对未建模动态敏感。有没有更暴力的方案不在线调参数了直接设计一个足够强壮的控制器不管参数怎么变、扰动怎么来都能hold住。这就是鲁棒控制的思路。鲁棒控制的核心问题系统模型不精确甚至有未建模的动态怎么设计一个控制器保证闭环系统在所有可能的不确定性下都稳定而且性能不低于某个水平一、不确定性建模你知道自己不知道什么鲁棒控制的第一步是量化不确定性。你得先搞清楚模型到底哪里不准才能设计对付不准的控制器。不确定性主要分两类参数不确定性模型结构对但参数有误差。比如机械臂的质量m标称值是5kg实际可能是4.5-5.5kg。这种不确定性用参数区间描述m 5 /- 0.5。未建模动态模型结构本身就不对。比如你用一个二阶模型去近似一个实际的五阶系统高频动态被你忽略了。这种不确定性用频率域描述在高频段模型误差可能达到100%。工程中最常见的做法是把不确定性建模为标称模型 乘性/加性摄动实际系统 P P_nominal * (1 Delta(s))其中P_nominal是标称模型你用来设计控制器的那个模型Delta(s)是摄动函数描述实际系统和标称模型的偏差。Delta(s)通常用一个上界函数W(s)来约束|Delta(jw)| |W(jw)|对所有频率w成立。W(jw)越大说明这个频率上模型越不准。讲真不确定性建模是鲁棒控制最难的部分。模型准不准、误差有多大、在哪些频率上误差大这些都需要系统辨识和工程经验。很多鲁棒控制方案效果不好不是因为控制器设计得差而是因为不确定性建模不准。二、H-infinity控制最坏情况下的最优H-infinityH无穷控制是鲁棒控制的代表方法。核心思想在最坏情况的不确定性下最小化从扰动到输出的传递函数的H-infinity范数最大增益。翻译成人话不管扰动和不确定性怎么恶意地组合控制器都要把输出的最大偏差压到最小。H-infinity范数的物理意义传递函数G(s)的H-infinity范数等于其频率响应的最大幅值。||G||_inf max_w |G(jw)|。这个值越大说明系统对某个频率的正弦输入的放大倍数越大。H-infinity控制的设计目标min_K ||T_zw||_inf其中T_zw是从扰动w到被控输出z的闭环传递函数K是控制器。优化目标是让这个传递函数的最大增益尽可能小。和LQR/LQG对比LQR最小化的是二次代价函数能量意义上的平均性能H-infinity最小化的是最坏情况下的峰值性能。LQR是平均好H-infinity是最差也好。H-infinity控制的求解涉及两个Riccati方程一个控制Riccati一个滤波Riccati形式和LQG类似但多了一个gamma参数——你期望的最坏情况性能上界。gamma越小性能要求越高Riccati方程越难有解。存在一个最小的gamma当gamma gamma时Riccati方程有解控制器存在。工程上通常用bisection二分法来搜索最小的gamma*先设一个大的gamma看Riccati方程有没有解有解就减小gamma再试没解就增大gamma。反复迭代直到找到临界值。MATLAB的hinfsyn函数内部就是这么干的。和LQR对比一下你就更清楚了LQR的Riccati方程不管参数怎么给都有解只要系统可控但H-infinity的Riccati方程不一定有解——如果你的性能要求太高gamma太小或者模型不确定性太大方程就无解。这就是鲁棒性能极限——在给定不确定性下你能达到的最好性能是有上限的。三、混合灵敏度设计实际工程中H-infinity控制通常用混合灵敏度框架来设计。你不可能同时优化三个东西性能、鲁棒性、抗噪声。所以混合灵敏度把这三个目标分别用三个传递函数表示S 1/(1PK)灵敏度函数描述扰动对输出的影响。S越小抗扰动越好。T PK/(1PK)补灵敏度函数描述参考输入对输出的跟踪。T接近1时跟踪好。KS K/(1PK)控制灵敏度函数描述控制量的大小。KS越小控制能量越小。混合灵敏度优化目标min_K || [W1*S; W2*KS; W3*T] ||_infW1、W2、W3是频率相关的权重函数用来调节不同频率上三个目标的优先级。比如低频段你希望S小抗扰动那就让W1在低频段大高频段你希望T小鲁棒性那就让W3在高频段大。这个框架的好处是物理意义清晰权重函数可以直接从工程需求出发设计。缺点也是物理意义太清晰——权重函数的选择需要大量经验选不好效果就差。四、面试实战QH-infinity控制和LQR/LQG的本质区别ALQR最小化二次代价平均性能最优H-infinity最小化最坏情况增益峰值性能最优。LQR假设模型精确H-infinity显式考虑模型不确定性。LQR解一个Riccati方程H-infinity解两个。Q鲁棒控制和自适应控制怎么选A参数变化范围已知且不大用鲁棒控制——简单可靠不需要在线计算。参数变化范围大或者变化规律未知用自适应控制——在线学习灵活适应。两者也可以结合——自适应提供粗略的参数估计鲁棒控制处理剩余的不确定性。Q鲁棒控制在机器人领域用得多吗A说实话不如PID和MPC多。原因有几个1鲁棒控制设计复杂需要频率域的分析和整形2机器人系统通常用级联PID就能满足需求3MPC能处理约束更受工程界欢迎。但在高精度场景半导体制造、精密装配鲁棒控制有不可替代的优势。之前有个做精密定位平台的团队用H-infinity控制做到了纳米级定位精度。他们的PID方案只能做到微米级差了一个数量级。关键差异就在于H-infinity能显式处理压电陶瓷的迟滞非线性和谐振模态。Qmu综合了解吗Amu综合是H-infinity的进阶版本。H-infinity假设不确定性是集总的一个Delta覆盖所有不确定性mu综合考虑结构化不确定性多个Delta分别描述不同来源的不确定性。mu综合设计的控制器保守性更低但计算更复杂。面试一般不深考知道名字和基本思路就行。五、鲁棒控制的工程落地鲁棒控制落地有几个关键步骤系统辨识拿到标称模型P_nominal和不确定性上界W(s)。这一步最花时间也最关键。权重选择根据性能需求选W1、W2、W3。这一步靠经验没有标准答案。求解H-infinity问题用MATLAB的hinfsyn或者Python的python-control库。控制器降阶H-infinity控制器的阶数通常等于标称模型权重函数的阶数之和可能很高20-50阶。实际实现需要降阶到可接受的水平通常4-8阶。仿真验证在标称模型和各种不确定性组合下仿真验证稳定性和性能。实验验证先在仿真环境跑通再上真机。真机上从小增益开始逐步增大。讲真鲁棒控制的设计周期比PID长很多。但一旦调好了性能上限也高很多。适不适合用取决于你的精度需求和项目周期。小结鲁棒控制的核心思想不追求平均最优而是保证最坏情况下也足够好。通过显式建模不确定性设计在所有可能情况下都稳定的控制器。H-infinity控制是鲁棒控制的代表方法混合灵敏度框架提供了清晰的工程设计流程。代价是设计复杂、周期长、需要频率域分析能力。自适应控制在线学习鲁棒控制提前防御。两者互补不是非此即彼。下篇进入非线性控制的基础——Lyapunov稳定性分析。前面聊的控制方法大多基于线性系统理论但实际机器人系统本质上是非线性的。Lyapunov方法是分析非线性系统稳定性的核心工具。如果这篇文章对你有帮助欢迎点赞、在看、转发三连。 你的支持是我持续更新的最大动力。「机器人软件开发面试·从入门到精通」连载系列上一篇第197篇 自适应控制——系统参数变化时怎么保持性能下一篇预告第199篇 非线性控制基础——Lyapunov稳定性分析有任何问题欢迎评论区留言我会尽量回复。