4、经典控制理论回顾:PID控制、前馈控制、稳定性分析(李雅普诺夫方法)
各位同学,咱们今天聊点“老本行”。
做自适应控制,很多人一上来就盯着复杂的算法。但我个人习惯,先回头看看经典控制理论。为什么?因为自适应控制不是空中楼阁,它是在PID、前馈这些“老伙计”身上长出来的新东西。你连PID的底裤都看不透,怎么去调那些带“自适应”三个字的参数?
4.1 PID控制:从“拍脑袋”到“有章法”
PID,比例-积分-微分。说白了,就是三个字:现在、过去、未来。
- 比例(P):看当下。误差大了,我就使劲推。但推太猛,容易过头,产生震荡。我在项目中遇到过,一个温度控制回路,P给大了,温度像过山车,根本稳不住。
- 积分(I):看过去。误差一直消不掉?积分项就慢慢累积,直到把稳态误差吃掉。但积分有个毛病——容易“积分饱和”。你想想看,执行器都到顶了,积分还在那傻傻地累加,等误差反向时,它半天回不来,系统就“卡住”了。
- 微分(D):看未来。误差变化快了?微分项提前“踩刹车”,抑制超调。嗯,这里要注意,微分对噪声极其敏感。传感器抖一下,微分项就炸了。
核心公式:
u(t) = Kp * e(t) + Ki * ∫e(τ)dτ + Kd * de(t)/dt
其中,e(t) 是误差,u(t) 是控制量。
我的经验:调PID,别上来就调三个参数。先把I和D设成0,只调P,让系统震荡起来。然后慢慢加D,把震荡压下去。最后加I,消除静差。这叫“先P后D再I”,顺序别搞反。
4.2 前馈控制:别等出错了再补救
PID是“反馈”,出错了才动。前馈是“预测”,知道要出错了,提前动。
举个例子。你开车上坡,PID的做法是:车速慢了,才踩油门。前馈的做法是:看到坡了,提前踩油门。哪个更顺?当然是后者。
前馈控制的核心是:模型。你得知道干扰是什么,以及它怎么影响系统。
前馈+反馈结构:
u(t) = u_ff(t) + u_fb(t)
u_ff 是前馈量,基于模型计算。u_fb 是反馈量,基于PID修正。
我曾经在一个机械臂轨迹跟踪项目里,只用PID,末端抖动得厉害。后来加了前馈,把重力项和科里奥利力项提前补偿掉,效果立竿见影。说白了,前馈就是帮PID“减负”。
避坑指南:我曾经犯过一个错——前馈模型不准。模型误差大的时候,前馈不仅没帮忙,反而添乱。记住:前馈依赖模型,模型不准,不如不用。
4.3 稳定性分析:李雅普诺夫方法
做控制,最怕什么?系统发散,炸了。所以我们要分析稳定性。
经典控制里,我们用劳斯判据、奈奎斯特图。但那些方法只适用于线性系统。对于非线性、时变系统,李雅普诺夫方法是“大杀器”。
李雅普诺夫的思想很简单:找一个“能量函数”V(x),如果这个能量一直在减小,那系统最终会稳定下来。
具体来说,分两步:
- 找V(x):V(x) 必须是正定的(除了平衡点,其他地方都大于0)。
- 看V'(x):V'(x) 必须是负定的(能量一直在消耗)。
数学表达:
V(x) > 0, for x ≠ 0
V(0) = 0
dV(x)/dt < 0, for x ≠ 0
满足这两条,系统在李雅普诺夫意义下稳定。
你想想看,这就像一个小球在碗里滚。V(x) 是球的高度(势能),V'(x) 是球滚动的速度。只要球一直在往低处滚,它最终就会停在碗底。
我的习惯:在实际项目中,我很少去严格证明李雅普诺夫稳定性。太费时间了。但我用它来“指导”设计。比如,我设计一个自适应律,我会先看看能不能构造一个V(x),让它的导数负定。如果能,那这个自适应律大概率是靠谱的。
4.4 本章知识体系
下面这张图,是我自己画的。它把PID、前馈、李雅普诺夫方法串在了一起。你看一眼,就能明白它们之间的关系。
这张图里,PID是基础,前馈是“助攻”,李雅普诺夫方法是“裁判”。三者缺一不可。
最后提醒一句:别把李雅普诺夫方法当成“万能药”。它只能告诉你系统是否稳定,但没法告诉你系统性能好不好。一个稳定的系统,可能慢得像蜗牛。所以,稳定性分析只是第一步,性能优化才是重头戏。