主要包含两个大的概念:时间系统间的时间同步与传感器数据间的时间同步
1. 时间系统间的时间同步
概念:
自动驾驶域控一般由多个芯片与多种类型的传感器组成,如:MCU + SoC + Camera + Lidar + Radar + USS + GNSS,其中 MCU/SoC/Camera/Lidar 等较为复杂的电子器械上一般自带专门的时间系统,由时间系统提供与时间相关的接口给到应用程序,这些时间系统间的时间需要保持一致。
1.1 时间系统
时间系统通过接口形式,为应用程序提供多种时间功能,如世界时间获取,周期计时等。时间系统主要依赖于晶振计时,初始时间设置与时间同步。
1.1.1 晶振计时:
晶体振荡器每秒钟振荡几千至上百万次(振荡次数越多,时间间隔越精准),为时间系统提供较为精准的时钟信号,过程可以简单描述为:晶体每振荡N次,时间系统增加1纳秒。晶振。
一般系统设计当中,晶振的计时始终累积,不随时间同步变换。
但晶振存在两个问题,一是无法获取初始时间,二是晶振本身存在一定的误差
1.1.2 初始时间设置与时间同步:
系统启动后,默认会有个初始时间,如经典的 1970-01-01 00:00:00,需要使用外部信号对时间进行初始设置。
初始时间设置以后,随着时间推移,晶振累积的误差变大,需要对时间进行纠正微调。例如我们使用的手机,一般每周会与互联网时间同步一次,累积误差一般在几十秒内。
1.2 同步方式 NTP/PTP(gPTP)
时间同步主要有两种方式,NTP与PTP(gPTP可以理解为PTP协议的特定部分)。linux内核对两种协议都有支持(NTP,ptp4l),配置相应的参数(如NTP服务器/客户端地址)即可。具体协议内容不做展开。
PTP协议的时间精度显著高于NTP,主要原因包括以下几个方面:
- 硬件支持的差异
PTP依赖硬件时间戳记录报文收发时间,直接在数据链路层处理时间信息,减少了操作系统和软件栈的延迟干扰。而NTP主要基于软件时间戳,在应用层处理同步,无法避免协议栈处理带来的不确定性。
- 时间戳记录位置不同
PTP在数据链路层精确记录报文的发送和接收时间,时间戳更贴近物理网络的实际传输时刻。NTP的时间戳记录发生在应用层,报文经过协议栈各层时可能引入额外延迟抖动。
- 网络延迟计算方法优化
PTP通过多次报文交换(Sync、Follow_Up、Delay_Req等)计算双向传输延迟,并基于网络对称性假设将总延迟均摊为单向值,误差更小。NTP仅通过两次报文交换估算延迟,且未严格区分主从路径的延迟差异,精度受限。
- 主从结构与层级设计
PTP采用严格的主从架构(Best Master Clock Algorithm),由单一高精度主时钟直接同步所有从节点,减少层级累积误差。而NTP采用分层树状结构(Stratum层级),多级跳转会导致误差逐级放大。
- 同步机制覆盖范围更全面
PTP不仅同步绝对时间,还通过相位和频率同步消除时钟漂移,实现亚微秒级精度。NTP主要针对绝对时间同步,对频率同步的支持较弱,精度通常停留在毫秒级。
综上,PTP通过硬件协同、精确的时间戳记录、优化的延迟算法以及更严格的网络同步机制,实现了比NTP高2-3个数量级的时间精度。
1.3 自动驾驶系统中的系统时间同步
双时钟源
双时钟源的核心构成
1. GNSS卫星时钟源
- 采用北斗/GPS双模接收机,通过PPS秒脉冲(1Hz)和GPRMC报文提供全局时间基准。PPS脉冲精度可达20ns级别,GPRMC报文则补充完整UTC时间信息。
- 双卫星系统(如北斗+GPS)形成冗余,当某一系统信号丢失时,可在20ms内切换至备用卫星源,确保时钟连续性。
2. 以太网时钟源
- 基于IEEE 1588 PTP或802.1AS gPTP协议,通过主时钟节点(一般为MCU)向域控制器、相机、雷达等设备分发时间信号,实现亚微秒级同步。
- PTP协议支持硬件时间戳记录,规避操作系统协议栈延迟,精度比纯软件方案(如NTP)高2-3个数量级。
双时钟源协同机制
-
主备切换逻辑
当GNSS信号受遮挡(如隧道场景)时,系统自动切换至PTP网络时钟源;GNSS信号恢复后重新校准网络时钟,防止长期漂移。 -
硬件级同步触发
激光雷达、相机等传感器通过PPS脉冲触发数据采集,确保物理层时间对齐;域控制器结合PTP协议对多传感器时间戳进行微调,消除传输延迟。
技术优势
-
抗干扰能力提升
双时钟源通过卫星与地面网络互补,解决单一信号源易受环境干扰的问题(如城市峡谷、电磁干扰)。 -
误差控制优化
GNSS提供绝对时间基准,PTP实现局部高精度同步,两者结合可将全域时间误差控制在100ns以内
2. 传感器数据间的时间同步
概念:
传感器采样频率有快有慢,一般而言,摄像头频率10~15Hz,激光雷达频率在20Hz,毫米波雷达频率20~25Hz...
自动驾驶算法模块接收到传感器数据时,时间无法完全保持一致,需要对传感器数据进行一定的校准
同步方式
1. 软件层面
软件层面需要尽可能以适合算法使用的方式处理传感器数据的时间
举例:
为了在激光雷达和摄像头之间实现良好的跨模态数据对齐,当顶部激光雷达扫过摄像头视场中心时,摄像头的曝光就会被触发。图像的时间戳是曝光触发时间;激光雷达扫描的时间戳是当前激光雷达帧完成旋转的时间。由于摄像头的曝光时间几乎是瞬时的,这种方法通常可以实现良好的数据对齐。需要注意的是,摄像头的运行频率为 12Hz,而激光雷达的运行频率为 20Hz。12 个摄像头的曝光尽可能均匀地分布在 20 个激光雷达扫描中,因此并非所有激光雷达扫描都有对应的摄像头帧。将摄像头的帧速率降低到 12Hz 有助于降低感知系统的计算、带宽和存储需求。
2. 算法层面
算法使用传感器数据进行二维或三维建模时,需要选取某一种类型的传感器数据作为主要场景(一般是摄像头图像),然后将采集到的其它传感器的数据在时间上做一定修正,渲染到主场景中,实现传感器数据的时空统一