第一章:PID控制器基础——飞控系统的“大脑”
各位同学,欢迎来到实战课程的第一章。今天咱们聊聊PID控制器。说实话,我入行那会儿,第一次看到PID公式也是一头雾水。但后来在项目里摔过几次跟头,才真正明白这东西有多重要。
PID控制器,说白了就是飞控系统的“大脑”。它负责告诉电机:该转多快、往哪转。没有它,无人机就是个铁疙瘩。
1.1 PID原理:比例、积分、微分
先看最核心的公式:
输出 = Kp × 误差 + Ki × ∫误差 dt + Kd × d(误差)/dt
别被数学符号吓到。我拆开讲,你就懂了。
比例项(P)—— 当下
比例项看的是“现在”。误差越大,输出越大。比如无人机偏了10度,P项就输出一个力把它往回拉。但有个问题:P项太大会震荡,太小又反应慢。
核心要点:P项决定响应速度,但无法消除稳态误差。
我在项目中遇到过一架四轴,P值调得太大,起飞时像抽风一样左右晃。后来把P减半,才稳下来。
积分项(I)—— 过去
积分项看的是“历史”。它把过去的误差累加起来。如果一直有偏差,I项就慢慢增大,直到把偏差消除。
举个例子:无人机悬停时总往北飘。P项只能抵抗瞬时风,但解决不了持续偏航。这时候I项就起作用了——它记住“北偏”这个事,慢慢增加反向力,直到飞机回到原点。
注意:I项太大会引起“积分饱和”,导致超调甚至震荡。我建议初始值设小一点,比如0.01量级。
微分项(D)—— 未来
微分项预测“未来”。它看误差的变化趋势。如果误差在快速增大,D项就提前输出一个反向力,抑制震荡。
你想想看,这就像开车时看到前面刹车灯亮了,你提前松油门。D项就是那个“预判”。
我的经验:D项对噪声非常敏感。传感器数据如果不滤波,D项会把噪声放大,导致电机高频抖动。我曾经因为这个炸过一架机,后来加了低通滤波才解决。
1.2 飞控中的PID应用:三层环结构
飞控系统不是只有一个PID,而是三个PID串在一起。我画了张图,你看一眼就明白了:
看到没?三层环是串在一起的。位置环输出给速度环,速度环输出给姿态环,姿态环直接控制电机。每一层都有自己的PID参数。
姿态环(最内层)
姿态环控制飞机的角度。比如你要它俯仰10度,它就得精确到达。这是最关键的环,响应要快,精度要高。
我一般用PID控制姿态环。P项决定响应速度,D项抑制震荡,I项消除稳态误差。注意:姿态环的I项要小心,太大容易引起低频震荡。
速度环(中间层)
速度环控制飞机的移动速度。比如你要它以2m/s的速度向前飞。速度环接收位置环的指令,输出期望姿态给姿态环。
速度环通常用PI控制就够了。D项在这里作用不大,反而容易引入噪声。我习惯把D项设成0,只调P和I。
位置环(最外层)
位置环控制飞机的位置。比如你要它飞到GPS坐标点。位置环输出期望速度给速度环。
位置环一般只用P控制。因为位置误差本身就有惯性,加I项容易超调。我见过有人把位置环的I项设得很大,结果飞机在目标点来回晃,像喝醉了酒。
1.3 PID参数作用:调参实战经验
调参是门手艺活。我整理了一张表,方便你对照:
| 参数 | 增大效果 | 减小效果 | 典型问题 |
|---|---|---|---|
| Kp(比例) | 响应变快,可能震荡 | 响应变慢,稳态误差大 | 过大:高频震荡 |
| Ki(积分) | 消除稳态误差,可能超调 | 稳态误差消除慢 | 过大:低频震荡、积分饱和 |
| Kd(微分) | 抑制震荡,提高稳定性 | 震荡抑制弱 | 过大:噪声放大、电机抖动 |
调参口诀:先调P,再调D,最后调I。P让飞机动起来,D让飞机稳下来,I让飞机准起来。
我记得第一次调参时,把P调得很大,飞机直接翻了个跟头。后来学乖了:从零开始,慢慢加P,直到飞机出现轻微震荡,然后退回来一点。再加D抑制震荡。最后加I消除偏差。
还有一个坑:不同环的参数会互相影响。比如你调大了姿态环的P,速度环可能就需要重新调。因为内环响应变快了,外环的指令也要跟上。
避坑指南:我曾经在调参时忽略了传感器延迟。姿态环的D项对延迟特别敏感,延迟超过10ms就会引起震荡。后来我加了时间戳同步,才解决这个问题。
嗯,到这里PID的基础就讲完了。记住:PID不是万能的,但没有PID是万万不能的。下一章咱们会深入代码层面,看看怎么在飞控里实现这些算法。
公众号:蓝海资料掘金营,微信deep3321