4、传感器模型:针孔相机模型、激光雷达模型、IMU测量模型

各位同学,今天我们聊聊传感器模型。说实话,这是整个外参标定里最基础、也最绕不开的一环。你想想看,如果连传感器怎么“看”世界的都不知道,那标定出来的外参,说白了就是瞎蒙。

我个人习惯,每次拿到一个新传感器,第一件事就是把它当成一个“黑盒子”,先搞清楚它的输入输出关系。今天我们就拆开三个最常见的盒子:针孔相机、激光雷达、IMU。

4.1 针孔相机模型

针孔相机模型,嗯,这个名字很形象。就是一个小孔,光线穿过它,在后面的成像平面上投影。我刚开始做视觉SLAM时,总觉得这个模型太理想化了,后来才发现,它其实是所有复杂相机模型的“地基”。

核心公式其实就一个:

// 世界坐标系到像素坐标系的映射
// [u, v, 1]^T = K * [R|t] * [X, Y, Z, 1]^T

// 其中K是内参矩阵:
K = [fx,  0, cx;
      0, fy, cy;
      0,  0,  1]

这里fx、fy是焦距,cx、cy是光心偏移。我在项目中遇到过一个问题:用标定板算出来的fx和fy,跟厂家给的datasheet对不上。后来发现,是因为我用的图像分辨率跟标定时的分辨率不一致。记住,内参是跟分辨率绑定的,换分辨率就要重新标定。

重要概念:畸变模型

针孔模型是线性的,但真实镜头有畸变。我们通常用径向畸变和切向畸变来补偿:

  • 径向畸变:k1, k2, k3 三个参数,主要来自镜头曲率
  • 切向畸变:p1, p2 两个参数,来自镜头安装偏差

我的经验:标定畸变参数时,一定要用棋盘格覆盖整个视野。我曾经只拍了中间区域,结果边缘畸变完全没标出来,导致后续融合时边缘误差巨大。

4.2 激光雷达模型

激光雷达的模型,说白了就是“一束光,一个点”。每个激光束发射出去,碰到物体反射回来,根据飞行时间算出距离。但这里有个坑:激光雷达的坐标系定义各家不一样。

我常用的激光雷达模型是这样的:

// 激光雷达点云生成模型
// 对于第i个激光束,其方向由水平角α和垂直角θ决定
// 测量距离为r,则点云坐标为:

x = r * cos(θ) * cos(α)
y = r * cos(θ) * sin(α)  
z = r * sin(θ)

// 注意:不同厂家对α和θ的零点定义不同
// Velodyne的α=0指向车头,Hesai的可能指向车尾

你想想看,如果坐标系定义搞错了,那外参标定出来的结果,可能直接差个180度。我曾经在项目里就吃过这个亏,两台激光雷达融合后,点云直接“劈叉”了。

避坑指南:拿到激光雷达后,第一件事就是验证它的坐标系定义。找个墙角,手动测量几个点的距离,跟点云数据对比一下。这一步花不了10分钟,但能省下后面几天的调试时间。

另外,激光雷达还有个重要的特性:回波模式。单回波、双回波、最强回波,不同模式下点的精度和数量都不一样。我建议在外参标定时,统一用单回波模式,减少不确定性。

4.3 IMU测量模型

IMU,惯性测量单元。它测量的是加速度和角速度。但说实话,IMU的数据如果不做处理,直接拿来用,那基本是“废的”。为什么?因为IMU有三大误差:零偏、尺度因子、噪声。

IMU的测量模型可以写成:

// IMU测量模型
// 加速度计:
a_meas = a_true + b_a + n_a + s_a * a_true

// 陀螺仪:
ω_meas = ω_true + b_g + n_g + s_g * ω_true

// 其中:
// b_a, b_g: 零偏(bias),随时间缓慢变化
// n_a, n_g: 白噪声
// s_a, s_g: 尺度因子

这里最让人头疼的是零偏。它不是一个固定值,而是随着温度、时间漂移的。我记得有一次做车载标定,早上标好的外参,下午就偏了。查了半天,发现是IMU零偏漂移导致的。

关键点:IMU的零偏是“时变”的。所以在外参在线标定中,我们通常把零偏也作为状态量,跟外参一起估计。这就是为什么很多标定算法里,状态向量里既有外参,又有IMU bias。

另外,IMU的坐标系定义也很重要。加速度计的轴方向,陀螺仪的旋转方向,不同厂家可能不一样。我建议在代码里显式定义一个“IMU坐标系约定”,然后所有数据都转成这个约定。

4.4 三种模型的对比与融合

好了,三种模型都讲完了。我们来对比一下:

传感器 测量量 主要误差 更新频率 外参标定难点
针孔相机 像素坐标 (u,v) 畸变、量化噪声 10-60 Hz 需要纹理特征
激光雷达 3D点 (x,y,z) 测距噪声、多路径 5-20 Hz 需要几何特征
IMU 加速度、角速度 零偏、噪声、尺度 100-1000 Hz 零偏时变

你想想看,这三种传感器各有各的脾气。相机怕没光,激光雷达怕下雨,IMU怕温度变化。但把它们融合在一起,就能互相弥补。这就是多传感器融合的魅力所在。

下面这张图,是我自己总结的三种传感器模型在标定中的关系:

多传感器外参标定中的传感器模型关系 针孔相机模型 像素坐标 + 畸变补偿 激光雷达模型 3D点云 + 坐标系定义 IMU测量模型 加速度/角速度 + 零偏 多传感器外参在线标定 联合优化:视觉特征 + 几何特征 + 惯性约束 特征提取 点云配准 预积分

嗯,这张图其实想表达一个意思:三种模型不是孤立的。在标定过程中,相机提供纹理约束,激光雷达提供几何约束,IMU提供运动约束。三者联合优化,才能得到稳定可靠的外参。

我的建议:在实际项目中,不要试图一次性把所有模型都搞完美。先让相机和激光雷达能对上,再慢慢加入IMU。分步走,出问题了也好排查。

好了,这一节的内容就到这里。传感器模型是标定的基础,理解透了,后面的联合标定算法才能用得顺手。记住,模型越准确,标定结果越可靠。

可可精品资料库