3. 配置 Stabilize(增稳)模式:参数设置、姿态控制原理与仿真测试

Stabilize 模式,说白了就是飞控的「自动回正」模式。你松手,飞机自己就水平了。这是所有自稳飞行的基础,也是你学 SITL 仿真第一个要玩透的模式。

我个人习惯把 Stabilize 叫做「拐杖模式」——它帮你扶着飞机,但不会替你走路。你推杆它就动,你松杆它就停。嗯,这里要注意:它没有位置保持能力,风一吹还是会飘走的。

3.1 Stabilize 模式的核心控制逻辑

先看一张图,把整个控制链路理清楚。我当年刚接触 ArduPilot 时,就是靠这张图把姿态控制串起来的。

Stabilize 模式姿态控制链路 遥控器输入 目标姿态角 姿态误差 PID 控制器 混控 → 电机 IMU 姿态估计 关键点: • 松杆 → 目标姿态 = 水平 • 推杆 → 目标姿态 = 杆量 • 误差 = 目标 - 当前

流程其实很简单:遥控器摇杆给出角度期望 → 飞控算出当前姿态与期望的差值 → PID 算出力矩 → 混控器分给四个电机。你想想看,这不就是最经典的闭环控制吗?

3.2 关键参数设置

Stabilize 模式涉及的参数不多,但每个都很要命。我曾经在项目里因为一个 ATC_ANG_RLL_P 没调好,飞机在天上跟喝醉了似的晃悠。

参数名 默认值 作用 我的建议
ATC_ANG_RLL_P 4.5 横滚角度 P 增益 从 4.0 起步,逐步加
ATC_ANG_PIT_P 4.5 俯仰角度 P 增益 与横滚保持一致
ATC_ANG_YAW_P 4.5 偏航角度 P 增益 可以比横滚小 0.5
ATC_RAT_RLL_P 0.15 横滚角速率 P 增益 内环,先不动
ATC_RAT_RLL_I 0.15 横滚角速率 I 增益 消除稳态误差用
ATC_RAT_RLL_D 0.003 横滚角速率 D 增益 抑制超调,小心震荡
调参口诀:先调外环 P,再调内环 P,最后加 I 消静差。D 增益能不动就不动——我见过太多人把 D 调大后飞机变成「振动棒」。

3.3 在 SITL 中配置 Stabilize 模式

好,理论说完了,咱们动手。打开你的终端,启动 SITL:

sim_vehicle.py -v ArduCopter --map --console

等控制台和地图都出来之后,用 param fetch 把参数拉下来。我个人习惯先检查一下默认参数:

param show | grep ATC_ANG

你会看到类似这样的输出:

ATC_ANG_RLL_P    4.500
ATC_ANG_PIT_P    4.500
ATC_ANG_YAW_P    4.500

嗯,默认值 4.5 对于大多数四轴来说偏大。我建议先降到 3.0 试飞,安全第一。

接下来把飞行模式切到 Stabilize。用 Mission Planner 或者直接通过 MAVProxy 命令:

mode stabilize

你会看到控制台输出 Mode: STABILIZE。这时候解锁:

arm throttle

推一点油门(大概 30%),飞机应该就离地了。注意看地图上的姿态指示器——你松杆,它应该自己回平。

重要:第一次在 SITL 里飞 Stabilize 模式,一定要把 SIM_SPEEDUP 设成 1(实时速度)。我曾经图快设成 10,结果飞机姿态震荡到失控,我都没来得及切模式。

3.4 仿真测试与调参实战

飞机飞起来之后,咱们做几个测试动作:

  1. 松杆回正测试——打一点横滚,然后松杆。飞机应该在 1-2 秒内回平。如果回得太慢,加大 ATC_ANG_RLL_P;如果来回晃,减小它。
  2. 阶跃响应测试——快速推杆到 30° 俯仰,然后保持。观察飞机是否快速到达并稳定在 30°。如果 overshoot 明显,考虑加一点 D 增益。
  3. 抗风扰动测试——在 SITL 里加风:sim_set wind 5 0 0(5m/s 正北风)。看飞机能不能保持姿态。如果偏航被吹歪,检查 ATC_ANG_YAW_P。

我记得有一次做抗风测试,飞机在 8m/s 风里横滚来回摆,我查了半天发现是 ATC_RAT_RLL_I 设成了 0。加上积分项之后,飞机稳得像块石头。

3.5 常见问题与避坑指南

  • 飞机解锁后直接翻倒——检查 AHRS_ORIENTATION 和 FRAME_CLASS 是否匹配你的机型。我遇到过有人用 X 型四轴却设成了 + 型。
  • 姿态回中太慢——加大外环 P 增益,但别超过 6.0。超过这个值,飞机大概率开始抖。
  • 偏航锁不住——检查 ATC_ANG_YAW_P 和 ATC_RAT_YAW_P。偏航的响应天生比横滚俯仰慢,别着急。
  • 油门推了飞机不升——确认 MOT_SPIN_ARM 和 MOT_SPIN_MIN 设置正确。有时候是电机没怠速。

我的调参流程总结:

  1. 把所有 ATC_ANG_*_P 设为 3.0,ATC_RAT_*_P 保持默认
  2. 试飞,观察回中速度和震荡情况
  3. 每次加 0.5 外环 P,直到出现轻微震荡,然后退回 0.3
  4. 如果存在稳态误差(比如飞机一直偏左),加内环 I 增益,每次 0.02
  5. 最后微调 D 增益抑制超调,但不要超过 0.008

Stabilize 模式是飞控调试的基石。你在 SITL 里把它调顺了,后面学 AltHold、Loiter 甚至 Auto 模式都会轻松很多。说白了,姿态控制就是飞控的「内功」,内功练好了,什么招式都使得出来。