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控制框图如下:

偏航角串级PID控制结构 ψ_des 角度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控制的核心,也是很多人的痛点。我总结了一套"三步走"方法:

  1. 粗调P:先把I和D设为0,逐渐增大P,直到系统出现等幅振荡。记录此时的P值和振荡周期。
  2. 引入D:加入D,增加阻尼,消除振荡。D值从P的1/10开始试。
  3. 微调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是均衡。调好了,声音通透;调不好,要么破音,要么闷得慌。


专注资料整理