1. PID控制基础:从经典控制理论到姿态控制

各位同学好,我是老张。在飞控这行摸爬滚打了十几年,今天咱们聊聊PID控制的基础。说实话,PID这东西,看着简单,但真正用好它,没个几年功夫是不行的。

我记得刚入行那会儿,带我的老师傅跟我说过一句话:「PID就像炒菜,盐放多了咸,放少了淡,火候还得恰到好处。」当时觉得这话挺玄乎,后来自己做项目才明白——还真是这么回事。

1.1 从经典控制理论说起

控制理论发展到现在,方法多得是。什么鲁棒控制、自适应控制、模型预测控制……但你要问我,工程上用得最多的是什么?我肯定说是PID。

为什么?因为简单、可靠、直观。

经典控制理论里,我们最关心的是系统的稳定性、快速性和准确性。说白了就是:

  • 稳不稳——系统会不会震荡甚至发散
  • 快不快——从偏差到消除偏差要多久
  • 准不准——最终能不能达到目标值

PID控制,就是通过调节三个参数,来同时兼顾这三个性能指标。你想想看,一个控制器能同时管三件事,这本身就是个很巧妙的设计。

1.2 PID三要素的物理意义

咱们先看一张图,这是PID控制器的基本结构:

PID控制器结构框图 目标值 e Kp · e Ki · ∫e dt Kd · de/dt 被控对象 输出 反馈回路

这张图我画了好几次才满意。你看,三个通道并行工作,最后求和输出。这就是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参数,我习惯按这个顺序来:

  1. 先调P——从小到大,直到系统出现轻微震荡
  2. 再加D——抑制震荡,让系统稳定下来
  3. 最后加I——消除稳态误差

这个顺序不是绝对的,但适合大多数情况。我曾经试过先调I,结果系统响应慢得像蜗牛,折腾了半天才发现顺序搞反了。

嗯,今天就先聊到这儿。PID这东西,看着简单,但真正用好它,需要大量的实践和思考。希望这节课能帮你打下扎实的基础。


公众号:蓝海资料掘金营,微信deep3321