4、GPS与定位状态检查:查看GPS Fix状态,检查EKF定位源,模拟GPS信号或强制启用非GPS模式
电机解锁失败,十有八九跟定位有关。我见过太多新手一上来就查电机、查电调,折腾半天,结果问题出在GPS上。说白了,飞控在解锁前会做一系列安全检查,其中定位状态是优先级最高的几项之一。它觉得你位置不对,或者压根没定位,就不让你解锁。
这一节,我们就来彻底搞明白GPS和定位状态怎么查、怎么修。
4.1 先看GPS Fix状态
GPS Fix,就是GPS有没有锁定卫星。没Fix,飞控就不知道自己在哪,自然不让解锁。怎么查?最直接的办法是用param命令或者地面站。
我个人习惯在终端里直接敲:
param fetch GPS_FIX_TYPE
param show | grep GPS
这会返回当前GPS的Fix类型。正常值应该是3(3D Fix)或者4(RTK Fix)。如果返回0或1,说明GPS没定位。
你也可以用nsh命令看更详细的信息:
gps status
输出里会有一行satellites used,这个数字最好大于8。低于6颗星,定位精度就很差了。
gps status确认一下。
4.2 EKF定位源检查
光有GPS Fix还不够。飞控内部有个叫EKF(扩展卡尔曼滤波器)的东西,它负责融合GPS、IMU、磁力计等数据,算出最终的定位结果。如果EKF认为GPS数据不可靠,它可能会切换到别的定位源,或者干脆报错。
检查EKF状态,我常用这个命令:
ekf2 status
输出里重点看这几项:
- GPS quality:0-1之间的值,越接近1越好。低于0.5就要警惕。
- Innovation test:如果显示
FAIL,说明GPS数据和IMU数据打架了,EKF不信任GPS。 - Position source:显示当前用的是GPS还是别的(比如视觉、光流)。
我记得有一次排查一个解锁问题,GPS Fix明明是3,但EKF一直报GPS innovation check failed。后来发现是模拟的IMU噪声参数设得太离谱,导致EKF认为GPS数据异常。调回默认值就好了。
4.3 模拟GPS信号
在SITL里,GPS信号是模拟的。但有时候这个模拟器会抽风,或者你改了某些参数导致它不工作。这时候需要手动干预。
最常用的方法是设置SIM_GPS_DISABLED参数:
param set SIM_GPS_DISABLED 0
param save
如果设为1,就是关闭GPS模拟。我建议你检查一下这个参数,确保它是0。
另外,你还可以手动设置GPS位置:
simulator set-position 47.397742 8.545594 488.0
这是苏黎世的一个坐标。设完之后,再查GPS Fix,应该就正常了。
4.4 强制启用非GPS模式
有些场景下,你不需要GPS也能飞。比如室内飞行,或者用光流定位。这时候可以绕过GPS检查,强制飞控进入非GPS模式。
怎么做?修改COM_ARM_WO_GPS参数:
param set COM_ARM_WO_GPS 1
param save
这个参数设为1,表示允许在没有GPS的情况下解锁。但要注意,这只是一个权宜之计。飞控在非GPS模式下,定位精度会大幅下降,只能靠IMU惯性推算,时间长了会漂移。
另外,你还可以设置EKF2_AID_MASK来指定定位源:
param set EKF2_AID_MASK 0
param save
设为0表示不使用任何外部定位源(GPS、视觉等),只靠IMU。这通常用于测试,不建议实际飞行。
COM_ARM_WO_GPS设成了1,结果忘了改回来。第二天飞真机时,GPS明明正常,但飞控就是不用,导致定位漂移,差点炸机。所以,测试完一定要恢复参数。
4.5 知识体系总览
下面这张图,把GPS与定位状态检查的核心逻辑串起来了。你可以把它当作排查路线图。
4.6 常见问题速查表
最后,我把几个常见问题整理成了一张表。你排查时可以直接对照。
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| GPS Fix = 0 或 1 | 模拟GPS未启动或参数关闭 | 检查SIM_GPS_DISABLED,设为0;或手动设置位置 |
| GPS Fix = 3,但EKF报错 | IMU噪声参数异常,或GPS数据与IMU冲突 | 重置IMU参数,或检查EKF2_*参数 |
| EKF定位源不是GPS | GPS信号被EKF判定为不可靠 | 检查EKF2_AID_MASK,确保包含GPS |
| 解锁时提示“Need GPS Fix” | COM_ARM_WO_GPS为0,且GPS无Fix |
设COM_ARM_WO_GPS为1,或修复GPS |
| 卫星数少于6颗 | 模拟GPS信号弱,或起始位置设置不当 | 重新设置起始坐标,或重启SITL |
嗯,到这里,GPS与定位状态检查这部分就讲完了。你下次遇到解锁失败,先别急着拆电机,按这个流程走一遍,大概率能找到问题。记住,定位是飞控的“眼睛”,眼睛没睁开,它是不敢动的。