坐标系基础:世界坐标系、车辆坐标系、传感器坐标系、坐标系转换矩阵

做感知融合,第一道坎儿就是坐标系。我见过不少新人,算法写得飞起,结果一上车数据全对不上——说白了,就是坐标系没搞明白。

今天咱们就把这事儿彻底捋清楚。你想想看,车上那么多传感器,摄像头、激光雷达、毫米波雷达,每个都有自己的小算盘(坐标系)。怎么让它们说同一种语言?这就是坐标系转换要干的事。

1. 世界坐标系:一切测量的基准

世界坐标系,也叫全局坐标系。它是整个场景的绝对参考系。嗯,你可以把它想象成地球上的经纬度——不管你在哪儿,这个坐标是固定的。

在自动驾驶里,世界坐标系通常用 ENU(东-北-天)或者 NED(北-东-地)两种约定。我个人习惯用ENU,因为直观:

  • X轴:指向东
  • Y轴:指向北
  • Z轴:指向天(垂直向上)

为什么需要世界坐标系?因为车辆在动,传感器在动,但路上的障碍物、车道线是固定的。你总得有个不动的东西做参考吧?

重要概念:世界坐标系是唯一的,所有其他坐标系最终都要转换到这个世界坐标系下,才能做融合。

2. 车辆坐标系:车身的"自我认知"

车辆坐标系是固定在车身上的。它的原点一般在车辆后轴中心(也有放在质心的,看各家定义)。

我记得第一次做实车标定时,发现不同车厂的车辆坐标系定义居然不一样。有的X轴朝前,有的Y轴朝左——这要是没对齐,融合结果直接崩掉。

常见的车辆坐标系定义:

轴 方向 说明
X轴 车辆前进方向 正方向为车头朝向
Y轴 车辆左侧方向 正方向指向驾驶员左侧
Z轴 车辆上方方向 正方向指向车顶

这里有个坑:车辆坐标系是跟着车动的。车转弯了,坐标系也跟着转。所以你在车辆坐标系下看到的目标位置,是相对于车身的——车头朝哪,目标就在哪。

避坑指南:我曾经在融合模块里直接用车辆坐标系做跟踪,结果车一转弯,目标的轨迹全乱了。后来才意识到——跟踪应该在全局坐标系下做,车辆坐标系只适合做短时预测。

3. 传感器坐标系:每个传感器的"小世界"

每个传感器都有自己的坐标系。说白了,就是它"看"世界的方式。

  • 摄像头坐标系:原点在光心,Z轴指向镜头前方(成像方向),X轴向右,Y轴向下。注意,图像坐标系是二维的(u,v),需要先转成相机坐标系下的三维点。
  • 激光雷达坐标系:原点在激光雷达中心,通常X轴指向车头方向,Y轴向左,Z轴向上。激光点云就是在这个坐标系下采集的。
  • 毫米波雷达坐标系:类似激光雷达,但它的数据是稀疏的,只有距离、速度、角度信息。

你想想看,摄像头看到的是像素,激光雷达看到的是点云,毫米波雷达看到的是目标列表——它们说的根本不是同一种语言。怎么让它们对话?

答案就是:坐标系转换矩阵。

4. 坐标系转换矩阵:让数据"说同一种话"

转换矩阵,说白了就是一个数学工具,把点从一个坐标系搬到另一个坐标系。它由两部分组成:

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

完整的转换公式长这样:

P_world = R * P_sensor + t

其中 P_sensor 是传感器坐标系下的点,P_world 是世界坐标系下的点。

实际工程中,我们通常用齐次坐标来写,这样旋转和平移可以合并成一个4x4矩阵:

| P_world |   =   | R  t |   *   | P_sensor |
|   1     |       | 0  1 |       |    1     |

这个4x4矩阵,就是传说中的 外参矩阵。外参标定,标的就是这个矩阵里的 R 和 t。

个人经验:我建议你在代码里统一用齐次坐标。虽然多了一维,但矩阵乘法比分开算旋转和平移要优雅得多,也不容易出错。

5. 知识体系总览

下面这张图,把坐标系之间的关系画清楚了。你一看就明白:

世界坐标系 ENU / NED 绝对参考系,固定不动 车辆坐标系 后轴中心 / 质心 随车运动,X轴朝前 传感器坐标系 摄像头 / 激光雷达 / 毫米波 每个传感器独立定义 外参 外参 直接转换(较少用) 坐标系转换矩阵(4x4齐次矩阵) P_world = T_world_vehicle * T_vehicle_sensor * P_sensor 链式转换:传感器 → 车辆 → 世界

你看,从传感器坐标系到世界坐标系,中间经过车辆坐标系。这就是典型的链式转换。实际工程中,我们一般先标定传感器到车辆的外参,再通过车辆定位(GPS/IMU)得到车辆到世界的外参。

6. 工程中的常见问题

做坐标系转换,有几个坑我踩过,分享给你:

  • 旋转顺序搞反了:旋转矩阵不满足交换律。先绕X轴转再绕Y轴转,和先绕Y轴再绕X轴,结果完全不同。我建议你统一用ZYX顺序(偏航-俯仰-横滚)。
  • 单位没统一:有的传感器输出毫米,有的输出米。转换前一定要统一单位,不然结果差1000倍。
  • 忘记转置:旋转矩阵的逆等于它的转置。但如果你搞反了方向,直接用转置当逆用,那就错了。

调试技巧:我每次写完转换代码,都会找一个已知点做验证。比如在激光雷达坐标系下取一个点(1,0,0),手动算一下它应该落在世界坐标系的哪个位置。算对了再往下走。

好了,坐标系基础就聊到这儿。记住一句话:坐标系转换是感知融合的基石,这块儿搞不明白,后面全是白搭。

核心要点回顾:

  • 世界坐标系是绝对参考,车辆坐标系随车运动,传感器坐标系各有定义
  • 外参矩阵 = 旋转矩阵 + 平移向量,用4x4齐次矩阵统一表示
  • 链式转换:传感器 → 车辆 → 世界,每一步都要标定准确

可可精品资料库