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 支持有限。若模块支持 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,观察其获取卫星的速度。
statusCLI 命令会报告设置和返回的 baud rate,以及 UBlox 模块类型。
优质 GPS 冷启动后,应在数分钟内获得约 20 颗卫星,其中 10-12 颗参与 3D 定位,且每颗信号良好。模块应逐步获得各卫星,而不是不断切换。将四轴飞行器倾斜不应导致参与定位的卫星丢失。放大地图观察位置变化,位置应稳定;若游走数米则不理想。模块静止于桌面时,速度应为零;可靠定位下速度不应超过 10-20 cm/s。静止时持续显示 > 25 cm/s、获取卫星很慢、在地图上漂移,或倾斜 45 度就丢失位置的模块均不应使用。一般而言,体积较大的 GPS 模块比小型模块表现更好。
已验证可用的 GPS 硬件
下表列出已有实际使用验证的模块。建议选用能以 10Hz 运行 UBlox 且支持热启动的模块。只有 GPS 模块能远离其他电子元件和线缆安装时,磁力计才可能有用。
| 模块 | UBlox | 10Hz | 热启动 | 磁力计 | 说明 |
|---|---|---|---|---|---|
| Matek SAM-M8Q | 是 | 是 | 是 | 否 | 工作良好 |
| Matek M8Q-5883 | 是 | 是 | 是 | QMC5883L | 工作良好;除非谨慎布置,否则磁力计噪声较大 |
| iFlight M8Q-5883 V2 | 是 | 是 | 是 | QMC5883L | 工作良好;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 rate | CPU 开销 | 说明 |
|---|---|---|---|
| 20Hz | 115200 | 最高 | 仅限 M10;务必仔细测试 |
| 10Hz | 38400 或更高 | 中等 | GPS 救机推荐 57600 + 10Hz |
| 5Hz | 19200 或更高 | 中等 | 可用于 GPS 救机或常规用途 |
| 1-2Hz | 9600 或更高 | 最低 | 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时启用。
救机阶段
救机有五个依序执行的“正常”阶段:ASCEND、ROTATE、FLY HOME、DESCEND、LAND。无救机时通常处于 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_MIN与GPS_RESCUE_THROTTLE_MAX限制内,围绕设定的GPS_RESCUE_THROTTLE_HOVER调整油门,并用含加速度项的 PID 控制高度。油门会随机体角度(偏离水平面的角度)动态调整。 - 俯仰角控制前进速度:
ASCEND阶段以半最大速率启用;ROTATE阶段指向返航点的误差角小于 45 度后完全启用;直至LAND阶段前都保持完全启用,进入LAND后再次降为半速率。 - 仅在偏航速率较低时才会混入横滚,它对处理风造成的航向漂移很重要;只在
FLY HOME和DESCEND阶段生效。 DESCEND阶段中,飞行器试图保持在预计着陆点外 2m 的圆柱面上,保持朝向返航点,同时维持约 2m 距离。此距离旨在减小飞越返航点的风险。有风时,通常会在此 2m 圆柱的下风侧下降。- 着陆模式中,四轴飞行器可旋转,并会前后俯仰以尝试在返航点外 2m 处着陆。若 GPS 漂移,着陆时显示的最终返航距离和返航方向代表 GPS 当时认为的“家”。
- 自动上锁由触地时的加速度计尖峰触发。它仅会在
DESCEND模式下、高度低于GPS_RESCUE_LANDING_ALT后启用。若高度已向上漂移,飞行器虽已触地而 GPS 仍认为它在高空,撞击时不会上锁。此时着陆健全性检查应在约 10 秒后使飞行器上锁。 - 对开关触发且遭遇致命健全性检查错误的救机,会进入
DO_NOTHING阶段:平直自稳模式,油门比 GPS 救机悬停油门低 100 步,最长 20 秒。这给飞行员复位开关而非立即上锁的机会。若开关触发救机时发现未按上述阶段工作,应立刻复位开关重新接管。
高度控制选项
GPS_RESCUE_ALT_MODE 与 GPS_RESCUE_RETURN_ALT、GPS_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_CLIMB | 按 GPS_RESCUE_ALT_MODE 选定的当前或最高高度之上所要爬升的高度,单位米。 |
GPS_RESCUE_ASCEND_RATE | ASCEND 阶段的目标爬升速率,单位 cm/s。需要时可提高以加快爬升。 |
GPS_RESCUE_RETURN_ALT | FIXED_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_RATE | DESCEND 和 LANDING 阶段的目标下降速率,单位 cm/s。DESCEND 开始时下降速率最多可达此值两倍,着陆时会降至设定值。 |
GPS_RESCUE_LANDING_ALT | 下降期间启用自动上锁时、高于起飞点的高度,单位米。若在此高度以下且距返航点 5m 内启动,也会使飞行器上锁。 |
GPS_RESCUE_DISARM_THRESHOLD | 撞击自动上锁功能的灵敏度。飞行器噪声较大而提前上锁时,可尝试增大;值过高时,飞行器可能弹跳而无法在着陆时上锁。 |
GPS_RESCUE_THROTTLE_MIN | GPS 救机代码可施加的最低油门值。重型四轴飞行器若需较高油门悬停,应略微提高。 |
GPS_RESCUE_THROTTLE_MAX | GPS 救机代码可施加的最高油门值。除非飞行器很重或强风中阻力很大,否则通常无需提高。 |
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调试查看实际施加的偏航与横滚量,并将飞行器姿态与返航点方位角对比。- 高度 PID(
AP_ALTITUDE_P、AP_ALTITUDE_I、AP_ALTITUDE_D;≤ v4.5.3 为GPS_RESCUE_THROTTLE_P、GPS_RESCUE_THROTTLE_I、GPS_RESCUE_THROTTLE_D)最好在很低的目标地速下调节,例如 50 cm/s;启动 GPS 返航时让飞行器朝向返航点,并设置相对较陡的初始爬升率。PID 过高会在初始爬升后造成垂直振荡,D 项引起的振荡比 P 项更快。从提高电机推力到获得高度存在很大延迟。GPS_RESCUE_THROTTLE调试最有用,它显示油门 P、D 及实测高度与目标高度。 - 速度 PID(
GPS_RESCUE_VELOCITY_P、GPS_RESCUE_VELOCITY_I、GPS_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阶段朝返航点的速度至少为设定速度的一半;LANDING和DESCEND阶段下降速率至少为设定下降速率的一半,即没有挂在树上。
健全性检查失败意味着飞行器无法成功完成救机。经过合理等待后,飞行器会被上锁,使其坠落而不会继续飞远、爬得过高、耗尽电池或烧坏电机。每种可能故障在上锁前均有一段宽限期。
健全性检查不能覆盖所有故障可能。例如,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_VELOCITY。GPS_RESCUE_HEADING 有助于检查航向相关信息,并比较 GPS 航向和磁力计航向。
所有 GPS 配置设置都会写入 Blackbox 日志头。
| 名称 | Debug0 | Debug1 | Debug2 | Debug3 | Debug4 | Debug5 | Debug6 | Debug7 |
|---|---|---|---|---|---|---|---|---|
| GPS_RESCUE_THROTTLE | 油门 P | 油门 D | 当前飞行器高度,cm | 目标高度,cm | 油门 I | 倾角调整 | 未平滑 D | 油门调整 |
| GPS_RESCUE_VELOCITY | 速度 P | 速度 D | 当前飞行器速度,cm/s | 目标速度,cm/s | 速度 I | 未平滑 D | iTerm 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 | 连接状态 | 执行时间,us | Ack 状态 | Rx 缓冲区大小 |
| RTH | 最大高度 | 当前高度 | 救机故障代码(x10)+ 救机阶段 | 健全性失败秒数(x100)+ 低卫星数秒数 | (未使用) | (未使用) | (未使用) | (未使用) |
| ALTITUDE | GPS 信任度 x 100 | 气压高度,cm | GPS 高度,cm(解锁时归零) | Vario | (未使用) | (未使用) | (未使用) | (未使用) |
| ATTITUDE | AccADC 横滚 | AccADC 俯仰 | cogYawGain x 100 | ez_ef x 100 | 飞行器速度 | 地速误差 | 俯仰角 x 100 | dcmKpGain 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 进程
| 代码 | 阶段 | 说明 |
|---|---|---|
| 0 | RESCUE_IDLE | 无救机活动时的正常阶段 |
| 1 | RESCUE_INITIALIZE | 通常太短,无法在 OSD 或日志中看到 |
| 2 | RESCUE_ATTAIN_ALT | 爬升阶段,无偏航 |
| 3 | RESCUE_ROTATE | 旋转(偏航) |
| 4 | RESCUE_FLY_HOME | 前倾并按设定高度返航 |
| 5 | RESCUE_DESCENT | 减速并下降 |
| 6 | RESCUE_LANDING | 低于着陆高度,等待接地 |
| 8 | RESCUE_COMPLETE | 太短,无法在 OSD 中看到 |
| 0 | RESCUE_IDLE | 返回空闲 |
Debug 2 的“十位”列不应出现故障代码;故障代码始终应为零,即 RESCUE_HEALTHY。活动故障代码会根据设置触发 RESCUE_DO_NOTHING(9)、RESCUE_LANDING(6)或 RESCUE_ABORT(7)。
部分 RTH Debug 2 错误示例
| 代码 | 故障 | 阶段 | 说明 |
|---|---|---|---|
| 17 | RESCUE_FLYAWAY | RESCUE_ABORT | 因返航失败中止救机 |
| 19 | RESCUE_FLYAWAY | RESCUE_DO_NOTHING | 因返航失败进入 DO_NOTHING 状态 |
| 39 | RESCUE_LOWSATS | RESCUE_DO_NOTHING | 因卫星数过低进入 DO_NOTHING 状态 |
| 69 | RESCUE_TOO_CLOSE | RESCUE_DO_NOTHING | 因启动位置过近进入 DO_NOTHING 阶段 |
RTH Debug 3(健全性检查计数器)
Debug 3 通常应为零。若健全性检查超时计数器不为零,其值会显示在百位:
- 百位表示健全性计时器已累计的秒数。
- 个位表示已累计的低卫星数时间。
| 代码 | 说明 |
|---|---|
| 0 | 正常状态:健全性检查计时器为零,卫星数超过最小值的一半。 |
| 100 | 健全性检查已失败 1 秒,卫星数正常。 |
| 200 | 健全性检查已失败 2 秒,卫星数正常。 |
| 1203 | 健全性检查已失败 12 秒;卫星数已连续偏低 3 秒。 |