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 外参标定原理
外参标定,就是求传感器坐标系到车辆坐标系的变换矩阵。说白了,就是找到传感器装在车上的“位置和朝向”。
标定方法主要有两种:
- 目标物法:在车前方放一个已知尺寸的标定板,让传感器同时观测。通过已知的几何关系反推外参。
- 自然特征法:利用道路上的车道线、路沿等自然特征做匹配。适合在线标定或自标定。
我参与过的量产项目中,用的都是目标物法。具体流程是这样的:
- 把车停在标定场地,前方放好标定板
- 激光雷达扫到标定板上的角点,得到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 知识体系图
下面这张图,是我梳理的空间对齐与坐标变换的核心逻辑。你可以把它当作一个速查表:
4.6 实战中的注意事项
最后,分享几个我在项目中积累的经验:
- 标定频率:量产车出厂时标定一次就够了。但如果车辆发生过碰撞或传感器被拆卸,必须重新标定。
- 温度影响:传感器支架会热胀冷缩。我在夏天标定的车,到了冬天发现外参有微小偏移。建议在标定场里装空调,或者做温度补偿。
- 数据同步:坐标变换的前提是数据时间戳对齐。如果激光雷达和摄像头的时间差超过10ms,投影就会不准。这个我在第5章会详细讲。
- 工具链:我推荐用ROS的tf库做坐标变换管理。它自带缓存和插值功能,省心很多。
一个小技巧:标定完成后,可以打印一张棋盘格贴在墙上,用车上的传感器实时观测。如果投影始终对齐,说明标定没问题。这个“自检”步骤,我每次都会做。
空间对齐是融合的基石。这块做扎实了,后面的融合算法才能发挥真正的作用。别嫌麻烦,多花点时间在标定上,绝对值得。
公众号:蓝海资料掘金营,微信deep3321