跳到主要内容

GPS 救机

GPS 救机是一项高级安全功能。在遥控链路或视频链路丢失后,它可自主将飞行器飞回返航点,直至飞行员能够重新接管控制;它也能以较合理的精度着陆并自动上锁。

备注

本指南适用于 Betaflight 4.4 及更高版本的 GPS 救机。Betaflight 4.1-4.3 请参阅 GPS 救机模式 v4-1 至 v4-3

GPS 救机的工作方式

启动后,飞行器会依次执行以下动作:

  • 启用自稳模式,并以设定的爬升速率升至用户配置的高度。
  • 以 180 deg/s 的速率偏航,直至机头朝向返航点。
  • 以前倾姿态、按用户配置的速度飞向返航点。为精确控制前进速度,救机过程中四轴飞行器的机头会持续上下俯仰。
  • 如因风偏离航线,会修正姿态以保持朝向返航点,并混入适量横滚以尽量减小侧向漂移。
  • 进入用户定义的返航点距离后,以可配置的速率开始下降。
  • 接近返航点时降低前进速度,接近地面时降低下降速率。
  • 低于设定着陆高度后启用碰撞检测。
  • 接地后自动上锁。

典型应用包括:

  • 遥控链路丢失后自主返航、着陆并上锁。此方式要求将失控保护第 2 阶段设为 GPS 救机,并正确配置第 1 阶段。
  • FPV 视频链路丢失后爬升并返航。飞行员须操作模式开关,令其触发失控保护(并将失控保护模式设为 GPS 救机),或直接启用 GPS 救机。
  • 供 LOS 飞行员在失去方位感时使用的“紧急”开关。需要由飞行员操作模式开关,配置方式同上。

重要事项

警告
  • 始终使用最新版 Configurator。

  • 在依赖 GPS 救机前,务必极其仔细地测试。初始测试应使用默认值,在近距离、松软草地上进行。

  • 请记住:真实失控保护时,链路恢复后,必须将横滚或俯仰摇杆越过所设失控保护摇杆阈值(默认 30%),才能重新接管四轴飞行器。 控制权不会自动交还飞行员。视频尚未恢复时触碰摇杆,可能会中止救机。因此,真实失控保护期间不要操作摇杆,至少等到:

    • 视频已恢复且稳定;
    • RXLOSS 指示消失;
    • 信号强度指示正常。
  • 若开关触发的救机测试出现问题,或飞行器似乎悬在原地,切勿惊慌上锁。应立即关闭救机开关,即可立刻恢复完整控制。不要等待超过 15 秒,否则飞行器可能上锁坠毁。

  • 开关触发救机时不需要晃动摇杆;复位开关后会立即恢复控制权。

  • 解锁前务必 100% 确认已获得有效返航点。 否则,真实失控保护发生时四轴飞行器会立即上锁并坠毁。

  • 除非已完全确认四轴飞行器的航向正确,否则切勿启用磁力计。将手机罗盘的读数(设为显示真北而非磁北)与 Configurator 首页、Configurator 的 GPS 标签页,或 GPS_RESCUE_HEADING 调试模式中传感器标签页的 Debug 5 航向值对比,两者应在 10 度以内。若航向起初始终为北、能快速跟随快速移动、却又跳至其他数值,则磁力计数据不正确。

  • 自稳模式必须校准到能稳定、水平悬停,救机才能正常工作。飞远前先用自稳模式开关验证。现场可用摇杆校准加速度计。

  • GPS 救机的悬停油门值与失控保护第 1 阶段油门通道值均应能带来稳定悬停。可靠的确定方法如下:

    • 将失控保护开关动作设为 Stage 2,并将 Stage 2 Failsafe Procedure 设为 Land
    • 调整 Throttle value used while landing,直至四轴飞行器缓慢下降。
    • GPS Rescue Throttle Hover 和油门通道的 Stage 1 Channel Fallback value 都设为此值。
    • Stage 2 Failsafe Procedure 改回 GPS Rescue
  • 即使配置完全正确,GPS 救机也未必能让飞行器返航。

  • 不支持 3D 模式。若真实失控保护发生时四轴飞行器处于 3D 模式,不会启动救机。

已知问题

  • 不建议使用 8k8k,应使用 8k4k。 GPS 救机启用、GPS 配置为 10Hz,且同时运行自稳模式、姿态估算与 OSD 更新时,GPS 任务的 CPU 开销很高。为避免救机过程中出现瞬时处理器过载,请使用 8k4k。若 GPS 不用于救机,采用 1Hz/9600 baud 或 2Hz/19200 baud 可降低 CPU 负载,在较快的飞控上或许可使用 8k8k。
  • 未使用磁力计时,救机刚开始的航向会不正确。起飞后,GPS 至少需要数秒干净的机头向前直线飞行,才能通过地速航迹确定四轴飞行器的航向。检查 OSD 箭头:起飞后 5-10 秒(50-80m)内,它必须正确指向返航点。若计划依赖救机而 10 秒后箭头仍不正确,应返航、着陆、重新上电后再试。
  • 返程阶段的强逆风可能导致救机失败。 强风会令飞行器侧向漂移;若地面航迹与机头方向不一致,IMU 可能失去方向判断;风也可能直接将飞行器向后吹。必须设置足够大的最大俯仰角和最大油门来克服逆风。强风飞行前,先测试救机,确认飞行器能顶风前进。
  • 除非已经正确校准,并通过日志确认数据有用且准确,否则不要启用罗盘。
  • 使用 UBlox,避免 NMEA。 设为 NMEA 的 GPS 通常每秒仅更新一次或更慢,会使 GPS 救机非常顿挫,几乎无法使用。强烈建议使用 UBlox,详见下方 NMEA 说明。
  • SBAS 模式可能妨碍获取可靠 GPS 数据,且在部分地区可能不可用;发生此问题时,尝试关闭 SBAS。
  • 不可靠的 GPS 模块。 GPS 模块的性能和可靠性差异很大。不要使用无法迅速获得至少 10 颗稳定卫星,或飞行器倾斜时容易丢星的模块。
  • 飞行中出现位置突然跳变是预期现象,源于 GPS 数据更新之间的时间间隔。
  • 不建议使用 GPS_RESCUE_ALLOW_ARMING_WITHOUT_FIX 虽然可不等待 GPS 定位就起飞,但如果因接收机链路丢失而需要救机,飞行器会立即上锁坠毁。此选项只适合将基础 GPS 信息记录到日志或遥控器,以帮助寻找坠机位置的场景。
  • 不要以 1Hz 数据更新率使用 GPS 救机。 平稳工作至少需要 5Hz;2Hz 虽然返航会很顿挫,仍可能成功。1Hz 和 2Hz 仅适合在日志或 OSD 中显示简单的经纬度信息。
  • 失控保护开关的 AUX 通道激活范围绝不可与任何其他飞行模式共享。
