坐标系与空间变换:自动驾驶的“空间语言”

做自动驾驶感知这些年,我最大的体会就是——坐标系搞不明白,后面全是坑。你想想看,激光雷达说前面3米有个障碍物,摄像头说像素坐标(320,240)有个目标,这两个数据怎么对齐?靠的就是坐标系变换。

说白了,自动驾驶系统里有多个“眼睛”和“大脑”,每个部件都有自己的坐标系。我们要做的,就是让它们说同一种“空间语言”。

1. 世界坐标系:全局地图的“锚点”

世界坐标系是最大的那个坐标系。它固定在地球上,不随车辆移动而改变。我习惯用WGS-84经纬度坐标系,或者UTM投影坐标系。

举个例子:高精地图上的车道线、红绿灯位置,都是用世界坐标描述的。车辆知道自己在地图上的位置,才能规划路径。

关键点:世界坐标系是绝对的、静止的。所有其他坐标系最终都要转换到世界坐标系,才能实现全局一致性。

2. 车辆坐标系:车身的“本体感知”

车辆坐标系以车身为参考。通常定义如下:

  • X轴:车头方向为正
  • Y轴:车身左侧为正(注意!有些标准用右侧)
  • Z轴:车顶方向为正
  • 原点:后轴中心或车辆质心

我在项目中遇到过一个问题:不同供应商给的车辆坐标系定义不一样。有的用ISO标准,有的用SAE标准。Y轴方向正好相反!这导致融合结果直接翻车。所以,第一件事就是统一坐标系定义。

避坑指南:我曾经因为没检查坐标系定义,把左侧障碍物映射到了右侧。调试了整整两天才发现是Y轴方向反了。记住:先对齐定义,再谈精度。

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

每个传感器都有自己的坐标系:

传感器 原点位置 Z轴方向 常见问题
激光雷达 激光发射中心 垂直向上 安装角度偏差
摄像头 光学中心 光轴方向 畸变+安装误差
毫米波雷达 天线中心 水平向前 多径反射干扰
IMU 惯性测量单元中心 重力方向 温漂+零偏

你想想看,激光雷达的点云是三维的,摄像头图像是二维的。要把它们对齐,就得知道每个传感器在车辆坐标系下的位置和朝向。这就是外参。

4. 坐标变换矩阵:数学上的“翻译官”

坐标变换的核心是刚体变换。说白了,就是旋转+平移。

数学表达式很简单:

P_vehicle = R * P_sensor + T

其中:

  • R:3x3旋转矩阵,描述朝向关系
  • T:3x1平移向量,描述位置偏移
  • P_sensor:传感器坐标系下的点
  • P_vehicle:车辆坐标系下的点

实际工程中,我们通常用齐次坐标来简化计算:

| P_vehicle |   =   | R  T |   *   | P_sensor |
|    1      |       | 0  1 |       |    1     |

这样做的好处是:多次变换可以连乘成一个矩阵。比如从传感器到世界坐标:

T_world_sensor = T_world_vehicle * T_vehicle_sensor
我的习惯:在代码里用4x4齐次变换矩阵,而不是分开存旋转和平移。这样调试时一目了然,也方便做矩阵求逆(求逆就是反向变换)。

5. 外参标定简介:让传感器“对齐”

外参标定,就是求传感器坐标系到车辆坐标系的变换矩阵。我做过很多次标定,总结下来就两种方法:

5.1 离线标定

在实验室或固定场地,用标定板、标定杆等工具。优点是精度高,缺点是费时费力。

  • 激光雷达-摄像头标定:用棋盘格,提取角点,找3D-2D对应关系
  • 激光雷达-激光雷达标定:用ICP算法,对齐点云
  • 摄像头-摄像头标定:用立体视觉方法,求本质矩阵

5.2 在线标定

车辆行驶过程中自动标定。我参与过一个项目,用SLAM的位姿估计来做在线外参校正。

嗯,这里要注意:在线标定精度通常不如离线标定。但它的好处是能补偿安装松动、温度变化引起的微小偏移。

我曾经踩过的坑:离线标定做得很好,但车辆跑了一段时间后,外参变了。原因是螺丝松动+热胀冷缩。从那以后,我坚持在系统里加一个外参健康度监控模块,定期检查变换矩阵是否漂移。

6. 知识体系总览

下面这张图,是我自己总结的坐标系与空间变换知识体系。你看一遍就能明白整体脉络:

坐标系与空间变换知识体系 世界坐标系 WGS-84 / UTM 车辆坐标系 后轴中心 / 质心 传感器坐标系 LiDAR / Camera / Radar 坐标变换矩阵 (4x4齐次变换) P' = R * P + T → 齐次形式: [R T; 0 1] 外参标定 离线标定(高精度) | 在线标定(自适应) 障碍物检测 多传感器融合 路径规划 坐标系变换是感知系统的“空间基础”,所有上层应用都依赖它

7. 工程实践中的几个建议

做了这么多年感知,我总结了几条坐标系相关的铁律:

  1. 统一坐标系定义:项目一开始就定好X/Y/Z正方向,写在文档里,所有人遵守
  2. 用齐次矩阵:别分开存旋转和平移,容易出错
  3. 标定后验证:标定完一定要做投影验证。比如把激光雷达点云投影到图像上,看边缘是否对齐
  4. 监控外参漂移:加一个定期检查机制,发现偏差超过阈值就报警
  5. 记录变换链:每个数据都带上它的坐标系来源,方便追溯
一个小技巧:调试时,我习惯在可视化工具里同时显示多个坐标系的原点和轴。一眼就能看出变换是否正确。如果发现点云和图像对不上,先检查外参,再检查时间戳同步。

好了,坐标系与空间变换就讲到这里。记住一句话:坐标系是感知系统的“地基”,地基不稳,楼盖得再高也会塌。

可可精品资料库