4. 飞行模式详解:Stabilize / AltHold / Loiter / PosHold / Auto / RTL 模式原理与适用场景

飞行模式,说白了就是飞控的大脑在不同场景下切换的“工作姿势”。很多新手一上来就盯着 PID 调参,结果飞起来发现模式切换时飞机乱窜,其实根子在于没搞懂每个模式到底在干什么。

我个人习惯把 ArduPilot 的飞行模式分成三类:纯手动、半自动辅助、全自动。今天咱们就把最常用的六个模式掰开揉碎讲清楚。

核心观点:选对模式比调好参数更重要。模式是飞控的行为逻辑,参数只是行为的具体数值。

ArduPilot 多旋翼飞行模式分类框架 ArduPilot 多旋翼飞行模式分类 纯手动模式 飞手直接控制 无位置/高度保持 Stabilize 姿态稳定,无位置保持 半自动辅助模式 部分状态由飞控接管 高度/位置辅助保持 AltHold 高度锁定,水平手动 Loiter 位置+高度锁定 PosHold 位置保持(惯性辅助) 全自动模式 飞控完全接管 按任务或逻辑飞行 Auto 按航点任务飞行 RTL 自动返航并降落

4.1 Stabilize 模式——最纯粹的“手动挡”

Stabilize 是 ArduPilot 最基础的飞行模式。它只做一件事:把飞机的姿态稳住。你松杆,飞控就把飞机拉平;你推杆,它跟着你的指令倾斜。

但注意,它不保持高度,也不保持位置。你推油门,飞机会上升;收油门,它就下降。水平方向也一样——你往前推杆,飞机会一直往前飞,不会自己停下来。

适用场景:手动飞行训练、特技飞行、飞控参数初步调试。我个人习惯在第一次试飞新机架时先用 Stabilize 模式,确认基本姿态响应正常。

我曾经遇到一个用户,在室内用 Stabilize 模式飞,结果一松油门飞机直接砸地。原因很简单——Stabilize 不会帮你维持高度,油门完全由你控制。所以室内飞行,我建议至少用 AltHold。

4.2 AltHold 模式——高度锁定的“半自动”

AltHold 在 Stabilize 的基础上加了一层高度控制。飞控通过气压计和加速度计融合估算高度,然后自动调节油门来维持当前高度。

你想想看,这意味着什么?你推油门到 50% 左右,飞控找到悬停油门点后,你就可以松手了。飞机就悬停在那个高度。想上升?轻轻推一点油门。想下降?收一点油门。

但水平方向还是全手动——你往前推杆,飞机还是会飘走。

特性 Stabilize AltHold
姿态稳定 ✓ ✓
高度保持 ✗ ✓
位置保持 ✗ ✗
油门控制方式 直接控制电机 控制高度目标

注意:气压计受气流和温度影响很大。在强风或快速下降时,AltHold 的高度精度会下降。我见过有人在快速下降时切换到 AltHold,结果飞控误判高度,直接给满油门上窜——这叫“高度跳跃”,要小心。

4.3 Loiter 模式——真正的“悬停”

Loiter 是 AltHold 的升级版。它不但锁高度,还锁水平位置。飞控用 GPS 和光流(如果有)来感知位置偏移,然后自动修正。

说白了,你在 Loiter 模式下松杆,飞机就定在那里不动。风吹一下,它自己飘回来。你往前推杆,它往前飞;你一松杆,它就刹车停住。

我个人觉得 Loiter 是新手最友好的模式。我教人飞无人机,第一节课就是 Loiter 模式——先让他感受“飞机自己会停”的安全感。

但 Loiter 有个前提:GPS 信号要好。HDOP 低于 1.5 才算合格。我遇到过 GPS 飘星的情况,Loiter 模式下飞机像喝醉了一样画圈——那就是位置估计出了问题。