NMEA 支持

NMEA 支持有限。若模块支持 UBlox 协议,请不要使用 NMEA。限制包括:

  • 不支持 4800 baud。
  • 只有 GPS Ports 标签页设为匹配的 baud rate,NMEA GPS 才能连接。
  • 某些 NMEA 模块输出数据过多,可能塞满串口缓冲区。
  • 除非 NMEA 模块以 5Hz 或更高频率发送数据,否则不要将其用于 GPS 救机。

若必须使用 NMEA 模块,确保它上电时会使用正确配置启动,并在依赖其救机前验证输出频率。

硬件要求

  • 加速度计必须正确微调,且飞行器能在自稳模式下稳定、水平悬停。现场可先在 Angle 模式悬停,再用摇杆消除漂移:

    • 上锁;
    • 保持上锁状态,将模式开关切至自稳模式;
    • 将油门推至最大;
    • 轻点俯仰或横滚摇杆以微调加速度计。例如,飞行器倾向于向右漂移时,向左轻点 5-10 次。
  • 使用支持 UBlox 命令的正常 GPS 模块。推荐且默认使用 UBlox,支持 UBlox M6 至 M10。若 GPS 模块不支持 UBlox,可使用 NMEA,但不推荐,见上方 NMEA 说明。

提示

带后备电池的模块会在后续重新上电时更快重新获得卫星。

  • GPS 模块必须与飞控同时上电,才能被正确检测。

  • 检查新 GPS 时,在户外稳定置于桌面并连接 Configurator,观察其获取卫星的速度。status CLI 命令会报告设置和返回的 baud rate,以及 UBlox 模块类型。

提示

优质 GPS 冷启动后,应在数分钟内获得约 20 颗卫星,其中 10-12 颗参与 3D 定位,且每颗信号良好。模块应逐步获得各卫星,而不是不断切换。将四轴飞行器倾斜不应导致参与定位的卫星丢失。放大地图观察位置变化,位置应稳定;若游走数米则不理想。模块静止于桌面时,速度应为零;可靠定位下速度不应超过 10-20 cm/s。静止时持续显示 > 25 cm/s、获取卫星很慢、在地图上漂移,或倾斜 45 度就丢失位置的模块均不应使用。一般而言,体积较大的 GPS 模块比小型模块表现更好。

已验证可用的 GPS 硬件

下表列出已有实际使用验证的模块。建议选用能以 10Hz 运行 UBlox 且支持热启动的模块。只有 GPS 模块能远离其他电子元件和线缆安装时,磁力计才可能有用。

模块UBlox10Hz热启动磁力计说明
Matek SAM-M8Q工作良好
Matek M8Q-5883QMC5883L工作良好;除非谨慎布置,否则磁力计噪声较大
iFlight M8Q-5883 V2QMC5883L工作良好;GPS 位置偶有小尖峰,磁力计噪声可能较大

气压计

如有气压计,启用后会显著改善高度估算,尤其是 5-10 分钟的短时飞行。通常能改善高度控制并让着陆更可靠。启用 ALTITUDE 调试后,在 Sensors 标签页检查气压计数据:解锁后应相当平滑。对于较长飞行,以及某些气压计硬件,气压计漂移可能比 GPS 漂移更严重。请分别测试气压计启用和禁用状态,并按预期用途设置合适的气压计信任值。

罗盘(磁力计)

若有罗盘且已用干净、无噪声的数据正确校准,它可能改善航向估算。罗盘必须远离磁场,包括线缆电流产生的磁场;即使在 7 英寸机架上,这也非常困难。校准错误或噪声过大的罗盘会损害救机。在多数 5 英寸及以下机型中,磁力计噪声过大而无实际价值。

除非准确飞行已知的“方形”航线后记录其数据,否则不要使用磁力计。日志中磁力计数据应显示清晰的 90 度航向变化;否则不要使用。如有疑虑,也不要使用。

软件设置

默认值适合初始测试,但每架四轴飞行器都必须完成以下配置:

  • 校准加速度计,使飞行器能水平悬停。
  • 失控保护第 1 阶段回退油门值设为可让飞行器稳定爬升的数值。这是飞行器刚失去信号时使用的油门。若在水面上设得过低,GPS 救机接管前的一秒内,飞行器可能已下降到水中。
  • GPS 救机悬停油门设为接近悬停的数值。救机接管后先使用此起点,PID 再在其基础上调节油门。

推荐 baud rate:57600。 使用推荐的 10Hz 数据率时,115200 几乎没有收益。较低 baud rate 可减少 CPU 解析时间,也更抗电气噪声。

GPS 救机推荐 GPS 数据率:10Hz。 若 GPS 仅用于位置记录或遥控器遥测,建议使用 5Hz 或更低。请注意:设为 20Hz 的 M8 模块会恢复内部默认频率。20Hz 需要 115200 baud 和 M9 或更高版本模块,且易受电气干扰,不推荐使用。

数据率Baud rateCPU 开销说明
20Hz115200最高仅限 M10;务必仔细测试
10Hz38400 或更高中等GPS 救机推荐 57600 + 10Hz
5Hz19200 或更高中等可用于 GPS 救机或常规用途
1-2Hz9600 或更高最低GPS 救机过慢;适合简单的位置/速度信息

