1. PID控制基础:从无人机悬停说起
做飞控这些年,我经常被问到同一个问题:“无人机到底是怎么稳稳悬停在空中的?”
这个问题看似简单,背后却藏着整个飞控系统的核心——PID控制。今天,我们就从悬停这个最基础的动作说起,把P、I、D这三个字母的物理意义彻底讲透。
1.1 悬停的本质:一场永不停歇的对抗
你想想看,无人机在空中悬停,其实是在跟重力、风扰、电机响应延迟做对抗。四个电机转速稍有偏差,飞机就会往一边偏。
我刚开始做飞控时,以为悬停就是给四个电机发一个固定转速指令。结果飞机一离地,直接翻了个跟头。后来才明白:悬停不是开环控制,而是闭环控制。
说白了,就是:
- 传感器告诉你“现在偏了”
- 控制器算出“该纠正多少”
- 执行器(电机)去执行纠正
这个循环每秒要跑几百次甚至上千次。PID就是那个“算出该纠正多少”的算法。
核心观点:没有PID,多旋翼根本飞不起来。这不是夸张,是事实。
1.2 P(比例):最直接的纠偏
P就是比例控制。它的逻辑很简单:偏差越大,纠正力度越大。
举个例子:
- 飞机向右偏了5度 → 给一个向左的纠正力矩
- 偏了10度 → 纠正力矩加倍
这个“纠正力度” = 偏差 × P系数(Kp)。
我在项目中遇到过一个问题:只加P控制,飞机确实能悬停,但会一直来回晃动。就像你用手去扶一个倒下的杆子,反应太快反而会抖。
个人经验:P系数调得太大,飞机会高频振荡,听起来像“嗡嗡嗡”的共振声。调得太小,飞机反应迟钝,像喝醉了酒。
1.3 I(积分):消除静差的关键
光有P控制,你会发现一个问题:飞机总是往一个方向偏一点点。
为什么会这样?
因为电机特性不完全一致、重心偏移、风的影响……这些“系统性偏差”是P控制搞不定的。P控制只知道“现在偏了”,但不知道“一直偏着”。
I(积分)就是来解决这个问题的。它把过去所有的偏差累加起来,如果飞机一直往右偏,积分项就会越来越大,最终把飞机拉回来。
我记得有一次调试,飞机悬停时总是往北偏2度。调了半天P,没用。加上I之后,几秒钟就稳住了。
注意:I系数不能太大。我曾经吃过亏,I调得太大,飞机起飞时直接“积分饱和”,猛地往一边冲过去。嗯,那次差点炸机。
1.4 D(微分):提前预判,减少超调
P和I都是“事后纠偏”,D则是“事前预判”。
D(微分)看的是偏差的变化趋势。如果飞机正在快速往右偏,D就会提前给出一个反向力矩,阻止它继续偏下去。
你想想看:
- P看的是“偏了多少”
- I看的是“偏了多久”
- D看的是“偏得多快”
D的作用就是抑制振荡。没有D的飞控,就像没有减震器的汽车,过个坑能颠半天。
避坑指南:D对噪声非常敏感。我曾经用了一款噪声较大的陀螺仪,D项一加上去,飞机就开始高频抖动。后来加了低通滤波才解决。
1.5 为什么多旋翼需要PID?
这个问题我问过很多新手。答案其实就一句话:多旋翼是一个天生不稳定的系统。
固定翼飞机有气动面提供天然稳定性,但多旋翼没有。你松开遥控器,它不会自己回正,只会加速坠落。
所以我们需要一个控制器:
- 实时:每秒几百次的计算
- 鲁棒:抗风、抗干扰
- 简单:能在廉价MCU上跑
PID恰好满足所有条件。它不需要复杂的数学模型,不需要大量的计算资源,却能解决90%以上的控制问题。
我见过有人用LQR、MPC做飞控,效果确实更好,但调试难度和计算量也大得多。对于大多数项目,PID已经足够好。
1.6 PID的物理意义总结
| 字母 | 全称 | 物理意义 | 类比 |
|---|---|---|---|
| P | 比例 | 当前偏差的力度 | 看到偏了,立刻拉回 |
| I | 积分 | 历史偏差的累积 | 一直偏,就一直加力 |
| D | 微分 | 偏差变化的速度 | 预判趋势,提前刹车 |
我的习惯:调参时先调P,让飞机能飞起来但不稳;再加D,抑制振荡;最后加I,消除静差。这个顺序基本不会错。
1.7 知识体系框架图
下面这张图展示了PID控制与多旋翼悬停之间的核心逻辑关系:
这张图把整个闭环控制链路串起来了。你从下往上看,就是信号流动的方向。从上往下看,就是控制指令的传递路径。
嗯,到这里,PID的基础概念应该已经清楚了。P、I、D三个字母,说白了就是三种不同的纠偏策略。它们配合起来,才能让无人机稳稳地悬停在空中。
下一章,我们会深入代码层面,看看PID在飞控中到底是怎么实现的。