4. 姿态控制参数整定:PID参数失谐现象、角速率环调试、姿态环调试
各位工程师,咱们今天聊点实在的。飞控参数整定,说白了就是让飞机听话的过程。我见过太多团队,代码写得漂亮,仿真跑得完美,一上天就翻车。为什么?参数没调好。
这一节,我重点讲三个东西:PID参数失谐、角速率环调试、姿态环调试。这三者是递进关系,你跳不过去。
4.1 PID参数失谐:你以为是飞机坏了?其实是参数不对
先说说什么是失谐。简单讲,就是PID参数跟实际系统不匹配。飞机表现出来就是抖、慢、或者干脆发散。
我在项目中遇到过最典型的场景:一个四旋翼,悬停时轻微抖动,飞手说“桨平衡有问题”。结果换了三套桨,问题依旧。最后查出来,是D项增益高了0.3。你看,硬件背了软件的锅。
失谐的三种典型表现:
- 高频抖动:飞机像得了帕金森,肉眼可见的震颤。通常是D项过大,或者传感器噪声被放大。
- 低频摆动:飞机像喝醉了,左右晃。通常是P项不足,或者I项太弱,系统恢复力不够。
- 发散振荡:越晃越大,最后炸鸡。这是P项过大,系统进入正反馈。
你想想看,为什么会出现失谐?原因无非三个:
- 模型变了:电池电压下降、负载变化、重心偏移。你的参数是基于某个状态调的,换个状态就不行了。
- 传感器问题:陀螺仪噪声变大、加速度计温漂。我建议每次起飞前做一次传感器自检。
- 执行机构饱和:电机转速到顶了,舵面卡死了。PID还在积分,结果就是积分饱和。
避坑指南:我曾经在调试一款六旋翼时,发现悬停时YAW轴一直有低频振荡。查了两天,最后发现是电机PWM频率设置太低,导致电机响应滞后。调高PWM频率后,问题消失。所以,失谐不一定是PID的问题,先检查底层。
4.2 角速率环调试:这是飞控的“肌肉反应”
角速率环,也叫内环。它控制的是飞机的角速度,说白了就是“我想转多快”。这个环必须快、准、稳。
我个人习惯,先调内环,再调外环。内环调不好,外环就是空中楼阁。
4.2.1 调试前的准备
- 把飞机固定好,或者用仿真环境。千万别手拿着调,那会受伤。
- 设置好遥控器通道,能随时切回手动模式。
- 记录初始参数,方便回退。
4.2.2 角速率环的PID结构
角速率环通常用PD控制,I项用得少。为什么?因为角速率环要求响应快,I项会引入滞后。
// 角速率环PID伪代码
float rate_pid_roll(float target_rate, float current_rate) {
float error = target_rate - current_rate;
float p_out = Kp_rate * error;
float d_out = Kd_rate * (error - last_error) / dt;
// I项可选,通常不用或很小
// float i_out = Ki_rate * integral;
return p_out + d_out;
}
4.2.3 调试步骤(我常用的方法)
- 先给一个小的P值,比如0.1。打一个阶跃信号,看响应。如果响应太慢,增加P。
- 增加P直到出现轻微振荡。这个振荡频率通常在5-10Hz。记下这个P值,然后乘以0.6作为最终P值。这是经典的Ziegler-Nichols方法。
- 加入D项抑制超调。D项从0开始慢慢加,直到振荡消失。注意,D项太大会放大噪声。
- 检查稳态误差。如果存在稳态误差,可以加一点点I项。但I项不要超过P项的1/10。
我的小技巧:调试时,用遥控器打一个快速阶跃(比如突然打满副翼),然后看飞机的响应曲线。理想的响应是:快速到达目标角速率,超调小于10%,没有振荡。如果曲线像“狗啃的”,那就是参数不对。
4.3 姿态环调试:让飞机“指哪打哪”
姿态环是外环,它控制的是飞机的角度。内环控制角速率,外环控制角度。外环的输出,就是内环的目标值。
嗯,这里要注意:外环的带宽必须比内环低。通常外环的响应速度是内环的1/3到1/5。否则,内外环会打架。
4.3.1 姿态环的PID结构
姿态环通常用P控制就够了,I项和D项用得少。因为角度误差本身就有积分效果(角度是角速度的积分)。
// 姿态环PID伪代码
float att_pid_roll(float target_angle, float current_angle) {
float error = target_angle - current_angle;
float p_out = Kp_att * error;
// 输出作为角速率环的目标值
return p_out;
}
4.3.2 调试步骤
- 先确保内环已经调好。内环不稳,外环别碰。
- 设置外环P值为内环P值的1/3。这是一个经验值,我用了很多年。
- 打一个角度阶跃,比如打10度。看响应。如果响应太慢,增加P。如果超调太大,减小P。
- 检查跟踪精度。让飞机做匀速旋转,看实际角度是否跟得上目标角度。如果滞后明显,可以加一点点I项。
内外环参数关系(经验值):
| 参数 | 内环(角速率环) | 外环(姿态环) |
|---|---|---|
| P增益 | 0.1 - 0.5 | 内环P的1/3 - 1/5 |
| D增益 | 0.01 - 0.05 | 通常为0 |
| I增益 | 0 或很小 | 0 或很小 |
| 带宽 | 10 - 20 Hz | 3 - 5 Hz |
4.4 核心逻辑:从失谐到整定的闭环
为了让你更直观地理解,我画了一张流程图。它展示了从发现失谐到完成整定的完整路径。
这张图你看懂了吗?从上到下,是一个完整的排查和调试流程。我建议你每次调参都走一遍这个流程,不要跳步。
4.5 实战中的几个坑
最后,我分享几个实战中踩过的坑,希望能帮你省点时间。
- 坑一:在风大的时候调参。风是外部扰动,会掩盖参数的真实表现。我建议在无风或微风环境下调试。
- 坑二:只调一个轴。Roll、Pitch、Yaw三个轴要分别调。我见过有人调好了Roll,以为Pitch也一样,结果一飞就翻。
- 坑三:忽略油门。不同油门下的响应不同。我建议在悬停油门附近调,然后验证低油门和高油门的表现。
- 坑四:过度依赖仿真。仿真模型永远无法完全模拟真实情况。我建议仿真只用来找初始值,最终参数必须在真机上验证。
我的习惯:每次调参后,我都会把参数和飞行日志一起保存。这样如果出了问题,可以回溯。我还会在日志里加一个“参数版本号”,方便对比。这个小习惯,救过我很多次。
好了,这一节的内容就到这里。参数整定是个手艺活,多练、多记、多总结。你调得多了,自然就有感觉了。