此外,请阅读下方全部软件设置并确认它们适合自己的飞行器。不要快速大幅偏离默认值,务必循序渐进。

GPS 救机的启动方式

1. RC 链路丢失

此方案希望飞行器先在第 1 阶段失控保护停留足够久,以确认链路确实丢失;之后进入第 2 阶段失控保护,将其设为 GPS 救机并返航。链路恢复后,将横滚或俯仰摇杆越过所设失控保护摇杆阈值(默认 30%),即可重新接管控制。

危险

FPV 视频信号恢复前,切勿晃动摇杆,否则可能已接管控制却不知道飞向何处。请先等待信号强度指示正常且 FPV 画面可用,将横滚或俯仰摇杆越过失控保护摇杆阈值。

若遥控或 FPV 链路始终未恢复,让飞行器自行返航,它会自行着陆。

配置

  • 确认云构建固件包含 GPS 支持。
  • 启用 GPS 和 GPS 救机。
  • 在 Configurator 中确认模块能可靠获得卫星和位置。
  • 配置可启用自稳模式的模式开关。
  • 在 Failsafe 标签页中,将自稳模式通道设为第 1 阶段时启用 Level 1。这样会降低飞行器速度并调平,为救机做准备。
  • 设定第 1 阶段油门值,使飞行器在第 1 阶段悬停。
  • 将 GPS 救机悬停油门设为相同悬停值。
  • 为测试配置一个可触发失控保护的模式开关。
警告

失控保护模式开关绝不可供其他模式使用或与其共享。

  • 先将 Failsafe Mode 设为 Land,并设为直接进入第 2 阶段,以测试失控保护开关。Throttle value used while landing 应设为让飞行器缓慢掉高。着陆时不会自动上锁;此时只检查失控保护开关是否会启动着陆模式。然后按上方说明配置第 1 阶段,并设为先经过第 1 阶段。此时拨动开关会进入默认 1.5 秒的第 1 阶段,飞行器应在该时间内进入自稳模式并悬停,之后才转入第 2 阶段。
  • 最后在 Failsafe 标签页中,将失控保护模式设为 GPS Rescue
  • 若有气压计,使用 ALTITUDE 调试检查;只有它工作良好且能改善高度控制时才启用。
  • 先使用下述开关触发失控保护进行测试,确认它能可靠返航并着陆。任何时候若认为救机失败,都应取消测试。
  • 只有 100% 确信能可靠返航后,才测试真正的硬性遥控链路丢失。不要关闭遥控器电源来测试。 大多数遥控器上电时要求所有开关均为“关”,重新连接后会导致上锁坠毁。应在遥控器设置菜单中禁用 Tx 模块。链路恢复后,请记得将横滚或俯仰摇杆越过失控保护摇杆阈值以重新接管控制。

2. 由开关触发的失控保护仿真

测试救机配置时,应让飞行器仿真真实的链路丢失。设置 Failsafe Mode,使开关拨动后飞行器先进入第 1 阶段直至超时,再进入第 2 阶段,开始爬升并返航。这会直接仿真真实救机的完整过程,但可随时退出。

也可绕过第 1 阶段,直接进入第 2 阶段。这样失控保护开关可无第 1 阶段延迟地启动救机,适合应对 FPV 视频丢失,或 LOS 飞行时失去方位后返航。

开关触发的失控保护中,只要复位失控保护开关即可重新接管控制。

提示

不要惊慌误上锁,复位失控保护开关即可。

配置

  • 完成上述基础配置,包括自稳模式和启用失控保护的模式开关。
  • 使用失控保护开关进行谨慎测试。

3. 通过 GPS 救机模式开关直接启动 GPS 救机

需要紧急“安全返航”功能时,此方式很有意义。例如远距离飞行时失去 FPV 信号,或 Acro 模式下在远处失去控制。拨动开关后,飞行器会立即调平、爬升并开始返航;复位开关后会立即恢复控制。

Modes 标签页的“GPS Rescue Mode”选项可在指定模式通道上提供此功能。

相对于失控保护开关方案,其主要优点是 Failsafe 本身可保留启动救机前的第 1 阶段延迟,让短暂掉线只在 OSD 显示 RXLOSS 而不立即触发救机;与此同时,GPS 救机模式开关不经过第 1 阶段延迟,可立即启动救机。

配置

  • 若不需要 GPS 救机处理信号丢失,可将飞行器设为失控保护时坠落,并保持第 1 阶段默认设置。
  • 否则,按上述说明配置并测试包含第 1 阶段的 GPS 救机失控保护。
  • 在 Failsafe 面板右侧配置 GPS 设置,包括悬停油门值。
  • 配置模式开关以启用 GPS Rescue,而不是失控保护。
  • 测试确认:激活 GPS 救机开关后立即爬升,复位开关后立即恢复控制。

