自动驾驶的有趣灵魂gps北斗授时(对时服务)
一辆宣称具备L4/L5自动驾驶功能的车辆,如果多个激光雷达之间的时间同步不够精确?如果传感器感知数据通过以太网传输到智驾域控制器的延迟不可控?如果智驾域控制器规划决策的结果通过以太网传输到底盘域控制器的延迟也不可控?如果座舱域内屏幕显示的变道决策与扬声器播报的声音不同步?那将仍然只是一辆适合演示或测试的无情机器,一副没有“有趣灵魂”的躯体。
自动驾驶功能对数据在传输过程的可靠性和实时性要求远超汽车以往任何功能,而作为域架构/中央计算架构下承载数据传输的车载以太网,必须具备类似当前CAN/LIN网络下数据传输的确定性、实时性能力。而TSN作为一种可以基于车载以太网提供确定性和实时性数据传输的全新网络技术,开始进入到自动驾驶产业上下游的视野。
TSN的确定性和实时性优势是建立在精确的时间同步基础之上,而TSN中用于实现精确时间同步的协议是IEEE 802.1AS,也就是业界常说的gPTP。在《时间同步,自动驾驶里的花好月圆》这篇文章中,作者介绍了PPS PTP的全域架构下时间同步系统方案,可以认为是TSN产业尚未成熟背景下的一种最佳选择。而随着TSN上下游产业的成熟,以及自动驾驶量产落地的推进,PPS gPTP必将契合全域架构/中央计算架构下自动驾驶功能的需求。
自动驾驶圈黑话第九期就以gPTP为切入点,介绍TSN下一种更精确的时间同步方法,同时介绍适合自动驾驶量产落地路上一种更优的时间同步架构方案。
TSN的前情回顾
TSN(Time-Sensitive Networking,时间敏感型网络)技术的前身是AVB(Audio/Video Bridging,音视频桥接)技术。在以太网音视频传输领域,如果音频和视频信息没有严格的时序规则以及不具有可预测的延迟,则会出现声音和画面不一致的现象。而高清的音频和视频数据传输,带宽需求极大,实时性要求又非常高。如何保证高带宽下的实时、同步传输,成为以太网音视频传输领域的难题。
2006年,IEEE 802.1工作组成立AVB任务组,主攻以上难题。经过几年攻关后,成功找到了高带宽音视频数据在以太网中实时、同步传输的方法,并制定了一系列标准。AVB由此开始受到工业、汽车领域产学研人士的关注。
2012年,AVB任务组改名TSN任务组,并在其章程中扩大了时间确定性以太网的应用需求和适用范围。TSN任务组通过制定一系列的传输和转发机制来保证数据在车载以太网传输过程中的低延时、低抖动和低丢包率,从而保证数据在高可靠性的前提下进行快速传输,为在工业、汽车领域的应用打下理论基础。
TSN协议栈是一系列IEEE 802.1标准的集合,包括技术类和配置类。技术类也称为组件,主要有五类组件构成,包括时间同步组件、可靠性组件、延时控制组件、资源管理组件和安全组件。配置类主要分为工业领域、汽车领域和移动领域等。汽车领域主要涉及两份配置标准IEEE 802.1BA和IEEE P802.1DG,后者将gPTP定义为车载以太网TSN网络下时间同步的标准。
一、基础概念
gPTP(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个从时钟。主时钟是系统内的时间基准,一般具有更高精度的本地时钟,同时需要能够被高精度准时钟源(如卫星系统、原子钟等)授时。主时钟在系统内可以动态分配,也可以预先分配(对于车载固定拓扑应用场景,多采用预先分配的原则)。
gPTP中规定的主时钟动态分配机制为BMCA(Best Master Clock Algorithm,最佳主时钟选择算法)。系统上电唤醒之后,系统所有设备都可以通过发送一条报文来参与主时钟竞选,报文中含有各自设备的时钟信息。每一个参选设备都会比较自己的时钟信息和其它设备的时钟信息,并判断是否具有优势,如果不具有,则退出竞选,直到综合能力最强的武林盟主诞生。
二、同步过程
gPTP定义有两类报文,事件类型报文(包括Sync、Pdelay_Req、Pdelay_Resp三条)和一般类型报文(包括Follow_UP、Pdelay_Resp_Follow_UP二条)。gPTP定义设备工作在网络七层模型中的第二层数据链路层的MAC(Media Acess Control,媒介访问控制)子层。
当设备MAC层接收或发送事件类型报文时,会触发对硬件计数器进行采样,从而获得时钟振荡周期计数值,结合时钟振荡频率及基准时间,可获得此时的时间戳。而一般类型报文仅用来携带信息,不会触发内部硬件计数器的采样操作。
(1)时钟偏差测量
gPTP定义的五条报文中,Sync和Follow_UP为一组报文,周期发送,主要用来测量时钟偏差。Sync由主端口发送,在报文离开主端口MAC层时,触发主端口记录此时的时间戳t1。从端口MAC层收到Sync报文后会记录此时的时间戳t2。随后,主端口将t1值附到Follow_UP报文里发送给从端口。
如果没有网络传输延迟或延迟、可以忽略,则从端口将本地时钟值加上时钟偏差(t1-t2的值)就完成时间同步,也就没有后面的碎碎念了。但是对于μs级时间同步精度的gPTP来说,传输延迟显然无法视若不见。
(2)传输延迟测量
gPTP采用P2P(Peer to Peer)的方法来测量传输延迟。在P2P方法中,测量的是相邻设备间的传输延迟,报文不允许跨设备传输,这也就要求gPTP网络内的所有设备都需要支持gPTP功能。同时定义一组独立的报文专门负责传输延迟测量,分别为周期发送的Pdelay_Req、Pdelay_Resp和Pdelay_Resp_Follow_UP。
从端口首先发送Pdelay_Req报文,标志传输延迟测量的开始,在报文离开从端口MAC层时,触发从端口记录此时的时间戳t3。主端口MAC层收到Pdelay_Req报文后会记录此时的时间戳t4,随后,主端口通过Pdelay_Resp报文将值t4发送给从端口,同时在Pdelay_Resp报文离开主端口的MAC层时,触发主端口记录此时的时间戳t5,从端口MAC层收到Pdelay_Resp报文后记录此时的时间戳t6。随后,相同的套路,主端口通过Pdelay_Resp_Follow_Up报文将值t5发送给从端口。至此,一次传输延迟测量过程已经结束。在假设路径传输延迟是对称的前提下,可由如下公式计算相邻设备间的传输延迟。
(3)频率同步
上文的传输延迟测量是基于从端口与主端口的时钟振荡频率一致的前提下得到的。现在我们考虑一下如果主从端口时钟振荡频率不一致的时候,会导致什么灵异事件发生。假设从端口的时钟振荡频率是25MHz,则一个时钟振荡周期是40ns。主端口的时钟振荡频率是100MHz,则一个时钟时钟振荡周期是10ns。
假设在一次传输延迟测量过程中,从端口在t6和t3时刻记录的振荡周期差值若为200个振荡周期。由于主端口的时钟频率是从端口的4倍,因此从端口收到t5和t4时刻的振荡周期差值大概800个。以从端口的40ns一个时钟振荡周期为基准进行计算的话,传输延迟则为-24μs([200x40-800x40]/2)。传输不仅没有延迟,反而提前知道了,从端口大仙无疑了。
除了主从端口时钟振荡频率的先天不一致,温度、老化等原因也会导致晶振振荡频率的不稳定。为了解决频率不同步的问题,gPTP通过频率同步来实现从端口对主端口的时钟振荡频率同步。
频率同步复用传输延迟测量过程的Pdelay_Resp和Pdelay_Resp_Follow_UP报文。通过采用两组答复,最终可以获得t5,t6,t9,t10的值,由下面公式可得主从端口的频率比。
主从端口频率同步的情况下,频率比等于1。如果大于1,说明主端口走得快,如果小于1,说明主端口走的慢。从端口根据频率比的值,调整自己的时基,从而获得正确的时间戳。
三、gPTP与PTP之间的差异
(1)传输延时测量方式
gPTP仅支持P2P的传输延时测量方式,PTP除了支持上文提到的P2P方法,还支持E2E(End-to-End)方法。在E2E方法中,测量的是网络中任意两个支持PTP设备之间的传输延迟,而在这两个设备之间允许存在普通交换机等可以透传PTP报文的设备。这导致P2P和E2E方式在如下方面存在差异。
(a)测量精度:P2P方法中,报文在桥接设备的驻留时间可以被测量,且会和传输延时时间一同发给后面链路上的设备,故测量精度可控且足够高。E2E方法中,报文在普通交换机的驻留时间具有随机性且不可测量,导致测量精度不可控且波动范围大。
(b)架构灵活性:P2P方法中,测量报文不跨设备传输,主时钟变化或新增从时钟,仅对物理上相邻的设备有影响,有利于网络拓展;E2E方法中,无论主时钟变化还是从时钟变化,都需要重新测量整个网络的传输延迟,且在网络比较复杂时,网络开销会比较大,因此网络拓展性较差。
(2)时间戳采样方式 gPTP只能工作在MAC子层,PTP除了可以工作在MAC子层,还可以工作在传输层。工作在传输层时,报文要经历协议栈缓存、操作系统调度等过程,这两个过程都会带来传输延时的增加且大小不可控。而工作在MAC子层时,离物理层只有一步之遥,既能减缓协议栈缓存带来延时的不确定性,又能缩短报文传输延时。
工作在MAC子层时,报文要么直接发给物理层要么从物理层收到,因此时间戳可以选择由物理层硬件打或由软件打。通过硬件的方式打,可以消除操作系统调度带来的延时不确定性。PTP工作在MAC子层时,既支持硬件打时间戳,也支持软件打时间戳。而gPTP从延时可控,延时减少的角度考虑,只允许打硬件时间戳。
(3)时钟类型
PTP时钟支持两种时钟类型,One-Step Clock和Two-Step Clock。在One-Step Clock中,事件报文发送时,同时将本身记录的时间戳发送给从端口,如下图左半部分所示。在Two-Step Clock中,事件报文不携带时间戳信息,需要一条专门的一般类型报文来给从端口发送时间戳,如下图右半部分所示。
One-Step Clock虽然可以比Two-Step Clock节省一条报文,但对硬件要求很高,且硬件成本高,不利于网络扩展和应用普及。在两者精度没有区别的前提下,Two-Step Clock类型显然是gPTP的更优选择,这也是gPTP协议里规定的类型。
随着自动驾驶量产落地的脚步越来越近,人们对四大模块算法的优化也将逐渐转移到架构级系统功能的优化,时间同步作为架构级系统功能的灵魂,必将首先得到重视,而随着TSN产业链上下游的成熟,PPS gPTP的精确时间同步方案,必将在自动驾驶的架构级功能占有一席之地。
下图列举了未来潜在的一种时间同步落地架构方案,如下图。GNSS作为时钟源,智驾域控制器作为主时钟,整车域控制器作为桥接设备,其它域控制器作为从时钟。