1. 课程导入
当你打开手机地图、启动车载导航,或看到无人机在楼宇间稳定悬停时,背后往往同时运行着两套定位系统:一套是来自太空的GNSS卫星定位,另一套是装在设备内部的IMU惯性测量单元。它们各自都有明显短板——GNSS在开阔天空下精度可达米级甚至厘米级,但进入隧道、地下车库或城市峡谷时信号衰减、多径严重,输出会跳变甚至中断;IMU短时间内的角速度和加速度积分能提供高频、连续的姿态与位移估计,却会随时间累积漂移。融合定位的核心任务,就是让两者互补:用GNSS的长期绝对基准去约束IMU的漂移,用IMU的高频连续性去填补GNSS的失锁与低更新率。
本课程面向工程落地,不满足于“知道卡尔曼滤波公式”,而是希望你能独立完成从传感器选型、时间同步、误差建模、滤波器实现到实测调参的完整链路。下面这张全景图先给出本课程的知识骨架:左侧是两类传感器及其原始输出,中间是融合算法与状态估计,右侧是典型工程应用,底部则是贯穿始终的工程约束。
一、核心概念:三组必须分清的对象
学习融合定位,首先要建立清晰的“对象观”。第一组是传感器输出:GNSS给出的是位置、速度和时间,IMU给出的是角速度和比力。第二组是参考坐标系:ECEF地心地固系、ENU东北天系、机体坐标系,以及IMU与GNSS天线之间的杆臂。第三组是误差状态:位置误差、速度误差、姿态误差、陀螺零偏、加速度计零偏。融合滤波器真正估计的往往不是“绝对状态”,而是这些误差量,再把误差反馈回名义状态。
一句话理解融合:IMU负责“猜”,GNSS负责“纠”。IMU用高频积分给出连续预测,GNSS用绝对观测修正累积误差,滤波器负责决定“信谁多一点”。
二、方法流程:从原始数据到稳定位姿
工程实现通常遵循一条固定流水线,任何一步缺失都会导致结果不可用:
- 数据采集与时间戳对齐:IMU频率常为100~1000Hz,GNSS为1~20Hz,必须统一到同一时间基准,并补偿传输延迟。
- 传感器标定与杆臂补偿:陀螺零偏、加速度计零偏、尺度因子、安装角,以及GNSS天线到IMU的杆臂向量。
- 初始对准:利用静止段加速度计确定俯仰与横滚,利用GNSS速度或磁力计确定航向。
- 状态预测:用IMU角速度和比力递推姿态、速度、位置,同时传播协方差。
- 观测更新:当GNSS有效时,用位置/速度观测更新误差状态,抑制漂移。
- 反馈与输出:将误差状态反馈回名义状态,输出高频、平滑的位姿结果。
典型松组合ESKF伪代码:
predict(dt, gyro, accel):
attitude = attitude * Exp((gyro - bg) * dt)
velocity += (Rot(attitude) * (accel - ba) + gravity) * dt
position += velocity * dt
P = F * P * F.T + Q
update_gnss(pos_meas, vel_meas):
K = P * H.T * inv(H * P * H.T + R)
dx = K * (z - h(x))
x = x + dx
P = (I - K * H) * P
三、案例场景:隧道中的连续定位
车辆以80km/h进入长约1.2km的隧道,GNSS在入口后约3秒完全失锁。若只依赖GNSS,定位会立即中断;若只依赖IMU,低成本MEMS陀螺零偏约10°/h,30秒后航向误差可达数度,位置漂移可能超过十米。融合方案的做法是:进入隧道前GNSS仍有效,滤波器已完成收敛,零偏估计稳定;失锁期间仅靠IMU预测,协方差逐渐增大;出隧道后GNSS恢复,滤波器用新的绝对观测快速修正累积误差。整个过程输出不中断,误差被限制在可接受范围内。
| 阶段 | GNSS状态 | IMU作用 | 融合输出特征 |
|---|---|---|---|
| 开阔路段 | 有效,1~10Hz | 高频预测,估计零偏 | 高精度、平滑 |
| 隧道入口 | 信号衰减 | 维持连续递推 | 短时稳定 |
| 隧道内部 | 失锁 | 纯惯性预测 | 协方差增大,缓慢漂移 |
| 隧道出口 | 恢复 | 被观测修正 | 快速收敛,误差回落 |
四、误区与复盘:新手最容易踩的坑
误区一:只关注滤波器公式,忽略时间同步。IMU与GNSS时间戳相差几十毫秒,在高速场景下就是米级位置误差,滤波器再优也无法弥补。
误区二:把杆臂当零处理。GNSS天线与IMU安装位置不同,车辆转弯时两者速度差异显著,忽略杆臂会引入系统性偏差。
误区三:用同一套噪声参数应对所有场景。城市峡谷多径噪声与开阔天空完全不同,固定R矩阵会导致滤波器“过度自信”或“反应迟钝”。
误区四:初始对准未完成就进入动态。航向未收敛时,IMU积分会迅速发散,后续GNSS更新也难以拉回。
复盘这些问题的共同点:融合定位的精度上限,往往不由算法决定,而由标定、同步、建模这些“脏活”决定。本课程后续章节会逐一拆解这些环节,并给出可运行的工程实现与调参方法。
学习建议:每学完一个模块,回到这张全景图,确认自己能否说清“数据从哪来、经过什么、到哪去、误差如何被约束”。能讲清这条链路,就具备了融合定位工程师的基本思维。