二、标定原理:外参标定与内参标定,旋转矩阵与平移向量
聊到标定原理,我习惯先把它拆成两件事来看:内参标定和外参标定。
说白了,内参是管「传感器自己准不准」的,外参是管「传感器之间配不配得齐」的。你想想看,如果激光雷达自己内部的光路都是歪的,那后面做再多坐标变换也是白搭。反过来,内参再准,两个传感器装在一起时角度没对齐,点云和图像照样对不上。
嗯,咱们一个一个说。
2.1 内参标定:让雷达自己先「站直」
激光雷达的内参,主要涉及激光发射器和接收器之间的几何关系。比如每个激光束的俯仰角、水平角偏移、距离零点偏移等等。
我在项目中遇到过一台16线雷达,点云出来地面是弧形的。排查了半天,发现是某个激光器的俯仰角出厂标定值偏了0.1度。你想想,0.1度在100米外就是17厘米的误差,这谁受得了?
内参标定通常需要借助高精度转台或已知几何特征的标定场。常见的做法是:
- 静态标定:将雷达固定,测量已知距离和角度的目标,反算内参偏差
- 动态标定:让雷达扫描平面或球体,通过点云拟合来优化内参
2.2 外参标定:让雷达和车身「对齐」
外参标定,说白了就是求一个旋转矩阵 R 和一个平移向量 t,把激光雷达坐标系下的点,变换到车体坐标系(或其它传感器坐标系)下。
公式很简单:
P_车体 = R * P_雷达 + t
其中:
- R:3×3 的旋转矩阵,描述两个坐标系之间的旋转关系
- t:3×1 的平移向量,描述两个坐标系原点之间的偏移
为什么是3×3?因为三维空间里的旋转,用三个自由度就够了(绕x轴、y轴、z轴各转多少)。但直接用角度算起来容易出万向锁,所以工程上更常用四元数或旋转矩阵来表达。
2.3 旋转矩阵的几何意义
旋转矩阵的每一列,其实代表的是原坐标系各轴在目标坐标系下的方向向量。举个例子:
R = [[r11, r12, r13],
[r21, r22, r23],
[r31, r32, r33]]
第一列 [r11, r21, r31]^T 就是雷达x轴在车体坐标系下的方向
我个人习惯用欧拉角来理解旋转顺序,但实际代码里一定用旋转矩阵或四元数。为什么?因为欧拉角有歧义——同样的角度,按不同顺序转,结果完全不同。
| 旋转顺序 | 应用场景 |
|---|---|
| Z-Y-X(航向-俯仰-横滚) | 车辆动力学、IMU |
| Z-X-Z | 机械臂、机器人 |
| X-Y-Z | 部分视觉SLAM系统 |
2.4 平移向量:别小看那几厘米
平移向量 t 就是两个坐标系原点之间的偏移。比如雷达装在车顶前方20厘米、偏左10厘米、高1.5米,那 t 就是 [0.2, -0.1, 1.5]^T(具体正负取决于坐标系定义)。
有人觉得平移向量好测,拿尺子量一下就行。但我在实际项目中发现,机械安装误差和雷达自身外壳的参考点不明确,会导致量出来的值和真实值差好几厘米。
所以我的建议是:
- 先用尺子量个大概,作为初值
- 再用标定算法(比如手眼标定、PnP)做精细优化
- 最后用点云投影到图像上做可视化验证
2.5 外参标定的常见方法
实际工程中,外参标定主要有三种路子:
- 基于标定物的方法:放个棋盘格或立方体,让雷达和相机同时看到,然后找对应点算R和t。精度高,但操作麻烦。
- 基于自然特征的方法:利用道路上的车道线、杆状物等特征做匹配。适合在线标定,但鲁棒性差一些。
- 基于运动的方法:让车辆走一段路,利用IMU/里程计和雷达的轨迹来推算外参。我比较喜欢这种方法,因为它不需要标定场。
2.6 本章知识结构图
下面这张图,是我自己梳理标定原理时画的。它把内参、外参、旋转矩阵、平移向量之间的关系串了起来:
从这张图可以看得很清楚:内参标定是基础,外参标定是目标。而外参标定的核心,就是求出一个靠谱的旋转矩阵 R 和一个精确的平移向量 t。两者合在一起,才能完成坐标变换。