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


(3)从端口向主端口发送Delay_Req报文,同步记录下Delay_Req发送的时间t3 。主端口收到报文后,记录下收到的时间t4 。
(4)紧接着主端口将t4时间放到Delay_Resp报文发送给从端口,从端口收到此报文后就可以解析出t4,并由此得到第一个方程式:t3+网络延时-时钟偏差=t4 。两个未知数,两个方程组,应用初中数学知识可以解出:网络延时=[(t2-t1)+(t4-t1)]/2,时钟偏差=[(t2-t1)-(t4-t3)]/2 。
gPTPgPTP(generalized Precision Time Protocol,广义精确时间同步协议),基于PTP(IEEE 1588v2)协议进行了一系列优化,形成了更具有针对性的时间同步机制,可以实现μs级的同步精度 。
gPTP定义有两种设备类型,Time-aware-end Station和Time-aware Bridge 。每种设备都具有本地时钟,本地时钟都是通过晶振的振荡周期进行度量的,设备内部硬件计数器负责对振荡周期进行计数 。设备中用来发布时间同步报文的网络端口称为主端口,用来接收时间同步报文的端口称为从端口 。
(1)Time-aware-end Station,既可以作为主时钟,也可以作为从时钟 。
(2)Time-aware Bridge,既可以作为主时钟,也可以作为桥接设备,类似交换机 。桥接类设备在收到gPTP报文后,会请报文搓个澡,然后再送出去 。而报文在桥接设备内搓澡消耗的时间,称为驻留时间 。gPTP要求桥接设备必须具有测量驻留时间的能力 。
下图展示了一个简单的gPTP系统,包含一个时钟源、1个主时钟,2个桥接设备,4个从时钟 。主时钟是系统内的时间基准,一般具有更高精度的本地时钟,同时需要能够被高精度准时钟源授时 。主时钟在系统内可以动态分配,也可以预先分配(对于车载固定拓扑应用场景,多采用预先分配的原则) 。

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

文章插图
gPTP中规定的主时钟动态分配机制为BMCA(Best Master Clock Algorithm,最佳主时钟选择算法) 。系统上电唤醒之后,系统所有设备都可以通过发送一条报文来参与主时钟竞选,报文中含有各自设备的时钟信息 。每一个参选设备都会比较自己的时钟信息和其它设备的时钟信息,并判断是否具有优势,如果不具有,则退出竞选,直到综合能力最强的武林盟主诞生 。
02 同步过程gPTP定义有两类报文,事件类型报文(包括Sync、Pdelay_Req、Pdelay_Resp三条)和一般类型报文(包括Follow_UP、Pdelay_Resp_Follow_UP二条) 。gPTP定义设备工作在网络七层模型中的第二层数据链路层的MAC(Media Acess Control,媒介访问控制)子层 。
当设备MAC层接收或发送事件类型报文时,会触发对硬件计数器进行采样,从而获得时钟振荡周期计数值,结合时钟振荡频率及基准时间,可获得此时的时间戳 。而一般类型报文仅用来携带信息,不会触发内部硬件计数器的采样操作 。
时钟偏差测量gPTP定义的五条报文中,Sync和Follow_UP为一组报文,周期发送,主要用来测量时钟偏差 。Sync由主端口发送,在报文离开主端口MAC层时,触发主端口记录此时的时间戳t1 。从端口MAC层收到Sync报文后会记录此时的时间戳t2 。随后,主端口将t1值附到Follow_UP报文里发送给从端口 。
自动驾驶汽车激光雷达如何做到与GPS时间同步?

文章插图
如果没有网络传输延迟或延迟、可以忽略,则从端口将本地时钟值加上时钟偏差(t1-t2的值)就完成时间同步,也就没有后面的碎碎念了 。但是对于μs级时间同步精度的gPTP来说,传输延迟显然无法视若不见 。
传输延迟测量gPTP采用P2P(Peer to Peer)的方法来测量传输延迟 。在P2P方法中,测量的是相邻设备间的传输延迟,报文不允许跨设备传输,这也就要求gPTP网络内的所有设备都需要支持gPTP功能 。同时定义一组独立的报文专门负责传输延迟测量,分别为周期发送的Pdelay_Req、Pdelay_Resp和Pdelay_Resp_Follow_UP 。
自动驾驶汽车激光雷达如何做到与GPS时间同步?

文章插图
从端口首先发送Pdelay_Req报文,标志传输延迟测量的开始,在报文离开从端口MAC层时,触发从端口记录此时的时间戳t3 。主端口MAC层收到Pdelay_Req报文后会记录此时的时间戳t4,随后,主端口通过Pdelay_Resp报文将值t4发送给从端口,同时在Pdelay_Resp报文离开主端口的MAC层时,触发主端口记录此时的时间戳t5,从端口MAC层收到Pdelay_Resp报文后记录此时的时间戳t6 。随后,相同的套路,主端口通过Pdelay_Resp_Follow_Up报文将值t5发送给从端口 。至此,一次传输延迟测量过程已经结束 。在假设路径传输延迟是对称的前提下,可由如下公式计算相邻设备间的传输延迟 。


推荐阅读