一、标定基础:什么是传感器外参?为什么需要标定?

大家好,我是老张。在机器人这行摸爬滚打了十几年,今天咱们来聊聊传感器外参标定这件事。

说实话,我刚入行那会儿,对「外参」这个概念也是一头雾水。直到有一次,我负责的AGV小车在工厂里撞了货架——原因很简单,激光雷达和里程计的数据对不上。嗯,从那以后,我彻底明白了外参标定的重要性。

1.1 什么是传感器外参?

先问个问题:你车上装了个摄像头,又装了个激光雷达。它们各自看到的世界,怎么才能「对齐」?

说白了,外参就是描述两个传感器之间相对位置和朝向的数学关系。

举个例子:

  • 摄像头装在车顶,激光雷达装在保险杠上
  • 它们之间差了1.2米,转了15度角
  • 这个「1.2米 + 15度」就是外参

我习惯把外参理解成「翻译官」。它把激光雷达看到的点云,翻译成摄像头能理解的像素坐标。没有这个翻译官,两个传感器各说各话,融合就是个笑话。

核心定义:外参(Extrinsic Parameters)描述了两个传感器坐标系之间的刚体变换关系,包括旋转和平移。

1.2 为什么需要标定?

你可能会问:出厂时厂家不是标好了吗?

嗯,理论上是这样。但实际情况是:

  • 运输过程中的震动,会让螺丝松动
  • 温度变化导致金属热胀冷缩
  • 安装时的人工误差,差个几毫米很正常
  • 时间久了,传感器位置会轻微偏移

我曾经遇到过一个案例:某无人配送车,摄像头和激光雷达的外参偏差了0.5度。就这0.5度,导致30米外的障碍物定位偏差了26厘米。26厘米什么概念?刚好够撞上一个消防栓。

避坑指南:我曾经以为出厂标定就万事大吉,结果在项目验收时吃了大亏。现在我的习惯是:每次部署前,必须重新标定一次。

1.3 外参标定的核心数学原理

好了,聊完了「是什么」和「为什么」,咱们来点硬核的。外参标定的数学基础,说白了就是刚体变换。

1.3.1 刚体变换

刚体变换,就是物体在空间中移动和旋转,但形状不变。你想想看,你把手机从桌上拿到耳边,手机本身没变形,这就是刚体变换。

数学上,刚体变换可以写成:

P' = R * P + T

其中:

  • P 是原始坐标系下的点
  • P' 是目标坐标系下的点
  • R 是旋转矩阵(3x3)
  • T 是平移向量(3x1)

说白了,就是先转一下,再挪一下。

1.3.2 旋转矩阵

旋转矩阵R,是个3x3的方阵。它有几个特点:

  • 行列式为1
  • 是正交矩阵(R的转置等于R的逆)
  • 有9个元素,但只有3个自由度

我刚开始学的时候,觉得9个数记起来太麻烦。后来发现,其实你只需要理解它代表绕三个轴的旋转就行。

小技巧:我个人习惯用右手定则来判断旋转方向。拇指指向轴的正方向,四指弯曲的方向就是正旋转方向。

1.3.3 欧拉角

欧拉角是旋转矩阵的「简化版」。它用三个角度来描述旋转:

  • 绕X轴旋转:横滚角(Roll)
  • 绕Y轴旋转:俯仰角(Pitch)
  • 绕Z轴旋转:偏航角(Yaw)

但这里有个坑——万向锁。当俯仰角达到±90度时,横滚和偏航会变成同一个轴,导致自由度丢失。

我记得有一次做无人机标定,就是因为没注意万向锁问题,导致姿态解算直接炸了。嗯,从那以后,我更喜欢用四元数。

1.3.4 四元数

四元数,听起来高大上,其实没那么复杂。它用四个数来表示旋转:

q = w + xi + yj + zk

其中:

  • w 是实部
  • x, y, z 是虚部
  • i² = j² = k² = ijk = -1

四元数的好处:

  • 没有万向锁问题
  • 插值平滑(SLERP)
  • 计算效率高

你想想看,旋转矩阵要9个数,欧拉角有奇异性,四元数只要4个数,完美解决了问题。

实战建议:我建议在代码里统一用四元数做运算,只在可视化或人机交互时转成欧拉角。这样可以避免很多坑。

1.4 知识体系总览

为了让你更直观地理解本章的知识结构,我画了一张图:

传感器外参标定基础 什么是外参? 坐标系间的相对位姿 旋转 + 平移 传感器数据对齐的桥梁 为什么需要标定? 安装误差不可避免 温度/震动导致偏移 0.5度偏差=26cm误差 核心数学原理 刚体变换 P'=R*P+T 旋转矩阵(3x3) 欧拉角 / 四元数 外参标定 = 找到最优的R和T 三种表示方式:旋转矩阵(9参数)→ 欧拉角(3参数)→ 四元数(4参数) 各有优劣,实际工程中建议统一使用四元数

1.5 三种表示方式的对比

最后,我把三种旋转表示方式整理成了一张表,方便你对比:

特性 旋转矩阵 欧拉角 四元数
参数数量 9个 3个 4个
奇异性 无 有(万向锁) 无
插值 困难 有抖动 平滑(SLERP)
计算效率 中等 高 高
直观性 差 好 中等
工程推荐 不推荐 仅用于显示 强烈推荐
我的经验:刚开始做标定的时候,我总喜欢用欧拉角,因为直观。但后来发现,一旦涉及连续旋转或插值,四元数才是王道。现在我的代码库里,90%的旋转运算都用四元数。

好了,这一章的内容就到这里。外参标定看似基础,但它是整个传感器融合的基石。地基打不牢,上面盖再高的楼也是白搭。

可可精品资料库