使用建议

  • 在近距离松软草地上,进行大量开关触发的 GPS 救机测试。 只有 100% 确信每次救机均可正常工作后,才能依赖它。

  • 应禁用接收机模块来测试信号丢失与恢复,不要关闭遥控器。 多数遥控器上电时要求所有开关均为“关”;若测试期间关机再开机,解锁开关位置会触发立即上锁坠毁。使用遥控器内置 Tx 模块的启用/禁用功能。信号丢失时 OSD 应显示 RXLOSS信号丢失后恢复控制时,记得将横滚或俯仰摇杆越过失控保护摇杆阈值。

  • 务必准确设置 GPS 救机悬停油门。 救机开始后,GPS Rescue Hover 是油门起点;GPS 救机 PID 会在其上下、受最小和最大限制约束地调节油门。设得过低时,PID 尚未“追上”前飞行器可能立刻掉高。略偏高通常更安全,爬升过快通常比直坠的问题小。

  • 务必手动将第 1 阶段油门值设为悬停值。 若第 1 阶段油门通道值设为 Auto,飞行器会立即下坠,因为 Auto 表示“关闭油门”。应改为悬停值。

  • 起飞前始终确认自稳模式下能平直、准确地悬停。 返程侧向漂移通常是加速度计存在横滚偏置。现场可也应使用摇杆微调。

  • 配置新 GPS 模块时,请在户外使用笔记本电脑和网络连接进行功能检查。 在 Configurator 地图中放大查看 X-Y 漂移,并数值检查高度漂移。确认获取卫星需要多久、当地可获得多少颗卫星,以及使用 set GPS_UBLOX_USE_GALILEO = ON 启用 Galileo 是否能改善卫星数量或定位锁定质量。

  • 起飞前始终在 OSD 检查 GPS 是否提供稳定的位置读数。 解锁至少需要 8 颗卫星,最好 10 颗。获得卫星后,观察 OSD 的速度和高度值,它们不应跳变。有时还需等待 30-60 秒才会稳定。不要依赖 OSD 蓝灯;它会在位置锁定时闪烁,但位置锁定并不等于返航点锁定。

  • 起飞前确认已获得返航点锁定,飞离时确认返航箭头指向返航点。 解锁后,确认 OSD 显示返航图标和返航距离;起飞后,确认返航箭头正确指向返航点。

  • 在 OSD 中显示 osd_gps_sats_show_pdop 值;该值接近或低于 1.0 时,通常表明定位稳定且准确。

  • 获得足够卫星且解锁前,将四轴飞行器向各方向倾斜 45 度,确认不会丢失大量卫星。 边缘性能的 GPS 模块在前倾返航时可能丢星,导致救机极不稳定或失败。

  • 任务关键飞行开始时,飞往远处前先用开关完成一次近距离救机测试,以确认救机行为正常。 确认飞行器会转向返航点后,复位测试开关。模式开关可随时立即进入或退出 GPS 救机。

  • 慎重考虑 GPS_SET_HOME_POINT_ONCE 选项。 每次重新解锁都重设返航点,适合测试和常规使用;每次解锁时返航位置都会更新。缺点是飞行中若曾上锁,GPS 救机会返回新的解锁点而非原始返航点。飞行器若在不佳位置意外上锁,将永远无法返回原点。若选择只设置一次返航位置,必须先确认返航位置估算可靠,并仅在飞行器位于希望它返回的实际地点时首次解锁。

  • 第 1 阶段失控保护配置非常重要。 默认值并不合适,可选择:

    • 保持最后通道值:配置第 1 阶段在掉线时保持所有当前通道值。短于第 1 阶段时长的瞬断会让飞行器继续直飞。远距离飞行员有时偏好此方式,但必须在 OSD 监控接收机链路。
    • 手动启用自稳(Angle)模式、将油门设为略微爬升、摇杆居中:通常是更安全的选择,可让救机以最干净的状态接管。
  • 注意:没有罗盘时,飞行器会根据 GPS 地面航迹“学习”航向。 在仅依靠 GPS 数据正确确定姿态前,飞行器必须至少以 1-2m/s 进行数秒机头向前的干净直线飞行。起飞后始终直飞;有风时直接迎风或顺风飞行,使地面航迹与机头方向一致。短暂直飞后检查箭头是否转动并指向返航点,通常需飞行 30-50m。若不正确,应返航、重新上电后重试。

  • 起飞后不久,即使没有正确航向信息,也能在很近距离启动救机。 此时飞行器会沿启动时的航向飞行,直至 IMU 判断出机头指向;这可能需要一段时间,飞行器可能先飞出 50 甚至 80m,之后才转回返航点。因此起飞前检查返航箭头很重要。

  • 激活 GPS 救机“模式”开关会立即启动 GPS 救机。 它不使用失控保护系统,可作为丢失 FPV 信号或 LOS 飞行失去方位时的“紧急”救机。注意飞行器的惯性会令其继续运动至少数秒,不应期待瞬间改变轨迹。

  • 强风时,救机中允许的最大机体角度 GPS_RESCUE_MAX_RESCUE_ANGLE 可能需要增大,以保证飞行器可顶风取得前进速度。最大油门也应足以克服强逆风。风很大时,尤其是强顺风,飞行器可能过冲或粗暴着陆。

  • 救机期间,内置 Betaflight 碰撞检测会自动启用,即使已在设置中禁用。返程途中若飞行器发生严重碰撞或撞击,可能立即上锁。它与灵敏得多的着陆撞击检测不同:后者只会在救机后期、高度低于 GPS_RESCUE_LANDING_ALT 时启用。

救机阶段

救机有五个依序执行的“正常”阶段:ASCENDROTATEFLY HOMEDESCENDLAND。无救机时通常处于 IDLE 阶段。

每个阶段有不同目标,必须满足相应退出条件才会进入下一阶段。

Sanity checks 会监测各阶段表现,若故障持续过久则会使飞行器上锁。

阶段受控轴功能结束条件
ASCEND偏航和俯仰按设定速率爬升或下降,快速偏航以减少航向误差达到返航高度
ROTATE除横滚外的所有轴继续偏航以减小航向误差指向返航点的航向误差小于 15 度
FLY HOME所有轴按设定高度和速度返航,持续调整偏航距返航点进入 GPS_RESCUE_DESCENT_DIST
DESCEND所有轴稳步降低高度和速度,持续调整偏航高度低于 GPS_RESCUE_LANDING_ALT
LAND除横滚外的所有轴按设定速率下降,前进速度目标为零,持续调整偏航与地面发生撞击

