多传感器时间同步
- 每个传感器都有自己的时钟源
- 不同传感器具有不同的采样频率
- 另外数据传输、camera曝光等都会产生不可控的延迟
为了有效融合多个传感器的感知数据,必须进行时间同步
在自动驾驶中,需要用到很多传感器的数据(Lidar,Camera,GPS/IMU),如果计算单元接收到的各传感器的消息时间不统一,则会造成例如障碍物识别不准等问题
自动驾驶中,时间同步可以分为几部分的内容:统一时钟源,硬件同步,软件同步
之前一直不太明白时间同步,空间同步还是很好理解的,看了一些文章和博客,时间同步确实要更难
主要分为硬件同步和软件同步,实验室目前是无法实现硬件同步的,但也需要了解下
统一时钟源和硬同步
通过统一的时钟源给各传感器提供相同的基准时间,各传感器根据提供的基准时间校准各自的时钟时间,从硬件上实现时间同步。因为时钟源都有钟漂,而且每个时钟源钟漂不同,所以即使把各个传感器时间戳在初始时刻对齐,运行一段时间之后,之前对齐的结果就会偏离
。解决这个问题的办法就是在硬件上把时钟源统一
假设各传感器都有自己的内部时钟,但由于每个时钟的钟漂不一样,导致各时钟之间存在时间差,所以需要统一各传感器的时间源
一般采用GPS时间作为统一时间源,通过GPS给各个传感器提供基准时间,各传感器根据提供的基准时间校准各自的时钟时间
各传感器根据已经校准后的各自时间为各自独立采集的数据加上时间戳信息,来做到所有传感器时间戳同步
统一时钟源的常见方式有两种,一种是基于GPS的“PPS+NMEA”,另一种是基于以太网的IEEE 1588(或IEEE 802.1AS)时钟同步协议
- PPS+NMEA
GPS能够从卫星获得高精度的时钟信号,因此通常作为整个系统的时钟源。常规的GPS单元都支持输出精确到毫秒的秒脉冲信号PPS和包含年月日时分秒信息的NMEA指令,通过PPS和NMEA的组合就能够实现对激光雷达或主机的毫秒级时钟同步。将主机时间和激光雷达时间都对齐到GPS时间,即完成了主机和激光雷达的时间源统一。具体可参考:时间同步,自动驾驶里的花好月圆
PPS+NMEA的优点是协议简单,容易实现;缺点是必须基于RS232。多个设备之间实现同步比较困难
- PTP(IEEE 1588或IEEE 802.1AS)
PTP(Precision Time Protocol,1588 V2)是基于以太网的高精度时钟同步协议,能够实现以太网中多个从节点(各种传感器)与主节点(主机)之间的亚微秒级时钟同步,前提是所有节点之间都通过以太网互联,交换机支持PTP协议,并且每个节点都支持PTP协议。
在统一时钟源以后,只能保证时间差没有累计漂移了,但由于不同传感器各自采集周期相互独立,无法保证同一时刻采集数据。因此需要设计一种trigger来同时触发不同的传感器成像。GNSS系统除了可以作为统一的时钟源外,还可以利用其PPS脉冲来触发trigger对传感器下达收集数据的指令,以此来改变传感器的数据采集频率,在指定时间点采集数据
由于每种传感器的采样频率不一致,如lidar通常为10Hz,camera通常为25/30Hz,不同传感器之间的数据传输还存在一定的延迟,那么可以通过寻找相邻时间戳的方法找到最近邻帧,但如果两个时间戳相差较大,且传感器或障碍物又在运动,那么最终会得到较大的同步误差。这个情况可以采用硬件同步触发的方法来缓解查找时间戳造成的误差现象
如果传感器支持硬件触发的情况下,可以采用GPS时间戳作为基准进行硬件触发,这时传感器给出的数据中包含的时间戳即为全局时间戳(GPS时间戳&#