第四节:传感器模型——GPS/IMU/里程计的工作原理、误差模型与数据特性分析
各位同学好,我是你们的老朋友。今天我们来聊聊传感器模型。说实话,做轨迹分析这么多年,我最大的体会就是:算法再漂亮,传感器数据不行,一切都是白搭。你想想看,一个烂数据进去,再牛的滤波算法也救不回来。
这一节,我会把GPS、IMU、里程计这三个核心传感器掰开揉碎了讲。包括它们怎么工作的、误差从哪来、数据长什么样。嗯,都是我在项目里踩过的坑,希望能帮你们少走弯路。
核心观点:没有完美的传感器。GPS有漂移,IMU有零偏,里程计有打滑。我们的任务不是找到完美的传感器,而是理解它们的脾气,然后想办法互补。
4.1 GPS(全球定位系统)
4.1.1 工作原理
GPS的原理,说白了就是三角定位。卫星告诉你它的位置和时间,你的接收机算出距离,然后至少四颗卫星一交会,就能定出你的三维坐标。
公式很简单:
ρ = c × (t_receiver - t_satellite)
其中ρ是伪距,c是光速,t_receiver是接收机时间,t_satellite是卫星时间。
为什么叫「伪距」?因为接收机的时钟不准,算出来的距离有误差。所以实际上我们要解四个未知数:x, y, z 和接收机钟差。这就是为什么至少需要四颗卫星。
4.1.2 误差模型
GPS的误差来源,我归纳为三类:
- 卫星端误差:星历误差、卫星钟差。这部分可以通过差分GPS(DGPS)或RTK来消除。
- 传播路径误差:电离层延迟、对流层延迟、多路径效应。电离层延迟在白天比晚上严重,我做过测试,中午时分误差能比凌晨大两倍。
- 接收机端误差:接收机噪声、天线相位中心变化。
典型的单点定位精度:水平3-5米,高程5-8米。如果你用RTK,精度可以到厘米级,但需要基站或者网络差分信号。
注意:在城市峡谷、隧道、高架桥下,GPS信号会严重衰减甚至完全丢失。这时候如果你还依赖GPS,轨迹就会「飞」出去。我曾经在上海市中心做过测试,高楼区GPS定位点能跳出去几十米。
4.1.3 数据特性分析
GPS数据有几个特点:
- 低频:通常1-10Hz,消费级的一般5Hz。
- 无漂移:长期来看,GPS不会越偏越远,误差是零均值的。
- 有跳变:信号遮挡或反射会导致位置突然跳变。
- 更新不规律:信号不好时,可能几秒才来一个点。
我个人习惯,拿到GPS数据后第一件事就是检查PDOP值(位置精度因子)。PDOP越小越好,一般小于3算优秀,大于6就基本不能用了。
4.2 IMU(惯性测量单元)
4.2.1 工作原理
IMU包含加速度计和陀螺仪。加速度计测比力,陀螺仪测角速度。通过对加速度积分得到速度,再积分得到位置;对角速度积分得到姿态。
核心公式:
v(t) = v(0) + ∫ a(t) dt
p(t) = p(0) + ∫ v(t) dt
听起来很简单对吧?但实际做起来,你会发现积分一次,误差就放大一次。这就是IMU的致命弱点。
4.2.2 误差模型
IMU的误差,我把它分成确定性误差和随机性误差:
| 误差类型 | 来源 | 影响 |
|---|---|---|
| 零偏(Bias) | 制造工艺、温度变化 | 速度/位置随时间二次增长 |
| 比例因子(Scale Factor) | 标定不准确 | 测量值与真实值成比例偏差 |
| 随机游走(Random Walk) | 噪声积分 | 位置误差随时间线性增长 |
| 交轴耦合 | 安装误差 | 一个轴的运动会串扰到另一个轴 |
这里我要特别强调零偏。你想想看,加速度计如果有个0.01g的零偏(约0.1 m/s²),积分10秒后速度误差就是1 m/s,位置误差就是5米。再积分一分钟,位置误差就180米了。这就是为什么IMU不能单独用太久。
我的经验:IMU上电后前几分钟零偏变化最大,因为温度还没稳定。我一般会让IMU预热3-5分钟再开始采集数据。另外,每次上电的零偏都不一样,所以最好每次使用前都做一次静态标定。
4.2.3 数据特性分析
IMU数据的特点:
- 高频:通常100-1000Hz,能捕捉快速运动。
- 短期精度高:短时间内相对位置变化很准。
- 长期漂移大:积分误差随时间累积,越跑越偏。
- 对振动敏感:车辆颠簸、手持抖动都会引入噪声。
我做过一个实验:把IMU放在桌上静止一小时,积分出来的位置「跑」了上千米。所以IMU必须配合其他传感器使用,比如GPS来修正漂移。
4.3 里程计(Odometry)
4.3.1 工作原理
里程计分两种:轮式里程计和视觉里程计。这里我主要讲轮式里程计,因为它在机器人、车辆上用得最多。
轮式里程计的原理很简单:通过编码器测量车轮转动的圈数,结合车轮半径,算出行驶距离。如果是差速轮,还可以算出转向角。
公式:
Δs = (ΔN_left + ΔN_right) / 2 × π × D / N_total
Δθ = (ΔN_right - ΔN_left) / L × π × D / N_total
其中ΔN是编码器脉冲数,D是车轮直径,N_total是每圈脉冲数,L是轮距。
4.3.2 误差模型
里程计的误差主要来自:
- 车轮打滑:这是最大的误差源。加速、急刹、湿滑路面都会导致打滑。
- 车轮半径误差:轮胎气压变化、磨损都会改变有效半径。
- 轮距误差:转向角计算依赖轮距,这个参数不准,转弯就会偏。
- 量化误差:编码器分辨率有限,低速时尤其明显。
我曾经在雪天做过测试,轮式里程计在冰面上打滑,算出来的轨迹比实际路径短了30%。所以里程计在低附着系数路面上基本不可靠。
4.3.3 数据特性分析
里程计数据的特点:
- 高频:编码器可以做到很高频率,通常50-200Hz。
- 局部精度高:不打滑时,短距离内非常准。
- 有累积误差:和IMU一样,误差会累积,但速度慢一些。
- 对地面条件敏感:打滑、颠簸都会引入误差。
总结一下三个传感器的互补关系:
- GPS:长期准,短期跳,低频
- IMU:短期准,长期漂,高频
- 里程计:局部准,全局偏,高频
所以多传感器融合的核心思路就是:用GPS约束长期漂移,用IMU和里程计填充短期运动。
4.4 知识体系结构图
下面这张图,是我自己画的传感器模型知识结构。你可以看到三个传感器各自的特点,以及它们如何互补。
好了,这一节的内容就到这里。传感器模型是轨迹分析的基础,理解透了,后面的融合算法才能用得顺手。记住我一句话:别跟传感器较劲,要跟它做朋友。