说明:

  • 救机过程中的健全性检查失败或严重撞击,也会终止救机。
  • 所有阶段均启用偏航控制,从 ASCEND 阶段开始。系统使用简单 P 控制器,基于飞行器当前位置估算,使机头指向返航点。控制偏航/航向误差的最大旋转速率为 90 deg/s。
  • 救机所有阶段中,系统在 GPS_RESCUE_THROTTLE_MINGPS_RESCUE_THROTTLE_MAX 限制内,围绕设定的 GPS_RESCUE_THROTTLE_HOVER 调整油门,并用含加速度项的 PID 控制高度。油门会随机体角度(偏离水平面的角度)动态调整。
  • 俯仰角控制前进速度:ASCEND 阶段以半最大速率启用;ROTATE 阶段指向返航点的误差角小于 45 度后完全启用;直至 LAND 阶段前都保持完全启用,进入 LAND 后再次降为半速率。
  • 仅在偏航速率较低时才会混入横滚,它对处理风造成的航向漂移很重要;只在 FLY HOMEDESCEND 阶段生效。
  • DESCEND 阶段中,飞行器试图保持在预计着陆点外 2m 的圆柱面上,保持朝向返航点,同时维持约 2m 距离。此距离旨在减小飞越返航点的风险。有风时,通常会在此 2m 圆柱的下风侧下降。
  • 着陆模式中,四轴飞行器可旋转,并会前后俯仰以尝试在返航点外 2m 处着陆。若 GPS 漂移,着陆时显示的最终返航距离和返航方向代表 GPS 当时认为的“家”。
  • 自动上锁由触地时的加速度计尖峰触发。它仅会在 DESCEND 模式下、高度低于 GPS_RESCUE_LANDING_ALT 后启用。若高度已向上漂移,飞行器虽已触地而 GPS 仍认为它在高空,撞击时不会上锁。此时着陆健全性检查应在约 10 秒后使飞行器上锁。
  • 对开关触发且遭遇致命健全性检查错误的救机,会进入 DO_NOTHING 阶段:平直自稳模式,油门比 GPS 救机悬停油门低 100 步,最长 20 秒。这给飞行员复位开关而非立即上锁的机会。若开关触发救机时发现未按上述阶段工作,应立刻复位开关重新接管。

高度控制选项

GPS_RESCUE_ALT_MODEGPS_RESCUE_RETURN_ALTGPS_RESCUE_INITIAL_CLIMB 共同决定返航飞行的目标高度:

GPS_RESCUE_ALT_MODE说明
MAX_ALT默认值。飞行器爬升至自解锁以来曾达到的最高高度,再加上以米计的 GPS_RESCUE_INITIAL_CLIMB。适合飞行员先爬过航线中最高障碍物后再远飞的场景。
FIXED_ALT按以米计的 GPS_RESCUE_RETURN_ALT,在返航点上方精确高度返航。低空绕树木或建筑飞行时,可设为已知能越过障碍物的高度。
CURRENT_ALT在救机开始时的当前高度基础上,爬升 GPS_RESCUE_INITIAL_CLIMB。适合测试或紧急“恐慌”开关场景。

设置

项目说明
GPS_RESCUE_MIN_START_DIST能启动“正常”GPS 救机所需的最小返航点距离,单位米。距离小于此值时,救机可能无法像平常一样稳定控制。
GPS_RESCUE_ALT_MODE返航高度模式。FIXED_ALT 按设定的 RETURN_ALT 返航;MAX_ALT 在飞行中达到的最大高度稍上方返航;CURRENT_ALT 在救机启动高度加初始爬升量处返航。
GPS_RESCUE_INITIAL_CLIMBGPS_RESCUE_ALT_MODE 选定的当前或最高高度之上所要爬升的高度,单位米。
GPS_RESCUE_ASCEND_RATEASCEND 阶段的目标爬升速率,单位 cm/s。需要时可提高以加快爬升。
GPS_RESCUE_RETURN_ALTFIXED_ALT 模式下的返航高度,单位为高于起飞高度的米。
GPS_RESCUE_GROUND_SPEED返程飞行中朝向返航点的目标速度,单位 cm/s。
GPS_RESCUE_MAX_RESCUE_ANGLE救机期间允许的最大俯仰和横滚角,单位度。强风下难以保持前进速度时,可能需高于默认值。
GPS_RESCUE_ROLL_MIX返程偏航时混入的相对横滚量。100 为正常量,0 为不混入。不要关闭它,否则有风漂移时飞行器会侧滑。
GPS_RESCUE_PITCH_CUTOFF应用于速度 D 项的一阶低通滤波截止值,用于平滑俯仰抖动。默认 75 表示 0.75Hz。更慢会更平滑,但可能导致缓慢摆动和控制变差。
GPS_RESCUE_IMU_YAW_GAIN设置强风情况下 IMU 对航向误差的适配激进程度。默认 10,范围 5-20。值越大,IMU 航向误差校正范围越宽、速度越慢。过高可能导致无休止绕圈。
GPS_RESCUE_DESCENT_DIST飞行器开始下降时距返航点的距离,单位米。距离较短会使下降更接近垂直,快速返航时可能造成过冲。
GPS_RESCUE_DESCEND_RATEDESCENDLANDING 阶段的目标下降速率,单位 cm/s。DESCEND 开始时下降速率最多可达此值两倍,着陆时会降至设定值。
GPS_RESCUE_LANDING_ALT下降期间启用自动上锁时、高于起飞点的高度,单位米。若在此高度以下且距返航点 5m 内启动,也会使飞行器上锁。
GPS_RESCUE_DISARM_THRESHOLD撞击自动上锁功能的灵敏度。飞行器噪声较大而提前上锁时,可尝试增大;值过高时,飞行器可能弹跳而无法在着陆时上锁。
GPS_RESCUE_THROTTLE_MINGPS 救机代码可施加的最低油门值。重型四轴飞行器若需较高油门悬停,应略微提高。
GPS_RESCUE_THROTTLE_MAXGPS 救机代码可施加的最高油门值。除非飞行器很重或强风中阻力很大,否则通常无需提高。
GPS_RESCUE_THROTTLE_HOVER重要。 接近返航阶段所需油门,或能令飞行器在自稳模式稳定缓慢爬升的悬停油门值。油门 PID 在限制范围内围绕该基础值变化。必须正确设置,确保救机启动时飞行器爬升而非掉高,且在“DO NOTHING”模式中下降。
GPS_RESCUE_SANITY_CHECKS设置救机失败时的处理方式。参阅“健全性检查选项”。
GPS_RESCUE_MIN_SATS取值 5-50。配置 GPS 救机时,设置返航点和允许解锁所需的卫星数量及 3D 定位条件。较低值可能导致 GPS 控制差和空中上锁。默认 8。少于 5 颗卫星没有 3D 定位,无法仅靠 GPS 控制高度。
GPS_RESCUE_ALLOW_ARMING_WITHOUT_FIX允许无返航点定位时解锁的选项。见上方警告,实际飞行不要使用。
AP_ALTITUDE_P (≤ v4.5.3: GPS_RESCUE_THROTTLE_P)当高度低于应有值时增加油门、反之降低的 P 增益。过高会振荡;过低则让 I 项承担更多工作,导致缓慢振荡或控制差。
AP_ALTITUDE_I (≤ v4.5.3: GPS_RESCUE_THROTTLE_I)高度持续低于应有值时增加油门的 I 增益。过高导致缓慢振荡;过低会留下持续高度误差。
AP_ALTITUDE_D (≤ v4.5.3: GPS_RESCUE_THROTTLE_D)飞行器快速下降时增加油门、反之降低的 D 增益。过高会造成振荡或高度控制抖动,下降早期尤其明显。
GPS_RESCUE_VELOCITY_P当前进速度过低时增大俯仰角的 P 增益。
GPS_RESCUE_VELOCITY_I前进速度持续过低时增大俯仰角的 I 增益。
GPS_RESCUE_VELOCITY_D飞行器减速、失去朝返航点速度时增大俯仰角的 D 增益。
GPS_RESCUE_USE_MAG使用磁力计数据提高航向精度。只有磁力计已校准,且日志显示高质量无噪声罗盘数据时才启用。
ALTITUDE_LPF用于平滑高度值的截止值,单位 Hz x 100。平滑过多会导致摆动。
ALTITUDE_D_LPF用于平滑高度导数(垂直速度)值的截止值,单位 Hz x 100;同时会平滑 Vario 信号。

