2. 坐标系入门:世界坐标系、车辆坐标系、相机坐标系、激光雷达坐标系、图像坐标系

做自动驾驶感知,说白了就是跟坐标系打交道。我刚开始接触这个领域时,觉得坐标系不就是数学课上学的xyz轴嘛,有什么难的?结果第一次做多传感器融合项目,就被坐标系转换狠狠上了一课。

你想想看,一辆车上装了6个摄像头、1个激光雷达、还有GPS和IMU。每个传感器都有自己的"小算盘"——它们各自定义自己的原点在哪、哪个方向是正方向。如果不把这些坐标系统一起来,那感知结果就是一团乱麻。

这一节,我带你把自动驾驶里最常见的几个坐标系捋清楚。嗯,都是实战中天天要用的东西。

2.1 世界坐标系

世界坐标系,也叫全局坐标系。它是整个场景的"绝对参考系"。你可以把它想象成地球上的经纬度——不管车怎么动、传感器怎么转,世界坐标系是固定不变的。

在自动驾驶里,世界坐标系通常这样定义:

  • 原点:一般选在车辆起始位置,或者地图的某个固定点
  • X轴:指向正东方向
  • Y轴:指向正北方向
  • Z轴:垂直向上(符合右手定则)

重要概念:世界坐标系是唯一一个不随车辆运动而变化的坐标系。所有其他坐标系的最终归宿,都要转换到世界坐标系下。

我在项目中遇到过一个问题:GPS给出的经纬度是WGS84坐标系下的,而高精地图用的是UTM坐标系。这两者之间需要做投影转换。当时没处理好,结果车辆定位偏差了十几米——还好是在测试场,要是在路上就出大事了。

2.2 车辆坐标系

车辆坐标系是跟着车走的。车头朝哪,坐标系就朝哪。它描述的是"相对于车本身"的位置关系。

行业内一般遵循ISO 8855标准:

轴 方向 说明
X轴 车辆前进方向 车头为正
Y轴 车辆左侧方向 左转为正
Z轴 垂直向上 车顶为正

个人习惯:我一般把车辆后轴中心作为车辆坐标系的原点。为什么?因为后轴中心在车辆运动学模型里是最稳定的点,做轨迹预测时误差最小。

车辆坐标系有什么用?举个例子:你检测到前方10米处有个行人。这个"前方10米"就是在车辆坐标系下说的。如果车掉了个头,那这个行人的坐标就变了——因为车辆坐标系跟着车转了。

2.3 相机坐标系

相机坐标系是摄像头自己的"小世界"。它描述的是"从相机角度看"的空间位置。

相机坐标系有个特点——它的Z轴是朝前的,指向相机拍摄的方向。这和车辆坐标系不一样:

  • 原点:相机光心(镜头中心)
  • X轴:指向相机右侧
  • Y轴:指向相机下方(注意,是向下!)
  • Z轴:指向相机前方(拍摄方向)

避坑指南:我曾经在标定相机时,把Y轴方向搞反了。结果3D检测框全部上下颠倒——行人在地上爬,汽车在天上飞。检查了半天才发现是坐标系符号问题。记住:相机坐标系的Y轴是向下的,和常规直觉相反。

相机坐标系到图像坐标系的转换,就是经典的"小孔成像"模型。这个我们后面会详细讲,这里先记住:相机坐标系是3D的,图像坐标系是2D的,中间差了一个投影变换。

2.4 激光雷达坐标系

激光雷达坐标系,不同厂家定义不太一样。但主流方案是这样的:

轴 方向 说明
X轴 雷达前方 通常与车辆前进方向一致
Y轴 雷达左侧 水平方向
Z轴 垂直向上 高度方向

激光雷达输出的是点云数据。每个点包含(x, y, z)坐标,还有反射强度值。这些坐标就是在激光雷达坐标系下的。

我建议你特别注意一点:激光雷达的安装位置不同,它的坐标系原点就不同。装在车顶和装在保险杠上,坐标转换参数完全不一样。做外参标定时,这个一定要量准。

2.5 图像坐标系

图像坐标系是2D的。它描述的是"像素在图片上的位置"。

图像坐标系有两种表示方式:

  1. 像素坐标:(u, v),单位是像素。原点在图像左上角,u轴向右,v轴向下。
  2. 物理坐标:(x, y),单位是毫米。原点在图像中心(主点),x轴向右,y轴向上。

关键点:像素坐标和物理坐标之间,差了一个"内参矩阵"。内参矩阵包含焦距、主点位置、像素尺寸等信息。这些参数在相机出厂时就定了,但实际使用中会有偏差,需要做内参标定来校准。

举个例子:你检测到图像上某个行人的像素坐标是(320, 240)。这个坐标本身没有物理意义——它只是告诉你"这个人在图像的第320列、第240行"。要想知道这个人在空间中的实际位置,就得把像素坐标转换到相机坐标系,再转换到车辆坐标系,最后到世界坐标系。

2.6 坐标系之间的转换关系

好了,五个坐标系都介绍完了。现在的问题是:它们之间怎么转换?

我画了一张图,帮你理清它们之间的关系:

坐标系转换关系图 世界坐标系 车辆坐标系 相机坐标系 激光雷达坐标系 图像坐标系 外参(定位) 外参(标定) 外参(标定) 内参(投影) 全局参考 车辆参考 传感器参考 传感器参考 2D像素

从图上你能看到:

  • 世界坐标系是老大,所有坐标系最终都要跟它对齐
  • 车辆坐标系是中间人,传感器坐标都先转到它这里
  • 相机和激光雷达是平级关系,各自通过外参标定转到车辆坐标系
  • 图像坐标系是2D的,通过内参从相机坐标系投影得到

实战建议:做多传感器融合时,我习惯把所有数据都先转到车辆坐标系下处理。这样逻辑最清晰——不管传感器装在哪,统一用"相对于车"的坐标来描述障碍物位置。

2.7 坐标系转换的数学本质

说白了,坐标系转换就是两件事:旋转和平移。

数学上用一个4x4的齐次变换矩阵来表示:

| R   t |
| 0   1 |

其中:

  • R:3x3旋转矩阵,描述两个坐标系之间的朝向关系
  • t:3x1平移向量,描述两个坐标系原点之间的偏移

举个例子,把激光雷达坐标系下的点转换到车辆坐标系:

P_vehicle = R * P_lidar + t

这里的R和t,就是激光雷达到车辆的外参。我们做外参标定,本质上就是求这个R和t。

注意:旋转矩阵有6个自由度(3个旋转角+3个平移量),但实际标定时我们通常只关心3个旋转角和3个平移量。为什么?因为旋转矩阵虽然是9个元素,但它有正交约束,真正独立的只有3个角度。

嗯,坐标系的内容就讲到这里。这些概念看起来简单,但实际用起来坑不少。我建议你动手画一画每个坐标系的方向,把转换关系写下来。下一节我们讲外参标定的具体方法,到时候这些坐标系知识全都要用上。

一句话总结:坐标系转换是自动驾驶感知的"通用语言"。不会坐标系转换,就做不了多传感器融合。

可可精品资料库