自动驾驶汽车激光雷达如何做到与GPS时间同步?

01 同步方案激光雷达与GPS时间同步主要有三种方案,即PPS+GPRMC、PTP、gPTP
PPS+GPRMCGNSS输出两条信息,一条是时间周期为1s的同步脉冲信号PPS,脉冲宽度5ms~100ms;一条是通过标准串口输出GPRMC标准的时间同步报文 。
同步脉冲前沿时刻与GPRMC报文的发送在同一时刻,误差为ns级别,误差可以忽略 。GPRMC是一条包含UTC时间(精确到秒),经纬度定位数据的标准格式报文 。
【自动驾驶汽车激光雷达如何做到与GPS时间同步?】

自动驾驶汽车激光雷达如何做到与GPS时间同步?

文章插图
PPS秒脉冲为物理电平输出,接收及处理PPS信号的时间在ns级别,依旧可以忽略 。但GPRMC数据一般通过波特率9600的串口发送,发送、接收、处理时间tx在ms级别,是时间同步的关键 。
以下是使用PPS+GPRMC进行时间同步的原理 。
(1)设备收到PPS秒脉冲信号后,将内部以晶振为时钟源的系统时间里的毫秒及以下时间清零,并由此开始计算毫秒时间 。
(2)当收到GPRMC数据后,提取报文里的时、分、秒、年、月、日UTC时间 。
(3)将收到秒脉冲到解析出GPRMC中UTC时间所用的时间tx,与UTC整秒时间相加,同步给系统时间,至此已完成一次时间同步 。下一秒再进行相同的过程,每秒准确校准一次 。
聪明的人可能已经恍然大悟,激光雷达需要进行时间同步,就做两根线接上这两个物理接口就妥了,这种方式是可以的,也是很多厂商在用的方案,但是PPS+GPRMC存在如下问题 。
(1)PPS是一个低功率的脉冲电平信号,驱动电流少的只有0.5mA,多的也就20mA,带几个同步节点(激光雷达和其他需要时间同步的节点),十几个就很困难了 。
(2)PPS是无屏蔽的单线脉冲信号,十几根PPS线穿梭在车内,极易受到车内恶劣电磁环境的干扰,届时根本无法区分出是干扰脉冲还是同步脉冲 。
(3)GPRMC通过RS232串口发送同步报文,RS232是一种1对1的全双工通信形式,也可以通过主从形式实现1对几数据传输 。但对十几,实属罕见,只能通过试验验证到底可不可行 。但至少线束工程师是打死不愿答应的 。
(4)当时钟源丢失的时候,所有需要时间同步的设备都一下子没有了主心骨,每个小弟都可以自立门户,没有二当家的及时站出来,主持大局 。这对功能安全要求极高的自动驾驶系统来说,根本无法接受 。
PTP因此基于单纯的PPS和GPRMC实现整个自动驾驶系统的时间同步,具有理论可行性,但并不具有实际可操作性 。
而基于网络的高精度时间同步协议PTP(Precision Time Protocol,1588 V2),同步精度可以达到亚微秒级 。这对于主干网络为以太网的全域架构来说,简直是万事具备,只欠各域控制器的硬件PHY芯片支持了 。
PTP是一种主从式的时间同步系统,采用硬件时间戳,因此可以大幅减少软件处理时间 。同时PTP可运行在L2层(mac层)和L4层(UDP层),运行在L2层网络时,直接在MAC层进行报文解析,不用经过四层UDP协议栈,从而大幅减少协议栈驻留时间,进一步提高时间同步精度,对于自动驾驶系统来说非常友善 。
全域架构下的一种架构方案如下图 。
设备中运行PTP协议的网络端口称为PTP端口,PTP主端口用来发布时间,PTP从端口用来接收时间 。同时定义了三种时钟节点,边界时钟节点(BC,Boundary Clock)、普通时钟节点(OC,Ordinary Clock)和透明时钟节点(TC,Transparent clock) 。
(1)边界时钟节点拥有多个PTP端口,其中一个用来同步上游设备时间,其余端口用来向下游设备发送时间 。当边界时钟节点的上游时间同步设备是GNSS接收机时,此时的边界时钟节点就是一个主时钟节点(最优时钟) 。
(2)普通时钟节点只有一个PTP端口,用来同步上游时钟节点的时间 。
(3)透明时钟,人如其名,具有多个PTP端口,收到什么时间,转发什么时间,不进行协议解析,内部不参与时间同步 。PTP通过在主从设备之间交互同步报文,并记录下报文发送时间,从而计算网络传输延迟和主从设备间时钟的偏差 。
PTP定义了四条同步报文:Sync、Follow_Up、Delay_Req、Delay_Resp,精确同步过程如下 。
自动驾驶汽车激光雷达如何做到与GPS时间同步?

文章插图
(1)PTP主端口向从端口发送Sync报文,同步记录下Sync发送的时间t1 。从端口收到Sync报文后,记录下收到的时间t2 。
(2)紧接着主端口将t1时间放到Follow_Up报文发送给从端口,从端口收到此报文后就可以解析出t1,并由此得到第一个方程式:t1+网络延时+时钟偏差=t2 。


推荐阅读