PID 调参建议

  • GPS_RESCUE_YAW_P 应足够高,使飞行器能以所选速度良好转向并跟踪返航点。过高时,返程中机头会左右游移。默认值已相当合适。
  • GPS_RESCUE_ROLL_MIX 为 100 时,可提供在自稳模式下实现“协调”转弯的大致适量横滚。更高值增加横滚与偏航的相对比例,较高速返航时可能需要;0 表示完全不混入横滚。使用 GPS_RESCUE_HEADING 调试查看实际施加的偏航与横滚量,并将飞行器姿态与返航点方位角对比。
  • 高度 PIDAP_ALTITUDE_PAP_ALTITUDE_IAP_ALTITUDE_D;≤ v4.5.3 为 GPS_RESCUE_THROTTLE_PGPS_RESCUE_THROTTLE_IGPS_RESCUE_THROTTLE_D)最好在很低的目标地速下调节,例如 50 cm/s;启动 GPS 返航时让飞行器朝向返航点,并设置相对较陡的初始爬升率。PID 过高会在初始爬升后造成垂直振荡,D 项引起的振荡比 P 项更快。从提高电机推力到获得高度存在很大延迟。GPS_RESCUE_THROTTLE 调试最有用,它显示油门 P、D 及实测高度与目标高度。
  • 速度 PIDGPS_RESCUE_VELOCITY_PGPS_RESCUE_VELOCITY_IGPS_RESCUE_VELOCITY_D)应在高度 PID 调好后再调。它们直接控制飞行器的俯仰角。P 和/或 D 过多可能导致俯仰缓慢振荡,I 过多可能过冲。GPS_RESCUE_VELOCITY 调试显示 P、D,以及返航速度与速度目标。先将 I 设为零,随后增加 I,直至消除剩余过冲或欠冲;I 过多会持续缓慢摆动。
  • 对典型 5 英寸自由式四轴飞行器,默认值应“大致正确”。
  • 飞行器的目标是朝返航点方向的速度。若需顶风飞行,GPS_RESCUE_MAX_RESCUE_ANGLE 设定的最大角度必须足以克服风力;顶风时 GPS_RESCUE_VELOCITY_I 很重要。大风天务必确认飞行器能顶风前进。顶风非常耗电,顺风飞远时必须考虑返程电量。

预期行为

  • 开关触发的失控保护(包括 GPS 救机)期间,上锁开关仍有效。若飞行器配置为上锁后重设返航点,上锁操作应格外谨慎。
  • 为防止飞走,若卫星数低于设定 GPS 救机最小卫星数的一半,且累积增减计时超过 10 秒,低卫星数健全性检查会中止救机。
  • 救机启动时,若基础初始健全性检查失败,例如卫星数不足,会在飞行器上锁前进入 20 秒“什么也不做、仅悬停”阶段。例如,视频丢失时飞行员拨动开关,而此时卫星数可能不足。
  • 即使禁用所有健全性检查,健全性失败累计 20 秒仍会使飞行器上锁。这是防止无限飞走的安全措施。“关闭所有健全性检查”选项仅供测试。
  • 通过 GPS 地面航迹估算 IMU 朝向所需的最低速度为 2m/s。
  • 通过失控保护开关启动 GPS 救机时,无需将摇杆移动超过 30% 才能重新接管;复位开关即立即恢复控制。
  • GPS 到返航点的距离以 cm(而非米)测量和记录,角度以十分之一度(而非度)测量和记录,以提高准确性与平滑度。
  • 用户用开关启动 GPS 救机时,AUX 通道仍保持“实时”。因此,开关触发失控保护期间仍可上锁、开始或停止记录等。飞行通道(RPTY)会按失控保护设置被设定或保持;失控保护期间绝不会传递实时摇杆值,不过系统仍监测摇杆位置,因为需晃动超过 30% 才能通过摇杆动作退出 GPS 救机。
  • 所有开关触发的救机中,若飞行员意识到救机失败,应复位开关,并在情况无法挽回前接管控制。
  • 俯仰角变化速率限制为 25 deg/s。
  • 爬升和下降速率均可由用户配置。
  • 从较高处下降时,最大下降速率为配置下降速率的 2 倍;接近地面时会按比例减小至配置值。
  • 横滚会混入偏航修正,以更好维持预定返航轨迹,尤其是在有风时。
  • 默认横滚量按偏航值的百分比设置,默认 100 时,小偏航速率下横滚和偏航量相等;偏航值较高时,横滚分量会线性减小至零。
  • GPS 救机设置会写入 Blackbox 日志头字段。

问题与解决方案

