一、【无人机控制基础】数字 PID 控制器详解:从原理到偏差式 PID 实战(含视觉 PID 应用)
1. 为什么在无人机控制中,PID 依然不可替代?
在学习无人机控制算法时,很多同学会下意识地认为:
PID 只是“经典控制”,真正高端的无人机应该使用 MPC、LQR 甚至强化学习。
但只要真正接触过飞控系统,就会发现一个事实:
几乎所有成熟无人机系统,最底层一定是 PID。
原因并不复杂,而是工程约束决定的:
- 无人机是 强非线性、强耦合系统
- 飞控运行在 资源受限的嵌入式平台
- 控制周期极短(250 Hz ~ 2 kHz)
- 执行器(电机 + ESC)存在明显延迟和饱和
在这种条件下,稳定性、确定性、可调试性远比算法“高级”更重要。
PID 正是目前工程上“性价比最高”的控制方案。
2. 从连续 PID 到数字 PID:无人机为什么必须用离散形式?
经典连续 PID 表达式为:
[
u(t)=K_p e(t)+K_i\int e(t)dt+K_d\frac{de(t)}{dt}
]
但在无人机飞控中,这个公式不会被直接使用,原因是:
- 控制器运行在 MCU 上
- 控制是按固定周期采样的
- 所有信号都是离散的
因此必须将 PID 离散化,形成 数字 PID 控制器。
3. 数字 PID 的两种核心实现方式
3.1 位置式 PID(Position PID)
位置式 PID 的离散表达为:
[
u(k)=K_p e(k)+K_i\sum_{i=0}^{k}e(i)+K_d[e(k)-e(k-1)]
]
工程特点:
- 直接计算当前控制输出
- 逻辑直观,易于理解
- 积分项容易累积,存在积分饱和风险
在无人机中的典型应用:
- 位置控制环
- 高度控制环
- 低频、慢变化系统
3.2 偏差式 PID(Incremental PID,无人机核心)
偏差式 PID 不直接计算控制量,而是计算控制量的增量:
[
\Delta u(k)=K_p[e(k)-e(k-1)] + K_i e(k) + K_d[e(k)-2e(k-1)+e(k-2)]
]
[
u(k)=u(k-1)+\Delta u(k)
]
4. 为什么偏差式 PID 在无人机中如此重要?
在无人机控制中,偏差式 PID 具有几乎“为飞控量身定制”的优势:
(1)天然抑制积分饱和
控制输出是逐步变化的,即使误差较大,也不会瞬间推到极限。
(2)对执行器更友好
- 电机转速变化平滑
- 避免突然拉满油门或急刹
(3)适合高频控制环
角速度环通常运行在 500 Hz ~ 2 kHz,偏差式 PID 在这种条件下非常稳定。
5. 偏差式 PID 在无人机飞控中的典型位置
几乎所有多旋翼飞控结构都遵循:
位置环(PID / P)
↓
速度环(PID)
↓
姿态角环(PID)
↓
角速度环(偏差式 PID)
↓
电机混控
越靠近电机,越倾向使用偏差式 PID。
6. 偏差式 PID 实战一:角速度内环(经典案例)
6.1 控制目标
- 期望角速度:(\omega_{ref})
- 实际角速度:(\omega)
- 输出:力矩控制量
误差定义:
[
e(k)=\omega_{ref}(k)-\omega(k)
]
6.2 控制逻辑(伪代码)
e0 = ref - gyro;
du = Kp*(e0 - e1)
+ Ki*e0
+ Kd*(e0 - 2*e1 + e2);
u = u_prev + du;
这段代码几乎可以在 PX4、Betaflight、ArduPilot 中找到对应实现。
7. 偏差式 PID 实战二:视觉调整 PID(重点示例)
7.1 应用背景:基于视觉的无人机对准控制
在很多无人机任务中,会涉及 视觉闭环调整,例如:
- 目标跟踪
- 精准降落
- 视觉引导对准(视觉伺服)
典型场景:
无人机通过摄像头检测目标,目标在图像中的位置偏离中心,需要调整无人机姿态或位置。
7.2 视觉误差的定义方式
假设:
- 图像宽度为 640
- 图像高度为 480
- 目标中心坐标为 ((x_t, y_t))
误差定义为:
[
e_x = x_t - 320
]
[
e_y = y_t - 240
]
这两个误差直接反映了 无人机当前的视觉偏差。
7.3 为什么视觉 PID 更适合用偏差式?
视觉系统具有以下特点:
- 帧率低于 IMU(30~60 Hz)
- 目标检测存在抖动
- 数据存在延迟
如果直接使用位置式 PID:
- 积分容易累积错误
- 输出抖动明显
偏差式 PID 的优势在此非常突出:
- 输出变化由“误差变化”决定
- 对突变和噪声更鲁棒
- 调整过程更平滑
7.4 视觉对准偏差式 PID 示例
以 横向对准控制 为例:
ex0 = target_x - img_center_x;
du = Kp*(ex0 - ex1)
+ Ki*ex0
+ Kd*(ex0 - 2*ex1 + ex2);
yaw_cmd += du;
控制结果:
- 当目标在图像左侧 → 产生正向 yaw 调整
- 当目标接近中心 → 输出逐渐减小
- 不会出现剧烈抖动
7.5 工程经验总结(非常重要)
在视觉 PID 中:
- P 项为主
- I 项极小或不用
- D 项用于抑制抖动
这在无人机视觉控制中是非常常见的经验配置。
8. PID 调参在无人机中的基本思路
- 先关 I、D,只调 P
- 再加入 D 抑制振荡
- 最后谨慎加入 I
永远从内环开始调。
9. 总结
- PID 是无人机控制的基石
- 偏差式 PID 是飞控内环的核心
- 视觉闭环控制中,偏差式 PID 更稳定、更工程化
- 理解 PID,比“会调 PID”更重要