3、经典PID偏航控制:从原理到实战
各位同学好,我是老张。今天咱们聊聊偏航控制里最经典、也最实用的方法——PID控制。
说实话,我入行那会儿,飞控圈里PID就是"万能药"。现在虽然有了LQR、MPC这些高级算法,但PID依然是工业界的主力。为什么?因为它简单、可靠、调参直观。你想想看,一个算法能活几十年,肯定有它的道理。
这一章,我会把PID在偏航控制中的应用掰开揉碎了讲。包括原理、设计方法、参数整定,还有我这些年踩过的坑。
3.1 PID控制器原理:三句话讲清楚
PID说白了就三个字:比、积、微。
- P(比例):看现在差多少,直接拉回来。差得多拉得多,差得少拉得少。
- I(积分):看过去差了多少,把历史欠账补上。能消除稳态误差。
- D(微分):预测未来会差多少,提前踩刹车。抑制超调。
数学表达式很简单:
u(t) = Kp * e(t) + Ki * ∫e(τ)dτ + Kd * de(t)/dt
其中e(t)是偏差,u(t)是控制量。嗯,这里要注意:实际工程中,微分项容易引入噪声。我见过不少新手把D调得太大,结果飞机抖得像筛糠。
核心观点:PID不是三个环节的简单叠加,而是三个"性格"不同的控制器在配合。P负责快,I负责准,D负责稳。
3.2 偏航角PID控制设计:让机头指哪打哪
偏航角控制,就是控制飞机的航向角ψ。目标值来自航线规划或遥控器,反馈值来自磁罗盘或GPS航向。
我习惯用外环角度、内环角速率的串级结构。为什么?因为单环PID控制偏航角,响应慢、容易振荡。串级结构相当于给角度环配了个"助理"——角速率环,反应更快。
偏航角PID控制框图如下:
设计要点:
- 角度环:一般只用P,或者加少量I。D通常不用,因为角度信号噪声大。
- 角速率环:P为主,D可以加一点增加阻尼。I看情况,如果稳态误差能接受就不加。
- 限幅:内环输出要限幅,防止积分饱和。我习惯把最大偏航角速率限制在30-60度/秒。
实战技巧:调参时先调内环,再调外环。内环调好了,外环随便给个P都能稳。我曾经带过一个学员,上来就调外环,调了三天没调好。我让他先锁死内环参数,十分钟搞定。
3.3 偏航速率PID控制设计:让飞机转得丝滑
有些场景下,我们直接控制偏航角速率,而不是角度。比如航向保持模式、手动增稳模式。
偏航速率控制相对简单,因为被控量本身就是角速率,少了一层积分环节,系统更稳定。
代码实现示例(C语言风格):
// 偏航角速率PID控制器
float yaw_rate_control(float desired_rate, float current_rate) {
float error = desired_rate - current_rate;
static float integral = 0;
static float last_error = 0;
// P项
float p_out = Kp_yaw_rate * error;
// I项(带积分限幅)
integral += error * dt;
if (integral > integral_max) integral = integral_max;
if (integral < -integral_max) integral = -integral_max;
float i_out = Ki_yaw_rate * integral;
// D项(带一阶低通滤波)
float derivative = (error - last_error) / dt;
derivative = lowpass_filter(derivative, 0.1f); // 截止频率约10Hz
float d_out = Kd_yaw_rate * derivative;
last_error = error;
return p_out + i_out + d_out;
}
这段代码里有个细节:微分项我加了低通滤波。为什么?因为角速率信号虽然比角度信号干净,但依然有高频噪声。直接微分会把噪声放大,导致舵面频繁抖动。
避坑指南:我曾经在一个项目中,偏航速率控制总是有1-2度的稳态误差。查了半天,发现是IMU安装有微小偏差,导致角速率测量有零偏。后来加了高通滤波,问题解决。所以,调参之前先确认传感器数据是干净的。
3.4 PID参数整定方法:从理论到手感
参数整定是PID控制的核心,也是很多人的痛点。我总结了一套"三步走"方法:
- 粗调P:先把I和D设为0,逐渐增大P,直到系统出现等幅振荡。记录此时的P值和振荡周期。
- 引入D:加入D,增加阻尼,消除振荡。D值从P的1/10开始试。
- 微调I:如果存在稳态误差,加入I。I值从P的1/20开始,慢慢加。
具体参数范围参考(针对中小型无人机):
| 参数 | 角度环 | 角速率环 | 说明 |
|---|---|---|---|
| Kp | 2.0 - 5.0 | 0.5 - 2.0 | 越大响应越快,但过大会振荡 |
| Ki | 0.01 - 0.1 | 0.0 - 0.05 | 消除稳态误差,但会降低响应 |
| Kd | 0.0 - 0.5 | 0.1 - 0.8 | 增加阻尼,抑制超调 |
嗯,这里要提醒一句:上面的表格只是参考值。不同飞机、不同飞行状态,参数差异很大。我见过一架大四旋翼,Kp能到10;也见过小固定翼,Kp只有0.3。所以,别死记硬背,要理解背后的物理意义。
我的经验:调参时,先在地面用仿真或半实物仿真验证。上天之前,把参数范围缩小到安全区间。我曾经见过有人在天上调参,结果飞机直接翻了——还好有降落伞。从那以后,我定了个规矩:天上只微调,不粗调。
最后,分享一个我常用的"手感"判断法:
- 如果飞机偏航响应慢、像"船"一样晃——加P,或者减D。
- 如果飞机偏航有超调、过冲明显——加D,或者减P。
- 如果飞机偏航有稳态偏差、回不到目标——加I。
- 如果飞机偏航高频抖动、舵面乱跳——减D,或者检查传感器噪声。
说白了,调参就像调音响的高中低音。P是音量,D是阻尼,I是均衡。调好了,声音通透;调不好,要么破音,要么闷得慌。