第3章:Roll轴调参实战——Rate P、Rate D与角外环P
好,咱们直接进入正题。这一章要啃的是Roll轴的三个核心参数:Roll Rate P、Roll Rate D,还有Roll角外环P。说白了,就是让飞机在横滚方向上听话、不抖、不飘。
我个人习惯把调参比作“驯马”。Rate P是马的力气,Rate D是缰绳的阻尼,外环P是骑手的方向感。三个配合不好,马要么原地转圈,要么把你甩下来。
核心原则:先内环(Rate),后外环(Angle)。内环调稳了,外环才有意义。
3.1 准备工作:在SITL里起飞
在开始拧参数之前,确保你的SITL环境已经跑起来了。我建议用arducopter加上MAVProxy,或者直接用Mission Planner的SITL模式。
起飞后,切到Stabilize模式。这个模式下,外环角度控制是激活的,方便我们观察内外环的耦合效果。
小技巧: 在MAVProxy里用param fetch先把所有参数拉下来,然后用param set改值。别直接在GCS上乱点,容易漏参数。
3.2 Roll Rate P参数调节
Rate P是内环的比例增益。它决定了飞控对“期望角速度”和“实际角速度”之间误差的反应强度。
怎么调?
- 先把ATC_RAT_RLL_P设为默认值(通常是0.15左右)。
- 在SITL里做快速横滚机动(比如打满副翼然后回中)。
- 观察日志里的
Rate.Roll和DesRate.Roll。
我记得第一次调这个参数时,把P设到0.25,结果飞机像抽风一样高频抖动。嗯,这就是典型的P过大——系统在“过冲-回调-再过冲”之间震荡。
警告: 如果P太小,飞机会“软绵绵”的,打杆后反应迟钝,甚至回中后还在慢慢转。P太大,飞机会高频抖动,严重时直接炸机。在SITL里炸了没事,但养成好习惯:每次只改20%,然后飞一个起落看效果。
理想状态: 打杆后,实际角速度快速跟上期望值,没有明显超调,也没有滞后。回中后,角速度迅速归零。
| 现象 | 原因 | 对策 |
|---|---|---|
| 响应慢,滞后明显 | P太小 | 增加P(每次+0.02) |
| 高频抖动(嗡嗡声) | P太大 | 减小P(每次-0.02) |
| 回中后过冲一次再稳定 | P略大,或D不足 | 先减P,再考虑加D |
3.3 Roll Rate D参数调节
Rate D是微分增益。它的作用是抑制角速度的变化率。说白了,就是给系统加阻尼,防止P把飞机推过头。
你想想看,如果只有P,就像你推一个秋千,每次都用全力。秋千会越荡越高。D就是你在秋千荡回来时轻轻拉一把,让它稳定在中间。
怎么调?
- 在P调得差不多后,开始调ATC_RAT_RLL_D。默认值通常是0.003左右。
- 做同样的横滚机动,观察日志里的
Rate.Roll曲线。
我曾经在一个四轴项目上,P已经调得很好了,但飞机在顺风转弯时总有点“点头”。后来发现是D太小,角速度变化时没有足够的阻尼。加了0.002的D,问题立刻消失。
避坑指南: D不是越大越好。D过大会放大噪声,导致电机发烫、电池续航下降。在SITL里,你可以故意把D设到0.01,然后看日志——角速度信号上全是毛刺。这就是D放大了传感器噪声。
理想状态: 打杆后,角速度平滑上升,没有尖峰;回中后,角速度平滑归零,没有震荡。
| 现象 | 原因 | 对策 |
|---|---|---|
| 回中后仍有1-2次震荡 | D不足 | 增加D(每次+0.001) |
| 角速度曲线有高频毛刺 | D过大 | 减小D(每次-0.001) |
| 电机异常发烫 | D过大导致高频修正 | 立即减小D |
3.4 Roll角外环P调节
外环P(ATC_ANG_RLL_P)控制的是角度,而不是角速度。它告诉飞控:“你现在偏了10度,赶紧给我转回来。”
外环的输出是内环的期望角速度。所以外环P越大,飞控对角度偏差的反应越激进。
怎么调?
- 内环(Rate P和Rate D)调好后,开始调外环P。默认值通常是4.5左右。
- 在Stabilize模式下,打杆让飞机倾斜一定角度,然后松杆。
- 观察飞机回正的速度和是否过冲。
我个人习惯把外环P调得稍微“紧”一点。比如在SITL里,我会把飞机倾斜30度,松杆后看它回正。如果回正过程中有“点头”或“来回晃”,说明外环P太大了,或者内环跟不上。
注意: 外环P不能独立于内环调。如果内环响应慢,外环P再大也没用——内环根本执行不了那么高的角速度期望。这就是为什么我反复强调“先内后外”。
理想状态: 松杆后,飞机平滑回正,没有过冲,没有震荡。回正时间大约在0.5-1秒之间。
| 现象 | 原因 | 对策 |
|---|---|---|
| 回正太慢,飞机“懒洋洋” | 外环P太小 | 增加外环P(每次+0.5) |
| 回正时过冲,然后来回晃 | 外环P太大,或内环D不足 | 先减外环P,再检查内环D |
| 回正时抖动(高频) | 内环P太大,或内环D太小 | 回到内环重新调 |
3.5 完整调参流程总结
下面这张图是我自己总结的调参流程,每次做新机型我都会走一遍。
3.6 实战:在SITL里跑一次完整的Roll调参
好,理论说完了,咱们动手。下面是我在SITL里常用的调参脚本片段。
# 连接到SITL
mavproxy.py --master tcp:127.0.0.1:5760 --sitl 127.0.0.1:5501
# 在MAVProxy里
param set ATC_RAT_RLL_P 0.15
param set ATC_RAT_RLL_D 0.003
param set ATC_ANG_RLL_P 4.5
# 起飞后切到Stabilize模式
mode stabilize
# 做横滚机动,观察日志
# 用graph命令看Rate.Roll和DesRate.Roll
graph Rate.Roll DesRate.Roll
# 如果响应慢,增加P
param set ATC_RAT_RLL_P 0.17
# 如果抖动,减小P或增加D
param set ATC_RAT_RLL_D 0.004
# 内环满意后,调外环
param set ATC_ANG_RLL_P 5.0
我的习惯: 每次改完参数,我都会在日志里加一个标记。在MAVProxy里用log mark,这样回头分析时一眼就能看出哪个参数改了。
3.7 常见问题与避坑
- 问题: 内环P和D都调好了,但飞机在悬停时Roll轴还是轻微晃动。
原因: 可能是外环P太小,或者传感器噪声太大。先检查日志里的角速度信号是否干净。 - 问题: 调参后飞机在快速前飞时Roll轴突然失控。
原因: 内环P在高速气流下可能不足。我遇到过类似情况,后来在风洞里测试才发现是桨效变化导致的。解决办法是适当增加P,或者开启ATC_RAT_RLL_FF前馈补偿。 - 问题: SITL里调得好好的,真机上一飞就抖。
原因: SITL的模型太理想了,没有考虑机架振动和电机延迟。我曾经在SITL里把P调到0.25,真机上直接抖散架。建议SITL调参时留20%的余量。
最终提醒: 调参不是一蹴而就的。你可能需要反复迭代3-4轮,才能找到一组满意的参数。每次只改一个参数,飞一个起落,看日志,再改。这是最笨的方法,也是最有效的方法。