4、GPS失效下的鲁棒导航:惯性导航系统(INS)原理、GPS/INS松耦合与紧耦合、GPS失效时的纯惯性推算、零速修正(ZUPT)技术
各位同学,大家好。今天我们聊一个非常实际的问题——GPS信号丢了怎么办。
说实话,做导航这么多年,我遇到过无数次GPS掉星的情况。地下车库、高楼峡谷、隧道里,甚至有时候就是天气不好,信号就飘了。这时候如果你只靠GPS,那基本就抓瞎了。所以,我们必须要有备用方案——惯性导航系统(INS)。
4.1 惯性导航系统(INS)原理
惯性导航,说白了就是“猜”你在哪。它不依赖任何外部信号,全靠自己身上的传感器来推算位置。
核心器件有两个:
- 加速度计:测量三个轴的加速度
- 陀螺仪:测量三个轴的角速度
有了加速度,积分一次得到速度,再积分一次得到位置。有了角速度,积分得到姿态角。这就是INS的基本原理。
核心公式(简化版):
位置更新:P_k = P_{k-1} + V_{k-1} * dt + 0.5 * a_k * dt²
速度更新:V_k = V_{k-1} + a_k * dt
姿态更新:使用四元数或旋转矩阵,对陀螺仪角速度积分
嗯,这里要注意一个关键问题——误差会累积。加速度计有零偏,陀螺仪有漂移,积分一次误差变大一点,再积分一次更大。我做过一个实验,纯惯性推算跑30秒,位置误差就能到几十米。所以INS不能单独长时间工作,必须配合其他传感器。
我个人习惯:在项目初期,先用Allan方差分析IMU的噪声特性。这步做好了,后面融合滤波的参数调起来会顺手很多。
4.2 GPS/INS松耦合与紧耦合
GPS和INS怎么配合?主要有两种方式:松耦合和紧耦合。
4.2.1 松耦合
松耦合的思路很简单:GPS算出一个位置和速度,INS也算出一个位置和速度,然后拿GPS的结果去修正INS的误差。
流程大概是:
- INS独立推算位置、速度、姿态
- GPS输出位置、速度(需要至少4颗卫星)
- 用卡尔曼滤波器,把GPS和INS的差值作为观测,估计INS的误差
- 用估计出的误差去修正INS
优点:实现简单,两个系统各自独立,互不干扰。
缺点:GPS必须输出完整的导航解,如果卫星数不够(比如只有3颗),GPS就废了,松耦合也跟着废。
4.2.2 紧耦合
紧耦合就聪明一些。它不直接拿GPS的位置速度,而是用原始的伪距和伪距率。
为什么这样做?因为即使只有1颗卫星,伪距也是有信息的。紧耦合可以把这颗卫星的信息用上,帮助抑制INS的漂移。
我在项目中遇到过这种情况:车辆进入高架桥下,GPS只能看到2颗卫星。松耦合直接罢工,紧耦合还能维持几分钟的精度。这就是差距。
避坑指南:我曾经在紧耦合实现中犯过一个低级错误——伪距的时钟偏差没处理好。GPS接收机和INS的时间基准不一致,导致滤波结果发散。后来我强制在数据入口做时间对齐,才解决这个问题。
| 对比项 | 松耦合 | 紧耦合 |
|---|---|---|
| 输入数据 | GPS位置、速度 | 伪距、伪距率 |
| 卫星数要求 | ≥4颗 | ≥1颗即可 |
| 实现复杂度 | 低 | 高 |
| 鲁棒性 | 弱 | 强 |
4.3 GPS失效时的纯惯性推算
当GPS彻底失效(比如进入隧道),我们就只能靠纯惯性推算了。这时候,INS的误差会随时间快速累积。
你想想看,加速度计的零偏如果是0.1mg,积分1分钟,位置误差大概是多少?我算过,大约1.8米。但如果零偏是1mg,1分钟误差就能到18米。所以IMU的精度直接决定了纯惯性推算能撑多久。
纯惯性推算的流程:
- 检测到GPS失效(比如卫星数=0,或者定位状态标志位为无效)
- 冻结卡尔曼滤波器的更新,只做INS的时间更新
- 持续输出INS推算的位置、速度、姿态
- 一旦GPS恢复,重新启动融合滤波
关键点:GPS恢复时,要注意滤波器的初始化。不能直接把GPS的位置硬塞进去,否则会造成位置跳变。我建议用渐近式融合,给一个过渡时间。
4.4 零速修正(ZUPT)技术
ZUPT,全称Zero Velocity Update。名字很直白——当检测到载体静止时,把速度强制置零,然后用这个信息去修正INS的误差。
为什么ZUPT有效?因为INS最大的误差来源是速度积分带来的位置漂移。如果你能定期把速度“归零”,就能打断误差累积的过程。
ZUPT的实现步骤:
- 静止检测:用加速度计和陀螺仪的方差来判断是否静止。比如,加速度方差小于某个阈值,且持续一段时间,就认为静止了。
- 速度修正:把INS推算的速度置零,计算速度误差。
- 误差估计:用卡尔曼滤波器,把速度误差作为观测,估计出加速度计零偏、陀螺仪漂移等状态。
- 状态修正:用估计出的误差去修正INS。
我的一点经验:静止检测的阈值很关键。阈值设得太小,正常行走时会被误判为静止;设得太大,真正静止时又检测不到。我一般用滑动窗口计算加速度的均方根值,窗口长度取0.5秒,阈值根据IMU的噪声水平动态调整。
ZUPT在行人导航中应用非常广泛。我记得有个项目是做消防员室内定位,GPS完全不能用,全靠ZUPT来抑制INS的漂移。每走几步停一下,位置误差就能控制在1%以内。
注意:ZUPT只适用于有静止阶段的场景。如果载体一直在运动(比如汽车在高速上跑),ZUPT就用不了。这时候可以考虑用非完整性约束(NHC)或者轮速传感器来辅助。
知识体系总览
下面这张图是我画的本章知识结构,方便大家理解各个技术点之间的关系。
好了,这一章的内容就到这里。GPS失效不可怕,关键是要有备用的手段。INS是基础,松耦合和紧耦合是融合策略,ZUPT是误差抑制的利器。把这些技术组合好,你的导航系统就能在恶劣环境下依然保持鲁棒。