4. 传感器模型与标定
各位同学好,我是你们这门课的主讲。今天咱们来聊聊多传感器融合里最基础、也最绕不开的一块——传感器模型与标定。
说实话,我见过太多项目,算法选得再好,最后栽在传感器数据不准上。你想想看,输入都是错的,输出能对吗?所以这一章,咱们把IMU、相机、LiDAR这三个核心传感器的脾气摸透。
1.1 IMU测量模型与噪声分析
IMU这东西,说白了就是加速度计加陀螺仪。我刚开始做融合定位时,总觉得IMU数据挺准的,后来发现——嗯,天真了。
1.1.1 测量模型
IMU的测量模型可以写成这样:
加速度计:a_m = a_true + b_a + n_a + g
陀螺仪: ω_m = ω_true + b_g + n_g
这里有几个关键点:
- b_a, b_g:零偏(bias),随时间缓慢变化
- n_a, n_g:白噪声,高频随机波动
- g:重力加速度,这个一定要扣除
核心要点:IMU测量的是「比力」+「角速度」,不是直接的位置或姿态。千万别搞混了。
1.1.2 噪声分析
我在项目中遇到过最坑的事——IMU噪声模型没选对,导致整个VIO系统发散。常见的噪声模型有两种:
| 噪声类型 | 来源 | 建模方式 |
|---|---|---|
| 白噪声 | 电子热噪声 | 高斯分布,方差σ² |
| 随机游走 | 零偏漂移 | 积分形式,方差随时间增长 |
我的经验:实际项目中,建议用Allan方差分析来提取噪声参数。我曾经用这个方法救回一个精度差到离谱的MEMS IMU。
1.2 相机针孔模型与畸变
相机模型,大家可能觉得简单。但说实话,畸变校正这一步,很多人做得不够细。
1.2.1 针孔模型
针孔模型就是小孔成像的数学表达:
u = f_x * (X/Z) + c_x
v = f_y * (Y/Z) + c_y
其中:
- f_x, f_y:焦距(像素单位)
- c_x, c_y:光心偏移
- X, Y, Z:相机坐标系下的3D点
注意:针孔模型假设光线直线传播,但实际镜头有畸变。不做校正,投影误差能大到几个像素。
1.2.2 畸变模型
畸变主要分两种:径向畸变和切向畸变。我习惯用OpenCV的模型:
x_distorted = x * (1 + k1*r² + k2*r⁴ + k3*r⁶) + 2*p1*x*y + p2*(r² + 2*x²)
y_distorted = y * (1 + k1*r² + k2*r⁴ + k3*r⁶) + p1*(r² + 2*y²) + 2*p2*x*y
这里k1,k2,k3是径向畸变系数,p1,p2是切向畸变系数。我曾经遇到一个项目,相机畸变很大,但标定板拍得不规范,结果校正后图像边缘还是弯的。后来换了高精度标定板,问题才解决。
避坑指南:标定相机时,标定板要占图像面积的30%-70%,角度要多样。我曾经只用正对拍摄,结果畸变参数完全不对。
1.3 LiDAR测距原理
LiDAR,激光雷达,说白了就是发射激光、测量飞行时间(ToF)。但不同原理的LiDAR,模型差别很大。
1.3.1 测距原理
主流LiDAR有两种:
- 脉冲式(ToF):发射脉冲,测量往返时间。精度高,但受环境光影响。
- 相位式:测量发射和接收信号的相位差。适合中短距离,精度更高。
我做过一个项目,用的是16线机械式LiDAR。它的测距模型可以简化为:
d = c * Δt / 2
其中c是光速,Δt是飞行时间。但实际中,还要考虑:
- 激光束发散角(导致距离越远,点越稀疏)
- 多路径效应(激光打到玻璃或水面会反射多次)
- 温度漂移(影响激光器波长和探测器灵敏度)
关键点:LiDAR的噪声模型不是简单的高斯分布。远距离点的噪声方差会显著增大,这在融合时一定要考虑。
1.3.2 标定要点
LiDAR标定主要做两件事:
- 内参标定:激光发射角、旋转轴偏移等
- 外参标定:LiDAR相对于车体或IMU的安装位置
我记得有一次,LiDAR和IMU的外参标定没做好,导致点云投影到图像上总是偏了几个像素。后来用互信息法重新标定,才对齐。
警告:LiDAR标定不要只用室内数据。室外环境的多路径效应和温度变化,会暴露很多标定问题。
本章知识体系
下面这张图,是我自己总结的传感器模型与标定的核心逻辑。你看一眼,就能明白这三者之间的关系:
这张图想表达的是:三个传感器各有各的脾气,但最终都要通过标定这个环节,统一到同一个时空坐标系下。标定做不好,融合就是空中楼阁。
我的建议:初学者别急着跑算法,先把传感器模型吃透。我见过太多人,IMU的零偏都没处理好,就急着上VINS-Mono,结果调了两个月都没收敛。