1. PID控制基础:从经典控制理论到姿态控制
各位同学好,我是老张。在飞控这行摸爬滚打了十几年,今天咱们聊聊PID控制的基础。说实话,PID这东西,看着简单,但真正用好它,没个几年功夫是不行的。
我记得刚入行那会儿,带我的老师傅跟我说过一句话:「PID就像炒菜,盐放多了咸,放少了淡,火候还得恰到好处。」当时觉得这话挺玄乎,后来自己做项目才明白——还真是这么回事。
1.1 从经典控制理论说起
控制理论发展到现在,方法多得是。什么鲁棒控制、自适应控制、模型预测控制……但你要问我,工程上用得最多的是什么?我肯定说是PID。
为什么?因为简单、可靠、直观。
经典控制理论里,我们最关心的是系统的稳定性、快速性和准确性。说白了就是:
- 稳不稳——系统会不会震荡甚至发散
- 快不快——从偏差到消除偏差要多久
- 准不准——最终能不能达到目标值
PID控制,就是通过调节三个参数,来同时兼顾这三个性能指标。你想想看,一个控制器能同时管三件事,这本身就是个很巧妙的设计。
1.2 PID三要素的物理意义
咱们先看一张图,这是PID控制器的基本结构:
这张图我画了好几次才满意。你看,三个通道并行工作,最后求和输出。这就是PID的核心思想。
1.2.1 比例控制(P)—— 当下
比例控制,说白了就是「有多大错,使多大劲」。数学表达很简单:
u_p(t) = Kp · e(t)
其中 e(t) 是当前误差,Kp 是比例增益。
举个例子:你用手托着一杯水,水杯歪了,你本能地往反方向用力。歪得越多,用力越大。这就是比例控制。
但比例控制有个问题——它永远消除不了稳态误差。为什么?因为当误差趋近于零时,控制力也趋近于零。就像你托着水杯,手稍微抖一下,水杯就歪了,你再去纠正……永远差那么一点点。
关键点:比例控制响应快,但存在稳态误差。Kp 越大,响应越快,但过大会导致震荡甚至发散。
1.2.2 积分控制(I)—— 过去
积分控制,就是「算总账」。数学表达:
u_i(t) = Ki · ∫e(t)dt
它把过去所有的误差都累加起来。只要还有误差,积分项就会一直增长,直到把误差消除。
我在做四旋翼悬停控制时遇到过一个问题:飞机总是往一边飘,比例控制怎么调都调不好。后来加了积分项,问题立马解决了。积分项把累积的偏差「吃掉」了。
注意:积分项是把双刃剑。积分太强会导致「积分饱和」——误差已经为零了,积分项还在输出,造成超调。我早期做项目时吃过这个亏,飞机悬停时上下震荡,后来加了抗积分饱和才解决。
1.2.3 微分控制(D)—— 未来
微分控制,就是「预测未来」。数学表达:
u_d(t) = Kd · de(t)/dt
它看的是误差的变化趋势。如果误差在快速增大,微分项会提前输出一个较大的控制量来「刹车」。
你想想看,这就像开车时看到前面红灯,你提前减速,而不是到了跟前才急刹车。微分项就是那个「提前量」。
实战经验:微分项对噪声非常敏感。我在无人机上用过一次纯微分,结果传感器噪声被放大了,电机嗡嗡响。后来加了低通滤波才搞定。所以实际工程中,很少直接用纯微分,而是用「带滤波的微分」。
1.3 PID的数学表达
把三个部分加起来,就是完整的PID控制律:
u(t) = Kp · e(t) + Ki · ∫e(t)dt + Kd · de(t)/dt
在数字系统中,我们用的是离散形式:
u(k) = Kp · e(k) + Ki · Σe(i)·Δt + Kd · [e(k) - e(k-1)]/Δt
其中 Δt 是采样周期。
1.4 三个参数的作用总结
| 参数 | 作用 | 增大效果 | 减小效果 |
|---|---|---|---|
| Kp | 快速响应当前误差 | 响应加快,稳态误差减小,但可能震荡 | 响应变慢,稳态误差增大 |
| Ki | 消除稳态误差 | 稳态误差消除快,但超调增大 | 稳态误差消除慢 |
| Kd | 抑制震荡,预测趋势 | 阻尼增大,超调减小,但对噪声敏感 | 阻尼减小,容易震荡 |
1.5 姿态控制中的PID
在姿态控制中,我们通常用三个独立的PID控制器,分别控制滚转、俯仰和偏航。每个通道的输入是目标角度和实际角度的误差,输出是期望的力矩。
举个例子,滚转通道:
error_roll = target_roll - current_roll
output_roll = Kp_roll * error_roll + Ki_roll * integral_roll + Kd_roll * derivative_roll
这里有个细节——偏航通道通常不加积分项,或者积分系数很小。为什么?因为偏航角是周期性的,积分容易饱和。我刚开始做飞控时没注意这点,结果飞机在空中转圈圈……
核心要点:姿态控制中,P项提供主要控制力,I项消除静态偏差(如重心偏移),D项增加阻尼、抑制震荡。三个参数要配合着调,不能孤立地看某一个。
1.6 我的调参心得
最后分享一点个人经验。调PID参数,我习惯按这个顺序来:
- 先调P——从小到大,直到系统出现轻微震荡
- 再加D——抑制震荡,让系统稳定下来
- 最后加I——消除稳态误差
这个顺序不是绝对的,但适合大多数情况。我曾经试过先调I,结果系统响应慢得像蜗牛,折腾了半天才发现顺序搞反了。
嗯,今天就先聊到这儿。PID这东西,看着简单,但真正用好它,需要大量的实践和思考。希望这节课能帮你打下扎实的基础。
公众号:蓝海资料掘金营,微信deep3321