调参要点:Loiter 的响应速度由 LOIT_SPEED(水平速度)和 LOIT_ACC_MAX(最大加速度)控制。数值越大,飞机响应越激进;数值越小,越柔和。

4.4 PosHold 模式——Loiter 的“兄弟”

PosHold 和 Loiter 很像,都是位置+高度锁定。但实现方式不同。

Loiter 用的是位置误差→速度指令→姿态指令的串级控制。而 PosHold 用的是惯性辅助——它先通过加速度计感知飞机在动,然后提前给出修正指令,而不是等 GPS 发现位置偏了再纠正。

效果上,PosHold 在风中的表现通常比 Loiter 更平滑,因为它的响应更及时。但代价是:如果加速度计有零偏,PosHold 会慢慢漂移。

对比项 Loiter PosHold
位置感知 GPS/光流为主 加速度计+GPS
抗风响应 滞后(等位置偏差) 提前(感知加速度)
漂移风险 GPS 飘星时漂移 加速度计零偏时漂移
适用场景 一般悬停、航拍 强风环境、精准悬停

嗯,这里要注意:PosHold 在参数 POSHOLD_ACC_Z 和 POSHOLD_P 的配合上需要花点心思。我一般先把 POSHOLD_P 设到 0.3 左右,然后根据实际漂移情况微调。

4.5 Auto 模式——全自动任务执行

Auto 模式是 ArduPilot 的“自动驾驶”模式。飞控会按照预先上传的航点任务(Mission)自动飞行。起飞、巡航、拍照、降落,全自动完成。

这个模式的核心是航点导航。飞控从一个航点飞到下一个航点,到达后执行指定的动作(比如悬停 5 秒、切换云台角度、触发快门)。

我做过一个测绘项目,用 Auto 模式飞了 200 个航点,全程不需要人为干预。但前提是——任务规划要严谨。航点高度、转弯半径、速度设置,任何一个参数不合理,都可能导致任务失败。

安全提醒:Auto 模式下,飞控会完全忽略你的摇杆输入(除非你设置了中断开关)。所以一定要在任务中设置 RTL 或 Land 作为失败保护。我曾经见过有人没设保护,结果 GPS 丢星后飞机直接飘走——那叫一个心疼。

4.6 RTL 模式——最后的“救命稻草”

RTL(Return To Launch)是每个飞手最应该熟悉的模式。它的逻辑很简单:飞机自动飞回起飞点,然后降落。

具体流程是:

  1. 飞机先爬升到预设的 RTL_ALT 高度(默认 15 米)
  2. 然后水平飞向起飞点
  3. 到达起飞点上方后,开始降落

但这里有个坑:RTL_ALT 如果设得太低,飞机可能撞到障碍物。我一般设到 30 米以上,确保有足够的越障高度。

另外,RTL 的降落行为由 RTL_LAND_DELAY 控制。如果设为 -1,飞机会直接降落;如果设为 0,飞机会悬停等待指令;如果设为正数,飞机会在降落前悬停指定秒数。

我的习惯:把 RTL 放在遥控器的一个物理开关上,而且是“瞬间切换”的那种。遇到任何异常——图传断、GPS 飘、电池电压低——我第一反应就是拨 RTL。先让飞机回来,再慢慢分析问题。

4.7 模式切换的实战建议

最后,我分享一个我自己常用的模式切换策略:

  • 起飞:用 AltHold 或 Loiter。Stabilize 起飞容易偏,不推荐。
  • 巡航:用 Loiter 或 PosHold。根据风况选择,风大用 PosHold。
  • 任务飞行:用 Auto。前提是任务规划已经在地面站验证过。
  • 紧急情况:直接切 RTL。不要犹豫,不要尝试手动救机。
  • 降落:切 Loiter 或 AltHold,手动控制下降速度。RTL 降落有时会太粗暴。

记住一句话:模式是工具,不是目的。理解每个模式能做什么、不能做什么,你才能在飞控调参和实际飞行中做出正确的判断。