1. 导航技术概述:从古代导航到现代组合导航,为什么需要IMU+GPS融合?
大家好,我是你们这门课的主讲人。
做组合导航这行十几年了,每次带新人,我第一节课都会先聊一个话题:我们到底为什么要费这么大劲,把IMU和GPS凑到一起?
别急着翻书。我们先从根上捋一捋。
1.1 导航的“老祖宗”:从看星星到看陀螺
导航这事儿,说白了就是回答三个问题:我在哪?我要去哪?怎么去?
古人没卫星,怎么办?看天。
- 天文导航: 靠太阳、星星定位。晚上看北极星,白天看日晷。精度嘛,能到几十公里就不错了。我早年去海上做实验,还见过老船长用六分仪,那手艺真是绝活。
- 地文导航: 看地标。沿着海岸线走,看见灯塔拐弯。这方法简单,但一出海就抓瞎。
- 惯性导航的雏形: 陀螺仪。最早的陀螺仪就是个旋转的轮子,利用定轴性指北。但那时候的陀螺,漂移得厉害,转个把小时就不知道北在哪了。
你想想看,这些方法都有个共同问题:依赖外部信息。没星星、没地标,你就成了睁眼瞎。
核心痛点: 单一传感器,总有“掉链子”的时候。
1.2 现代导航的两大“台柱子”:GPS和IMU
到了现代,我们有了两个神器:GPS和IMU。
1.2.1 GPS:天上的“时钟”
GPS的原理,其实不复杂。就是卫星告诉你:“我在这个位置,信号发出时间是T0。”你收到信号的时间是T1,光速一乘,距离就出来了。三颗卫星就能定个二维点,四颗就能定三维。
优点很明显:
- 误差不随时间积累。你跑一天,它还是那个精度(米级)。
- 全球覆盖,白天黑夜都能用。
但缺点也致命:
- 更新率低: 一般就10Hz。你想想,车跑高速,100ms才更新一次位置,中间那段轨迹全靠猜。
- 信号易遮挡: 进隧道、过立交桥、在高楼峡谷里,信号直接丢。我在北京五环做过测试,进个桥洞,GPS直接“飘”到对面车道去了。
- 易受干扰: 多径效应、电离层延迟,甚至有人拿个干扰器,你就没信号了。
1.2.2 IMU:身体的“感觉”
IMU(惯性测量单元)就不一样了。它不依赖外界,自己闷头算。
- 加速度计: 测你走了多快,方向如何。
- 陀螺仪: 测你转了多少角度。
IMU的更新率很高,通常100Hz到1000Hz。你动一下,它立刻知道。
但它的毛病更让人头疼:
- 误差随时间疯狂积累: 这就是所谓的“积分漂移”。你静止不动,它可能以为你在匀速运动。我见过一个低成本的MEMS IMU,开机10分钟,位置能漂出去几百米。
- 没有绝对参考: 它只能告诉你“相对之前的位置”,但不知道“绝对位置”。
我的经验: 单独用IMU做导航,就像闭着眼睛走路。你感觉自己在走直线,其实早偏到沟里去了。
1.3 为什么非要“融合”?—— 取长补短的艺术
好了,现在你看到了。GPS和IMU,就像一对欢喜冤家。
- GPS:长期准,短期飘(更新慢,易丢信号)。
- IMU:短期稳,长期飘(更新快,但会漂移)。
那把它们俩放一起呢?
这就是组合导航的核心思想: 用IMU的高频数据填补GPS的更新间隙,用GPS的绝对位置修正IMU的累积漂移。
我举个例子你就明白了:
你开车进隧道。GPS信号瞬间丢失。这时候,IMU开始“单干”。它根据进隧道前的速度和姿态,推算你接下来几秒的位置。虽然会漂,但几秒内精度还行。等你出隧道,GPS信号恢复,立刻把IMU的漂移“拉”回来,重新校准。
一句话总结: GPS给IMU“擦屁股”,IMU给GPS“填坑”。
1.4 融合带来的“化学反应”
除了简单的互补,融合还能带来一些意想不到的好处:
- 提高可靠性: 一个坏了,另一个还能顶一阵。我在做无人机项目时,有一次GPS天线被树枝挂掉了,全靠IMU撑着飞回来。
- 提高输出频率: 你最终得到的位置数据,可以做到100Hz甚至更高,而不是GPS的10Hz。
- 估计更多状态: 比如姿态(横滚、俯仰、航向)、速度、甚至陀螺的零偏。这些信息,单独靠GPS是拿不到的。
- 抗干扰能力: 在复杂环境下,融合算法可以智能地降低GPS的权重,更多依赖IMU,避免位置跳变。
避坑指南: 我曾经犯过一个错。在融合时,直接把GPS的位置和IMU的位置做平均。结果GPS一丢,位置直接跳变。后来才明白,融合不是简单的“平均”,而是要用卡尔曼滤波这类最优估计方法,动态调整权重。
1.5 一个简单的融合逻辑(伪代码)
为了让你有个直观感受,我写个最简单的融合逻辑。别纠结细节,先看思路。
// 伪代码:IMU + GPS 融合(简化版)
while (true) {
// 1. 读取IMU数据(高频,比如100Hz)
imu_data = readIMU();
// 2. 用IMU数据预测位置和姿态(状态预测)
predict_state(imu_data);
// 3. 如果有新的GPS数据(低频,比如10Hz)
if (new_gps_data_available()) {
gps_data = readGPS();
// 4. 用GPS数据修正预测的误差(观测更新)
correct_state_with_gps(gps_data);
}
// 5. 输出融合后的位置
output_fused_position();
}
你看,逻辑就这么简单。但实际工程里,难点全在“predict_state”和“correct_state”这两个函数里。它们背后,就是大名鼎鼎的卡尔曼滤波。这也是我们这门课后面要花大量篇幅讲的内容。
1.6 本章小结
嗯,聊了这么多,其实就是想告诉你:
- 单一传感器都有短板。 GPS怕遮挡,IMU怕漂移。
- 融合不是锦上添花,而是雪中送炭。 没有融合,很多场景下导航根本没法用。
- 组合导航的核心是“估计”而非“测量”。 我们不是直接测出位置,而是通过算法,把两个不完美的信息,估计出一个更完美的结果。
下一章,我们会正式进入核心算法——卡尔曼滤波。我会从最直观的角度,带你理解这个“神奇”的滤波器到底在干什么。
准备好了吗?我们第二章见。
公众号:蓝海资料掘金营,微信deep3321