自动驾驶时间同步为何先失真?滚快门怎么补?
自动驾驶看见的并不是同一瞬间的世界,而是被各路时间戳重新拼接后的场景。只要时基和曝光节拍没有对齐,后端模型越复杂,几何失真反而越难解释。
同步误差最先伤害的是跨传感器的相对位置关系。相机、激光雷达、毫米波和IMU虽然都带时间戳,但它们的采样起点、缓存路径和发布周期并不相同。若系统把驱动层给出的到达时刻当成感知时刻,车辆一旦出现加减速或转向,前视目标就会在融合结果里出现系统性前后错位,像是同一辆车被拖成多层影子。
这类误差通常不是固定偏置,而是随负载和温度漂动。PTP主时钟在实验室里可能稳定,到了量产域控上却会受到交换芯片排队、操作系统调度和日志回灌影响;相机ISP又常把曝光、去噪和打包拆成多级流水线,输出帧号正确,却不再对应真实中值曝光时刻。只用一次标定得到的常数延迟去补,最后补掉的往往只是静态均值。
滚快门会把时间问题进一步投影到空间里。车辆横摆或前向速度较高时,图像每一行并不是同时曝光,上部像素和下部像素实际对应着不同姿态。如果还把整帧近似成全局快门,车道线会在边缘弯曲,立柱会轻微倾斜,后端再用这些特征做外参修正或深度估计,就等于把运动畸变当成真实结构。
因此补偿不能只在图像端做仿射拉伸,更关键的是把姿态轨迹插值到行时间上。IMU积分必须覆盖从首行到末行的整段曝光窗口,且插值使用的角速度、线速度都要与相机触发时钟共参。若行时间来自芯片手册名义值,而固件在不同分辨率和HDR模式下又改写了读出节拍,补偿模型会在模式切换时突然失效。
工程上更稳的做法,是把每个传感器都拆成三个时间量来管:真实采样时刻、可观测发布时刻和算法使用时刻。只有这三者都能被追踪,系统才能分清错位来自同步、来自缓存,还是来自后端排队。把延迟当成链路属性做在线监测,比把它看成一次标定产物更接近真实问题。
验证时也不能只看静止标靶。需要在蛇形转向、连续制动和坑洼路面下,同时观察同一目标在多源投影中的残差变化,再比对不同CPU负载和不同曝光模式下的偏差。若误差在运动强、负载高时明显放大,说明问题不在网络本身,而在时基传播没有闭环。
量产实现里还要防止时间戳在软件接口层被二次污染。不同中间件若各自重写消息头,日志系统又按接收顺序排序,排查时很容易把链路延迟误当成算法耗时。把硬件触发号、原始采样计数和域控统一单调时钟一并落盘,才能在回放中复现真实时序,而不是只复现一份已经被封装过的“结果时间”。回放链路若不能逐层还原时基,线上偶发错位就永远只能停留在猜测层面。真正难复现的往往不是错位本身,而是错位曾经在哪一层被第一次放大。
所以,自动驾驶先要让时间成为一等公民,再去谈空间精度。时基闭合且滚快门被按行补偿后,感知结果才真正可被信任。





