第二章:坐标系与时空同步

说实话,做传感器融合这些年,我踩过最大的坑,就是坐标系和时钟不同步。你想想看,激光雷达说目标在左边10米,摄像头说在右边5米,到底信谁?

嗯,这章我们就来彻底搞定这个问题。我会把我在项目里摔过的跟头、总结的经验,全都摊开来讲。

2.1 车辆坐标系:一切测量的基准

车辆坐标系,说白了就是给车定个“原点”。我个人习惯用ISO 8855标准:

  • X轴:车头方向为正
  • Y轴:车身左侧为正
  • Z轴:车顶方向为正
  • 原点:后轴中心在地面的投影

为什么选后轴中心?因为车辆转弯时,后轴中心基本不动。我在做泊车项目时,一开始用了前轴中心,结果倒车时坐标一直在漂,后来才改过来。

重要提醒:不同车厂可能用不同标准。比如宝马用前轴中心,大众用后轴。对接前一定要确认清楚。

2.2 传感器坐标系:各说各话的世界

每个传感器都有自己的“小算盘”:

传感器 坐标系定义 常见问题
激光雷达 右手系,Z轴向上 安装角度偏差
摄像头 Z轴指向拍摄方向 畸变导致坐标偏移
毫米波雷达 极坐标系 多径效应干扰
IMU 载体坐标系 零偏漂移

我曾经遇到一个案例:激光雷达和摄像头都检测到同一个行人,但坐标差了30厘米。查了两天,发现是激光雷达的安装支架有1度的倾斜。你看,机械公差都能让你抓狂。

2.3 坐标变换矩阵:数学才是硬道理

要把不同传感器的数据统一到车辆坐标系,就得用变换矩阵。核心公式就一个:

P_vehicle = R * P_sensor + T

其中:

  • R:旋转矩阵(3x3)
  • T:平移向量(3x1)
  • P_sensor:传感器坐标系下的点

旋转矩阵怎么算?我建议用欧拉角转成四元数,再转矩阵。直接算欧拉角容易遇到万向锁。嗯,这里要注意:

避坑指南:我曾经直接用欧拉角做插值,结果在俯仰角接近90度时,航向角突然跳变。后来改用四元数球面插值(SLERP),问题就解决了。

实际工程中,我们通常用齐次坐标:

| x_vehicle |   | R11 R12 R13 Tx |   | x_sensor |
| y_vehicle | = | R21 R22 R23 Ty | * | y_sensor |
| z_vehicle |   | R31 R32 R33 Tz |   | z_sensor |
|    1      |   |  0   0   0   1 |   |    1     |

2.4 时间戳对齐机制:时间就是生命

传感器数据不仅要空间对齐,还要时间对齐。为什么?因为车在动。100毫秒的延迟,在高速上就是3米的误差。

我常用的对齐方法有三种:

  1. 最近邻插值:找时间最近的数据。简单,但精度一般。
  2. 线性插值:用前后两帧数据加权平均。适合匀速场景。
  3. 卡尔曼预测:用运动模型预测当前时刻的状态。精度最高,但计算量大。

我的经验:实际项目中,我通常用最近邻插值做快速对齐,再用卡尔曼预测做精细对齐。这样既保证了实时性,又保证了精度。

时间戳本身也有坑。不同传感器的时钟源可能不同:

  • 激光雷达:通常用内部晶振,漂移大
  • 摄像头:依赖主控的PTP时钟
  • IMU:自带高精度时钟

我曾经遇到一个诡异的问题:激光雷达和摄像头的时间戳差了200毫秒,但两个传感器都说是“精确时间”。后来发现,激光雷达用的是UTC时间,摄像头用的是系统启动后的相对时间。你想想看,这能对齐吗?

2.5 硬件触发同步方案:硬核解决方案

软件对齐总有误差,硬件触发才是终极方案。常见的做法是:

  • GPS PPS信号:每秒一个脉冲,所有传感器同步触发
  • PTP(精确时间协议):网络同步,精度可达微秒级
  • 硬件触发线:主控发脉冲,传感器同时采集

我个人最推荐PTP方案。为什么?因为GPS信号在隧道里会丢失,而PTP只要网络不断就能工作。

实际部署时要注意:

  1. 所有传感器必须支持PTP协议
  2. 交换机也要支持PTP透明时钟
  3. 网线长度尽量一致,减少延迟差异

关键点:硬件触发只能保证“同时采集”,不能保证“同时到达”。数据在传输过程中还有延迟,所以软件上还是要做时间戳补偿。

2.6 实战:标定流程与工具

说了这么多理论,来点实际的。我一般这样标定:

  1. 粗标定:用卷尺量安装位置,算个大概的变换矩阵
  2. 精标定:用标定板或特征点,优化变换参数
  3. 验证:跑一段路,看融合效果

工具方面,我常用:

  • MATLAB标定工具箱:适合离线标定
  • ROS的tf库:适合在线调试
  • 自研标定程序:针对特殊场景优化

嗯,这里要提醒一下:标定不是一次性的。车辆使用一段时间后,传感器位置可能会松动。我建议每3个月重新标定一次,或者每次保养后都检查一下。

好了,坐标系和时空同步就讲到这里。下一章我们聊聊传感器数据预处理,那可是融合算法的“洗菜”环节,洗不干净,炒出来的菜就没法吃。