4. PID控制理论入门:P(比例)、I(积分)、D(微分)的作用

各位同学,欢迎来到PID控制理论的第一课。

说实话,我见过太多新手调参时一脸懵,上来就乱调P、I、D三个数。结果飞机要么像弹簧一样乱抖,要么反应迟钝像个醉汉。为什么会这样?因为你不理解这三个字母背后的物理意义。

今天我就带你彻底搞懂:P、I、D分别是什么,它们各自干了什么活,以及——为什么飞控非用PID不可。

4.1 先讲个故事:没有PID的飞控会怎样?

想象一下,你用手托着一架四轴飞行器。你想让它保持水平。你的眼睛看到它往右倾斜了,大脑命令手往左推。但推多少?推快了还是推慢了?

这就是最原始的“控制”。

但飞控没有手,也没有眼睛。它只有传感器(陀螺仪、加速度计)和电机。传感器告诉它“我现在歪了”,电机负责“给我掰回来”。

如果没有PID,飞控只能做一件事:歪了就全速掰,正了就立刻停。结果呢?飞机像抽风一样来回震荡,根本稳不住。

嗯,这就是我当年第一次写飞控代码时的惨状。代码跑起来,飞机在地上疯狂抽搐,差点把桨叶甩飞。从那以后,我老老实实学PID。

4.2 P(比例):最直接的“掰回来”

P是比例控制。说白了就是:偏差越大,纠正力越大

公式很简单:

输出 = Kp × 偏差

比如目标角度是0°,当前角度是10°。偏差就是10°。Kp=0.5,那么输出就是5。这个输出会驱动电机,让飞机往0°方向转。

P的物理意义:相当于一个弹簧。你拉得越远,它弹回来的力越大。

但P有个致命问题:稳态误差

什么意思?当飞机接近目标角度时,偏差变小,输出也变小。如果输出小到不足以克服摩擦力或风阻,飞机就停在离目标还有几度的地方,永远到不了。

这就是我常说的“差一口气”。

核心要点:P让系统“动起来”,但可能“动不到位”。

4.3 I(积分):专治“差一口气”

I是积分控制。它干的事是:把过去的偏差累积起来,用累积量去消除稳态误差

公式:

输出 = Ki × ∫(偏差)dt

你想想看,如果飞机一直停在2°的位置不动,偏差就一直存在。积分项会不断累加这个2°,输出越来越大,直到把飞机推到0°。

I的物理意义:像一个“记仇”的记账本。你欠的债(偏差)它会一直记着,直到还清为止。

我在项目中遇到过一个问题:一架大载重无人机,悬停时总是往一边偏。P调大了就抖,调小了又偏。最后加了I项,问题立刻解决。因为大载重下,电机响应有延迟,P来不及消除的误差,I慢慢给你补上。

注意:I不是越大越好。积分太强,系统会“超调”——冲过头,然后来回震荡。这叫“积分饱和”。

4.4 D(微分):提前踩刹车

D是微分控制。它看的是偏差的变化趋势,而不是偏差本身。

公式:

输出 = Kd × d(偏差)/dt

如果偏差正在快速减小(飞机正在快速回正),D项会输出一个负值,相当于提前“踩刹车”,防止冲过头。

D的物理意义:像一个“预言家”。它不看你现在歪了多少,而是看你歪的速度有多快。如果歪得很快,它提前发力阻止。

我曾经调试一架穿越机,P和I都调好了,但飞机在急转弯时总是剧烈震荡。后来加了D项,震荡立刻消失。因为D项在飞机快要震荡之前就提前抑制了。

个人经验:D对噪声非常敏感。如果你的传感器数据有毛刺,D项会把毛刺放大成剧烈抖动。所以用D之前,先确保滤波做得好。

4.5 三者的配合:一个完整的PID

完整的PID公式:

输出 = Kp × 偏差 + Ki × ∫偏差 dt + Kd × d(偏差)/dt

三个角色各司其职:

参数 作用 比喻 调大后的效果
P 快速响应偏差 弹簧 反应变快,但可能震荡
I 消除稳态误差 记账本 精度提高,但可能超调
D 抑制震荡趋势 预言家 稳定性提高,但怕噪声

4.6 为什么飞控非用PID不可?

这个问题我问过很多新手。有人说是“因为大家都在用”。这答案不对。

飞控必须用PID,原因有三:

  1. 实时性要求极高:飞控的循环周期通常是1ms到10ms。PID计算只需要几次乘法和加法,CPU开销极小。你换神经网络试试?算完飞机早摔了。
  2. 物理意义清晰:每个参数对应一个物理现象。P对应刚度,I对应持久力,D对应阻尼。调参时你知道在调什么。
  3. 鲁棒性好:PID不依赖精确的数学模型。你换一个电机、换一组桨叶,只要重新调三个数就行。我在项目中换过十几种电机,PID都能搞定。

一句话总结:PID是飞控的“肌肉记忆”。它不需要思考,只需要快速、准确地执行。

4.7 知识体系总览

下面这张图,是我自己画的知识结构。你看一遍,就能把PID的来龙去脉串起来。

PID控制理论知识体系 PID控制器 P(比例) I(积分) D(微分) 快速响应偏差 类比:弹簧 消除稳态误差 类比:记账本 抑制震荡趋势 类比:预言家 三者配合 → 稳定、精准、快速的飞行控制

4.8 避坑指南

最后,分享几个我踩过的坑:

  • 我曾经把P调得太大,结果飞机在地上疯狂抖动,像得了帕金森。后来才知道,P太大就是“用力过猛”,系统会震荡。
  • 我曾经忘记加I,飞机悬停时总是慢慢漂移。加了I之后,漂移消失。但I调太大又导致超调,飞机来回晃了好几次才稳住。
  • 我曾经在噪声大的传感器上直接用D,结果飞机抖得比P过大还厉害。后来加了低通滤波,D才正常工作。

记住一句话:先调P,再调I,最后调D。这是无数飞控工程师用血泪换来的顺序。

好了,这一章就到这里。PID的数学公式和物理意义,你已经有了清晰的认识。下一章我们会动手调参,把理论变成实战。


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