问题解决方案
无法解锁GPS 卫星数不足。最好有 10 颗,请耐心等待。
开关启动后原地徘徊因初始化失败进入“什么也不做”模式;复位开关。
1 秒内未调平未设为在失控保护第 1 阶段进入自稳模式。
启动时突然掉高,随后恢复第 1 阶段油门值过低或未设置。
启动 1 秒后掉高并保持低位GPS 救机悬停油门值过低。
返程中向一侧偏航迹自稳模式校准不正确,或飞行中丢失校准。
最后着陆阶段漂移自稳模式校准不正确,或飞行中丢失校准。
返航飞行时上锁FLY_HOME 阶段有 20 秒或更久未能达到目标速度或高度的 50%。
返程高度始终偏低或偏高悬停值不正确,或油门 I 不足。
返程高度随机偏低或偏高GPS 高度漂移;起飞前检查其稳定性。
启动时高度过冲正常行为。
启动时高度低于目标使用当前高度时提高 gps_rescue_alt_buffer;或油门 P、D 过低。
返程时高度快速摆动油门 P、D 过高。
返程时高度缓慢摆动油门 I 过高。
转向前等待很久到达目标高度延迟:爬升距离大而上升速率过低,或悬停值过低。
启动时飞向错误方向未以 > 2m/s 的速度直飞足够久,让 IMU 校准到 GPS;或磁力计在报告错误信息。
返程时俯仰快速上下摆动通常会出现;俯仰 P、D 可能过高。
返程时俯仰缓慢上下摆动俯仰 P、D 过低,或俯仰 I 过高。
着陆时越过目标俯仰 I 过高;下降过快或距离过短。
偏航一直左右摆动偏航 P 过高,较少见。
偏航控制松散偏航 P 过低,通常仅见于大型机。
着陆很重且不上锁GPS 高度向下漂移;到达着陆高度前已触地。起飞前检查 GPS 高度稳定性。
每秒出现大幅控制跳变GPS 设备每秒只报告一次值;若使用 NMEA,请切换至 UBlox 模式。

健全性检查选项

健全性检查会监测开关触发与真实链路丢失时的 GPS 救机。它是救机流程失败后的最后一道保护,验证:

  • 救机系统具有可指向的返航点;
  • 救机开始时飞行器位于最小距离外;
  • 救机开始时卫星数正常;
  • 救机过程中卫星数持续正常;
  • ASCEND 阶段飞行器没有挂在树上或因其他原因无法爬升;
  • FLY_HOME 阶段朝返航点的速度至少为设定速度的一半;
  • LANDINGDESCEND 阶段下降速率至少为设定下降速率的一半,即没有挂在树上。

健全性检查失败意味着飞行器无法成功完成救机。经过合理等待后,飞行器会被上锁,使其坠落而不会继续飞远、爬得过高、耗尽电池或烧坏电机。每种可能故障在上锁前均有一段宽限期。

健全性检查不能覆盖所有故障可能。例如,FLY_HOME 阶段不会检查绝对高度。错误或不稳定的 GPS 数据可能在无法察觉的情况下使飞行器飞向错误方向,也可能误触发健全性检查,或妨碍识别真实故障。

共有三种健全性检查模式:

  • RESCUE_SANITY_ON:最严格模式。GPS 通信丢失、飞走、卫星数过低、启动救机时无返航点等硬错误均会立即上锁。真实救机和开关触发救机的行为相同。
  • RESCUE_SANITY_FS_ONLY默认模式。 对真实 RC 链路丢失采用严格健全性检查,但开关触发失控保护会留出额外时间以便复位开关。例如,若开关启动救机时没有返航点,飞行器会进入 20 秒“什么也不做”模式。
  • RESCUE_SANITY_OFF:仅供测试。只有允许无返航点定位解锁、确实没有返航点定位、且发生硬失控保护(接收机链路丢失)时,飞行器才会立即上锁。其他情况下,健全性检查失败会进入 20 秒“什么也不做”模式,之后上锁。该选项并未完全关闭所有健全性检查,这是防止无限飞走的安全措施。

带时间条件的健全性检查使用累积增减计数器:数值“异常”时每秒加 1,数值“正常”时每秒减 1;累积器达到超时时,健全性检查失败。

模式SANITY_ON,或 SANITY_FS_ONLY 中的真实失控保护摇杆触发的 SANITY_FS_ONLY,或 SANITY_OFF说明
启动时无返航点定位立即上锁Do_Nothing 20 秒后上锁通常无返航点定位时无法解锁。
在最小返航距离内启动立即进入着陆模式立即进入着陆模式飞行器应缓慢自行着陆并在触地时上锁。
GPS 硬件故障立即上锁10 秒后上锁飞行中不应发生。
启动时处于翻机恢复模式立即上锁10 秒后上锁翻机恢复模式下 GPS 救机无法工作。
爬升阶段失败10 秒后上锁10 秒后上锁累积 10 秒爬升速率低于设定速率的一半。
卫星数过低10 秒后上锁10 秒后进入 Do Nothing,再等 20 秒后上锁累积 10 秒卫星数低于 GPS 救机最小数量的一半。
返航失败15 秒后上锁15 秒后进入 Do Nothing,再等 20 秒后上锁累积 15 秒无法在返航点方向保持至少一半的设定速度。
着陆阶段失败10 秒后上锁10 秒后上锁累积 10 秒下降速率低于设定速率的一半。
  • “什么也不做”会使摇杆居中并保持悬停,给用户时间复位失控保护开关,或等待信号侥幸恢复。

FPV 视频丢失时,开关触发的 GPS 救机可能有帮助,飞行器应迅速爬升到足以恢复视频的高度。若 20-30 秒内视频仍未恢复,最好复位失控保护开关、上锁并开始搜寻。这样可让飞行器停留在相对靠近视频丢失点的位置,并保留电池容量。

GPS_RESCUE_ALLOW_ARMING_WITHOUT_FIX

启用 GPS 救机后,只有获得 GPS 位置定位且卫星数至少达到 gps_rescue_min_sats 所设最小值,才允许解锁。启用 allow_arming_without_fix 可绕过此检查。

