4、空间对齐与坐标变换:传感器坐标系、车辆坐标系、世界坐标系、外参标定原理

空间对齐,说白了就是让不同传感器“说同一种语言”。

你想想看,激光雷达看到的是点云,摄像头看到的是像素,毫米波雷达看到的是目标列表。它们各自活在自己的坐标系里。如果不做对齐,融合就是鸡同鸭讲。

我刚开始做多模态融合时,就踩过这个坑。当时把激光点云直接投影到图像上,结果偏移了十几个像素。排查了半天,发现是外参标定文件里一个旋转矩阵的符号写反了。嗯,从那以后,我对坐标变换这件事就格外小心。

4.1 三个核心坐标系

做多模态融合,你至少得搞明白三个坐标系:

  • 传感器坐标系:每个传感器自己的“小世界”。比如激光雷达的原点在它的旋转中心,摄像头的光心在镜头后面。
  • 车辆坐标系:以车身为参考。通常原点在后轴中心,X轴朝前,Y轴朝左,Z轴朝上。这是融合的“中间人”。
  • 世界坐标系:全局参考系。比如GPS用的经纬度,或者高精地图里的UTM坐标。

为什么要分这么细?因为每个坐标系都有它存在的理由。传感器坐标系方便采集数据,车辆坐标系方便做控制决策,世界坐标系方便做路径规划。融合的本质,就是在这三者之间来回穿梭。

核心原则:所有传感器数据,最终都要统一到同一个坐标系下才能做融合。我个人习惯统一到车辆坐标系,因为这样最直观,也最容易做后续的决策规划。

4.2 坐标变换的数学基础

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

旋转用旋转矩阵R表示,平移用平移向量t表示。一个点从坐标系A变换到坐标系B,公式很简单:

P_B = R * P_A + t

但实际项目中,我建议你用齐次坐标。为什么?因为可以把旋转和平移合并成一个4x4的变换矩阵,一次矩阵乘法搞定所有事情。

| P_B |   | R   t |   | P_A |
|  1  | = | 0   1 | * |  1  |

这样做的好处是,多个变换可以连乘。比如从激光雷达到车辆坐标系,再到世界坐标系,只需要把两个变换矩阵乘起来就行。

我的经验:写代码时一定要用现成的库,比如Eigen、Sophus或者OpenCV的cv::Rodrigues。千万别自己手写旋转矩阵,很容易搞错符号。我曾经手写过一次,结果调试了整整两天。

4.3 外参标定原理

外参标定,就是求传感器坐标系到车辆坐标系的变换矩阵。说白了,就是找到传感器装在车上的“位置和朝向”。

标定方法主要有两种:

  1. 目标物法:在车前方放一个已知尺寸的标定板,让传感器同时观测。通过已知的几何关系反推外参。
  2. 自然特征法:利用道路上的车道线、路沿等自然特征做匹配。适合在线标定或自标定。

我参与过的量产项目中,用的都是目标物法。具体流程是这样的:

  • 把车停在标定场地,前方放好标定板
  • 激光雷达扫到标定板上的角点,得到3D坐标
  • 摄像头拍到标定板上的角点,得到2D像素坐标
  • 通过PnP算法求解3D-2D的对应关系
  • 得到旋转矩阵R和平移向量t

避坑指南:我曾经遇到过标定板反光太强,导致摄像头检测到的角点精度不够。后来换了哑光材质的标定板,问题就解决了。另外,标定场地一定要平整,地面不平会导致车辆坐标系不准,进而影响整个标定结果。

4.4 多传感器联合标定

如果车上装了多个传感器,比如前向激光雷达、前向摄像头、侧向毫米波雷达,那就需要做联合标定。

联合标定的思路是:先标定每个传感器到车辆坐标系的外参,然后通过车辆坐标系做中转,推导出传感器之间的相对位姿。

举个例子:

  • 激光雷达到车辆坐标系:T_lidar_to_vehicle
  • 摄像头到车辆坐标系:T_cam_to_vehicle
  • 那么激光雷达到摄像头:T_lidar_to_cam = T_vehicle_to_cam * T_lidar_to_vehicle

这里要注意,T_vehicle_to_cam是T_cam_to_vehicle的逆矩阵。千万别搞反了。

关键点:联合标定完成后,一定要做交叉验证。比如把激光点云投影到图像上,看看边缘是否对齐。如果偏差超过2个像素,说明标定精度不够,需要重新标定。

4.5 知识体系图

下面这张图,是我梳理的空间对齐与坐标变换的核心逻辑。你可以把它当作一个速查表:

空间对齐与坐标变换知识体系 传感器坐标系 车辆坐标系 世界坐标系 外参标定 GPS/IMU 数学基础:旋转矩阵R + 平移向量t → 齐次变换矩阵T P_B = T * P_A | 多变换连乘:T_total = T1 * T2 * T3 外参标定方法 目标物法:标定板 + PnP 自然特征法:车道线/路沿匹配 多传感器联合标定 T_lidar_to_cam = T_vehicle_to_cam * T_lidar_to_vehicle 交叉验证:点云投影到图像对齐 核心目标:所有传感器数据统一到同一坐标系,实现空间对齐

4.6 实战中的注意事项

最后,分享几个我在项目中积累的经验:

  • 标定频率:量产车出厂时标定一次就够了。但如果车辆发生过碰撞或传感器被拆卸,必须重新标定。
  • 温度影响:传感器支架会热胀冷缩。我在夏天标定的车,到了冬天发现外参有微小偏移。建议在标定场里装空调,或者做温度补偿。
  • 数据同步:坐标变换的前提是数据时间戳对齐。如果激光雷达和摄像头的时间差超过10ms,投影就会不准。这个我在第5章会详细讲。
  • 工具链:我推荐用ROS的tf库做坐标变换管理。它自带缓存和插值功能,省心很多。

一个小技巧:标定完成后,可以打印一张棋盘格贴在墙上,用车上的传感器实时观测。如果投影始终对齐,说明标定没问题。这个“自检”步骤,我每次都会做。

空间对齐是融合的基石。这块做扎实了,后面的融合算法才能发挥真正的作用。别嫌麻烦,多花点时间在标定上,绝对值得。


公众号:蓝海资料掘金营,微信deep3321