允许无定位解锁时,若飞行器在未设置返航点的情况下解锁并启动 GPS 救机,无论是真实 RC 链路丢失还是开关触发的失控保护测试,飞行器都会进入“什么也不做”模式(启用着陆检测时缓慢下降)20 秒,然后上锁。它绝不会返航,因为根本不知道返航点在哪里。

若希望 GPS 救机带飞行器返航,绝不要在没有返航点定位时允许解锁。

该选项仅用于测试。

调试

GPS 救机提供多项调试。GPS_RESCUE_TRACKING 可概览设定与实际达到的高度和速度;高度 PID 调参使用 GPS_RESCUE_THROTTLE,速度 PID 调参使用 GPS_RESCUE_VELOCITYGPS_RESCUE_HEADING 有助于检查航向相关信息,并比较 GPS 航向和磁力计航向。

所有 GPS 配置设置都会写入 Blackbox 日志头。

名称Debug0Debug1Debug2Debug3Debug4Debug5Debug6Debug7
GPS_RESCUE_THROTTLE油门 P油门 D当前飞行器高度,cm目标高度,cm油门 I倾角调整未平滑 D油门调整
GPS_RESCUE_VELOCITY速度 P速度 D当前飞行器速度,cm/s目标速度,cm/s速度 I未平滑 DiTerm Relax俯仰角命令
GPS_RESCUE_TRACKING朝返航点速度,cm/s目标速度,cm/s当前飞行器高度,cm目标高度,cm姿态(度)朝返航点角度油门值加入的横滚(deg x 100)
GPS_RESCUE_HEADING救机偏航速率,deg/s x 10横滚角度,deg x 1000估算飞行器航向,deg x 10估算朝返航点角度(未使用)横滚衰减器加入的横滚(deg x 100)偏航速率(deg/s)
GPS_RESCUE_CONNECTION请求的 GPS 动态模型GPS 导航数据间隔,ms距上次导航数据的时间,ms请求的 baud rate连接状态执行时间,usAck 状态Rx 缓冲区大小
RTH最大高度当前高度救机故障代码(x10)+ 救机阶段健全性失败秒数(x100)+ 低卫星数秒数(未使用)(未使用)(未使用)(未使用)
ALTITUDEGPS 信任度 x 100气压高度,cmGPS 高度,cm(解锁时归零)Vario(未使用)(未使用)(未使用)(未使用)
ATTITUDEAccADC 横滚AccADC 俯仰cogYawGain x 100ez_ef x 100飞行器速度地速误差俯仰角 x 100dcmKpGain x 100

说明:

  • 气压高度会在解锁时归零并平滑处理。
  • Vario 仅在解锁时平滑,且仅当固件构建启用 Vario 时存在。
  • GPS connection 的导航数据间隔通过比较 GPS 数据包时间戳得出,即 GPS 数据包之间的时间。
  • GPS connection 中距上次导航数据的时间是阶梯式斜坡:每次运行 GPS 代码时递增,新导航数据到来时重置。
  • GPS connection 请求的动态模型通常起始为 1(默认 acquire model),获得 3D 定位后为 7(默认 flight model)。
  • GPS connection 状态按主状态 x 100 + 步骤计算,例如 413 表示处于 CONFIGURE 主状态的第 13 步。
  • GPS connection Ack 状态的计算方式为:0 = IDLE,1 = WAITING,2 = ACK,3 = NACK

救机阶段代码

0 RESCUE_IDLE
1 RESCUE_INITIALIZE
2 RESCUE_ATTAIN_ALT
3 RESCUE_ROTATE
4 RESCUE_FLY_HOME
5 RESCUE_DESCENT
6 RESCUE_LANDING
7 RESCUE_ABORT
8 RESCUE_COMPLETE
9 RESCUE_DO_NOTHING

救机故障代码

0 RESCUE_HEALTHY
1 RESCUE_FLYAWAY
2 RESCUE_GPSLOST
3 RESCUE_LOWSATS
4 RESCUE_CRASH_FLIP_DETECTED
5 RESCUE_STALLED
6 RESCUE_TOO_CLOSE
7 RESCUE_NO_HOME_POINT

正常 RTH Debug 2 进程

代码阶段说明
0RESCUE_IDLE无救机活动时的正常阶段
1RESCUE_INITIALIZE通常太短,无法在 OSD 或日志中看到
2RESCUE_ATTAIN_ALT爬升阶段,无偏航
3RESCUE_ROTATE旋转(偏航)
4RESCUE_FLY_HOME前倾并按设定高度返航
5RESCUE_DESCENT减速并下降
6RESCUE_LANDING低于着陆高度,等待接地
8RESCUE_COMPLETE太短,无法在 OSD 中看到
0RESCUE_IDLE返回空闲

Debug 2 的“十位”列不应出现故障代码;故障代码始终应为零,即 RESCUE_HEALTHY。活动故障代码会根据设置触发 RESCUE_DO_NOTHING(9)、RESCUE_LANDING(6)或 RESCUE_ABORT(7)。

部分 RTH Debug 2 错误示例

代码故障阶段说明
17RESCUE_FLYAWAYRESCUE_ABORT因返航失败中止救机
19RESCUE_FLYAWAYRESCUE_DO_NOTHING因返航失败进入 DO_NOTHING 状态
39RESCUE_LOWSATSRESCUE_DO_NOTHING因卫星数过低进入 DO_NOTHING 状态
69RESCUE_TOO_CLOSERESCUE_DO_NOTHING因启动位置过近进入 DO_NOTHING 阶段

RTH Debug 3(健全性检查计数器)

Debug 3 通常应为零。若健全性检查超时计数器不为零,其值会显示在百位:

  • 百位表示健全性计时器已累计的秒数。
  • 个位表示已累计的低卫星数时间。
代码说明
0正常状态:健全性检查计时器为零,卫星数超过最小值的一半。
100健全性检查已失败 1 秒,卫星数正常。
200健全性检查已失败 2 秒,卫星数正常。
1203健全性检查已失败 12 秒;卫星数已连续偏低 3 秒。