自动驾驶系统系统时间同步方案设计

自动驾驶系统需要采用多激光雷达、多毫米波雷达、多摄像头等各类传感器,传感器从采集数据到处理到发送到域控制器内部,存在延时,且延时的时长不稳定。为了提高自动驾驶的传感器融合、决策规划和融合定位等性能,自动驾驶高级域控制器HPC与其关联的传感器均需要做时间同步,实际过程就是需要定义清楚传感器输入数据的时间戳信息(包括打时间戳的时刻及精度要求),同时也需要定义整体时间同步方案和同步精度要求。

1. 同步方案

激光雷达与GPS时间同步主要有三种方案,即PPS+GPRMC、PTP、gPTP

1.1. PPS+GPRMC

GNSS输出两条信息,一条是时间周期为1s的同步脉冲信号PPS,脉冲宽度5ms~100ms;一条是通过标准串口输出GPRMC标准的时间同步报文。

同步脉冲前沿时刻与GPRMC报文的发送在同一时刻,误差为ns级别,误差可以忽略。GPRMC是一条包含UTC时间(精确到秒),经纬度定位数据的标准格式报文。

PPS秒脉冲为物理电平输出,接收及处理PPS信号的时间在ns级别,依旧可以忽略。但GPRMC数据一般通过波特率9600的串口发送,发送、接收、处理时间tx在ms级别,是时间同步的关键。

以下是使用PPS+GPRMC进行时间同步的原理。

  • 设备收到PPS秒脉冲信号后,将内部以晶振为时钟源的系统时间里的毫秒及以下时间清零,并由此开始计算毫秒时间。
  • 当收到GPRMC数据后,提取报文里的时、分、秒、年、月、日UTC时间。
  • 将收到秒脉冲到解析出GPRMC中UTC时间所用的时间tx,与UTC整秒时间相加,同步给系统时间,至此已完成一次时间同步。下一秒再进行相同的过程,每秒准确校准一次。

聪明的人可能已经恍然大悟,激光雷达需要进行时间同步,就做两根线接上这两个物理接口就妥了,这种方式是可以的,也是很多厂商在用的方案,但是PPS+GPRMC存在如下问题。

  • PPS是一个低功率的脉冲电平信号,驱动电流少的只有0.5mA,多的也就20mA,带几个同步节点(激光雷达和其他需要时间同步的节点),十几个就很困难了。
  • PPS是无屏蔽的单线脉冲信号,十几根PPS线穿梭在车内,极易受到车内恶劣电磁环境的干扰,届时根本无法区分出是干扰脉冲还是同步脉冲。
  • GPRMC通过RS232串口发送同步报文,RS232是一种1对1的全双工通信形式,也可以通过主从形式实现1对几数据传输。但对十几,实属罕见,只能通过试验验证到底可不可行。但至少线束工程师是打死不愿答应的。
  • 当时钟源丢失的时候,所有需要时间同步的设备都一下子没有了主心骨,每个小弟都可以自立门户,没有二当家的及时站出来,主持大局。这对功能安全要求极高的自动驾驶系统来说,根本无法接受。

1.2. 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)。

  • 边界时钟节点拥有多个PTP端口,其中一个用来同步上游设备时间,其余端口用来向下游设备发送时间。当边界时钟节点的上游时间同步设备是GNSS接收机时,此时的边界时钟节点就是一个主时钟节点(最优时钟)。
  • 普通时钟节点只有一个PTP端口,用来同步上游时钟节点的时间。
  • 透明时钟,人如其名,具有多个PTP端口,收到什么时间,转发什么时间,不进行协议解析,内部不参与时间同步。PTP通过在主从设备之间交互同步报文,并记录下报文发送时间,从而计算网络传输延迟和主从设备间时钟的偏差。

PTP定义了四条同步报文:Sync、Follow_Up、Delay_Req、Delay_Resp,精确同步过程如下。

  • PTP主端口向从端口发送Sync报文,同步记录下Sync发送的时间t1。从端口收到Sync报文后,记录下收到的时间t2。
  • 紧接着主端口将t1时间放到Follow_Up报文发送给从端口,从端口收到此报文后就可以解析出t1,并由此得到第一个方程式:t1+网络延时+时钟偏差=t2。
  • 从端口向主端口发送Delay_Req报文,同步记录下Delay_Req发送的时间t3。主端口收到报文后,记录下收到的时间t4。
  • 紧接着主端口将t4时间放到Delay_Resp报文发送给从端口,从端口收到此报文后就可以解析出t4,并由此得到第一个方程式:t3+网络延时-时钟偏差=t4。两个未知数,两个方程组,应用初中数学知识可以解出:网络延时=[(t2-t1)+(t4-t1)]/2,时钟偏差=[(t2-t1)-(t4-t3)]/2。

1.3. gPTP

gPTP(generalized Precision Time Protocol,广义精确时间同步协议),基于PTP(IEEE 1588v2)协议进行了一系列优化,形成了更具有针对性的时间同步机制,可以实现μs级的同步精度。

gPTP定义有两种设备类型,Time-aware-end Station和Time-aware Bridge。每种设备都具有本地时钟,本地时钟都是通过晶振的振荡周期进行度量的,设备内部硬件计数器负责对振荡周期进行计数。设备中用来发布时间同步报文的网络端口称为主端口,用来接收时间同步报文的端口称为从端口。

  • Time-aware-end Station,既可以作为主时钟,也可以作为从时钟。
  • Time-aware Bridge,既可以作为主时钟,也可以作为桥接设备,类似交换机。桥接类设备在收到gPTP报文后,会请报文搓个澡,然后再送出去。而报文在桥接设备内搓澡消耗的时间,称为驻留时间。gPTP要求桥接设备必须具有测量驻留时间的能力。

下图展示了一个简单的gPTP系统,包含一个时钟源、1个主时钟,2个桥接设备,4个从时钟。主时钟是系统内的时间基准,一般具有更高精度的本地时钟,同时需要能够被高精度准时钟源(如卫星系统、原子钟等)授时。主时钟在系统内可以动态分配,也可以预先分配(对于车载固定拓扑应用场景,多采用预先分配的原则)。

gPTP中规定的主时钟动态分配机制为BMCA(Best Master Clock Algorithm,最佳主时钟选择算法)。系统上电唤醒之后,系统所有设备都可以通过发送一条报文来参与主时钟竞选,报文中含有各自设备的时钟信息。每一个参选设备都会比较自己的时钟信息和其它设备的时钟信息,并判断是否具有优势,如果不具有,则退出竞选,直到综合能力最强的武林盟主诞生。

要讲清楚时钟同步原理需要首先解释清楚两种时钟同步类型:数据时钟和管理时钟。

首先,整体上是组合惯导提供的UTC时间通过PPS+GPRMC给时间同步服务器授时。该时间同步服务器将相应的时间信息通过PTP协议和中央网关,给各类传感器数据采集主机授时。HPC则需要实现好内部SOC和MCU之间的时间同步过程。

HPC的SOC和MCU之间的数据面时间通过gPTP协议时间同步,其中SOC为主master;

HPC的SOC和MCU之间的管理面时间通过HPC私有协议进行同步,SOC为主Master,通过以太链路进行同步。

SOC和MCU同步过程中,管理时钟和数据时钟都会做同步,数据面用gPTP协议,在其时间同步精度要求250微妙内,管理时钟用私有协议,也通过以太网,精度是10ms。其内部的管理时间和数据面时间就需要对齐,HPC要保证数据时钟的连续性,不允许有异常跳变。因为异常跳变会引起很严重的数据误传和误解析。

每次域控制器冷启动时,域控制器会尝试与提供主时钟的节点持续进行一定时间(该时间可以根据实际情况按需标定)的通信以进行初始同步。如果同步成功,则数据时钟会采用当前管理时间,以同步获取到的绝对时间;对应的驱动程序可以随其启动,并调用对应的应用软件进行运算。如果同步不成功 ,域控制器会一直尝试同步。

2. 同步过程

PTP定义有两类报文,事件类型报文(包括Sync、Pdelay_Req、Pdelay_Resp三条)和一般类型报文(包括Follow_UP、Pdelay_Resp_Follow_UP二条)。gPTP定义设备工作在网络七层模型中的第二层数据链路层的MAC(Media Acess Control,媒介访问控制)子层。

当设备MAC层接收或发送事件类型报文时,会触发对硬件计数器进行采样,从而获得时钟振荡周期计数值,结合时钟振荡频率及基准时间,可获得此时的时间戳。而一般类型报文仅用来携带信息,不会触发内部硬件计数器的采样操作。

2.1. 时钟偏差测量

gPTP定义的五条报文中,Sync和Follow_UP为一组报文,周期发送,主要用来测量时钟偏差。Sync由主端口发送,在报文离开主端口MAC层时,触发主端口记录此时的时间戳t1。从端口MAC层收到Sync报文后会记录此时的时间戳t2。随后,主端口将t1值附到Follow_UP报文里发送给从端口。

如果没有网络传输延迟或延迟、可以忽略,则从端口将本地时钟值加上时钟偏差(t1-t2的值)就完成时间同步,也就没有后面的碎碎念了。但是对于μs级时间同步精度的gPTP来说,传输延迟显然无法视若不见。

2.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发送给从端口。至此,一次传输延迟测量过程已经结束。在假设路径传输延迟是对称的前提下,可由如下公式计算相邻设备间的传输延迟。

2.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,说明主端口走的慢。从端口根据频率比的值,调整自己的时基,从而获得正确的时间戳。

3. HPC与VDC的同步过程

整个同步分类主要包括中央域控制器与网关、各类传感器及执行器之间的同步。HPC的绝对时间通常通过中央网关CGW作为整车所有控制器提供统一时间源,将整体的同步时间戳输出给所有关联的控制器端(如车身域控制器PDC、整车域控制器VDC、座舱域控制器CSC等)。在下一代自动驾驶系统架构中,整车域控制器VDC不仅承担着控制整车执行器端运行的功能,还同时兼任着中央网关CGW的功能,承载着HPC与其他域控制器信息交互和协议转化的功能。

如下图表示了自动驾驶控制器HPC与其关联域控制器的连接关系。

前述讲到VDC可作为中央网关功能,因此以HPC为中心的控制器间同步过程着重在于HPC与VDC之间的同步过程。通过VDC的信息中转可以实现各域控制器之间的同步及通信功能。各控制器主要通过以太网直连,采用基于以太网gPTP协议。HPC与VDC的同步过程需要考虑与HPC直连的GNSS输入绝对时间为主时钟,该时间误差比较小(通常在10ms内)。考虑智驾大数据云端分析精度,及 gPTP协议精度通常要求在250微妙内,HPC和VDC定周期可采用其整数倍精度(如125毫秒)做同步。

4. HPC局域网络节点的同步过程

HPC局部网络节点同步过程是指其与传感器之间的同步过程。在自动驾驶私有内部网络均以域控制器为主节点Master,采用其相应的数据端时间做时间源。HPC通过局部内网单独给传感器(激光雷达、毫米波雷达、行车摄像头、环视摄像头和组合惯导等)提供统一时间源。过程中,分别通过以太网连接激光雷达、组合惯导(预留1PPS),同时通过CANFD/以太网连接毫米波雷达、超声波盒子PDC,通过GSML/LVDS连接摄像头(包含行车/环视摄像头)。该类不同的网络连接形式均作为从节点与网关做时间同步。

其中主要包含三大传感器如下:

4.1. 视觉传感器

以行车控制和泊车控制的摄像头进行区分。

行车摄像头主要包括前视摄像头、侧视摄像头、后视摄像头为代表,泊车摄像头主要指环视摄像头;采用集中式方案后的摄像头通常不再是一体机,而是简单的传感器而已,输入的是原始图像。

HPC和摄像头通过视频数据线缆如GSML或LVDS进行数据传输,HPC利用其数据时钟(即系统时间,非绝对时间)作为时间源,定时发送触发信号Trigger Signal给摄像头,摄像头基于实时触发信号调整曝光时刻。由于单相机内无法直接记录对应的时间戳,因此使用多相机同步触发的方式进行同步,并以记录域控内的触发信号的时刻作为图像的初始时间戳。

摄像头其成像中间(如下计算方式)时刻打时间戳,且时间精度要求在10ms内。

Tmidtime成像中间=Ttrigger(触发时刻)+1/2*Texposure(曝光时间);

如上公式中曝光时间是固定的。

由于触发时刻位于整帧图像的曝光末尾,为了提高时间戳的精度,需要对曝光时长进行补偿以获取中间行曝光结束点时刻,来代表整帧图像的曝光中间时刻;通常采用如下公式进行时间补偿。

Tcompensate(补偿时间)=每行长度×总行数/2

域控制器记录时刻包括如下5个时刻:摄像头成像中间时刻、图像进感知模块的时刻、图像感知结果进融合模块的时刻、感知融合结果发送时间、下游模块接收时刻。

4.2. 激光雷达

当前主要利用的是半固态激光雷达。

HPC和激光雷达通常也是基于以太网gPTP协议结合千兆以太网直连,HPC为主节点Master,激光雷达为从节点Slave。HPC同步时间源采用的是绝对时间(即系统时间)作为数据时钟,时间同步精度要求仍旧是250微妙内。HPC和激光雷达采用同步时间精度的整数倍周期(比如可以是125毫秒、也可以是250ms)做同步,激光雷达需要按照该同步过程实时更新时间。此外,激光雷达需要在发出每帧点云中每个点的时间作为传感器打时间戳的时刻要求(精度要求为1ms内)。

同样,域控制器需要基于激光雷达返回时间记录激光点云发送点时刻(即激光雷达在接收到反射信号时可以记录到每个点的时刻);输入域控制器时间戳(通常此时激光雷达已带有相应的时间信息,HPC则不用再打时间戳);激光感知模块时间戳(一般则由激光雷达供应商进行原始点云信息处理,如果是集中式方案则由HPC中的SOC负责进行前端点云感知,并由专有的SOC进行感知后端融合);感知结果带上时间戳发送给下游模块接收;且此时需要打上最后一个时间戳。域控制器的数据时钟针对激光点云感知而言主要用于感知算法设计(这类算法可以是车端,也可以是云端),而绝对时间主要涉及本地时间,主要用于数据记录和存储业务。

4.3. 毫米波雷达

主要指前毫米波雷达、角毫米波雷达。

通常前毫米波雷达单独对信息进行同步,而角毫米波雷达群本身会存在一个主雷达对其所有的信息进行进一步过程同步。通常以上一代自动驾驶来说,毫米波雷达输入数据通常采用的是目标级数据,而下一代域控制器采用集中式方案后,对于将3D毫米波雷达更新换代为4D毫米波雷达,即直接处理毫米波雷达点云的呼声越来越高。这个过程中,毫米波雷达不再具备计算单元,而是简单输入点云数据。但由于毫米波雷达的微波信号处理仍旧存在较高的难度,对于下一代自动驾驶系统来说,很多OEM仍旧采用目标级数据进行直连,时间同步精度通常要求叫激光雷达更加宽泛些,通常为1ms以内。点云毫米波雷达发出和收到回波的中间时刻作为标记打上时间戳,要求精度1ms内。

同时,HPC和毫米波雷达通过设定1-2秒的周期间隔进行同步,该时间段内毫米波雷达实时更新对应的时间。同样的,域控制器基于毫米波雷达返回时间支持记录包含以下五个时刻的时间戳:

回波反射点生成时间戳、回波输入至域控制器时间戳(当然对于目标级数据记录,其毫米波雷达已带时间戳信息,华为不再打时间戳);毫米波雷达输出的目标物信息是由原始反射点聚类过滤得到,为了获取更加精准的时间戳,通常需要获得原始反射点生成时刻的时间戳,如下图红色部分。

感知结果发送专门SOC/MCU并与其他传感器做大融合时间戳。同样的,域控制器的数据时间(或本地时间)用于算法设计运行,而绝对时间用于数据记录和存储业务。

HPC需要对智能camera和radar的报文需额外打上对应报文进入时刻的时间戳,对数据进感知模块时刻打时间戳,作为备份使用与毫米波雷达确认,尤其角雷达,通过时间同步信息才能确定角雷达是否可发出目标。

4.4. 组合惯导/独立惯导系统

下一代自动驾驶系统中,不同的OEM对于惯导使用的类型有所不同,通常根据其自研能力分为组合惯导和独立惯导两种类型。由于组合惯导内置卫惯组合算法,根据实际应用情况,这里我们只针对较为简单的组合惯导的直连进行说明。HPC作为主节点Master而组合惯导为从节点,通过100兆以太网与组合惯导直连。其中,以太网仍旧是基于gPTP协议进行的。HPC同步时间源仍旧采用数据时钟(即系统时间,非绝对时间)进行同步。要求时间同步精度要求:250微妙内,同步周期为同步精度要求的整数倍时间间隔(如1毫秒或125毫秒)。其间,组合惯导根据RTK和IMU信息基于最近一次IMU采样,打时间戳。其精度限制在1ms内。

此外,IMU的采样时刻、进入HPC时刻、进入后端融合模块这三个时刻均会被打上时间戳。

5. HPC外部网络节点的时间同步过程

除开内部网路节点时间同步外,对于下一代自动驾驶系统来说,其与相关联的执行器之间(如集成制动控制系统EPBi、电子转向系统EPS、动力控制系统VCU)均存在大量外部信息交互。参考阶段性集中控制方式,这类整车控制端口通常通过整车控制器VDC进行连接和同步控制。如前述,VDC实际亦可看成中央网关,除开对各类域控制器的信息转发外,其还承担着整个同步时间戳的定义和发送。因为对于整车系统,整个绝对时间是自动驾驶系统的域控制器HPC连接的GNSS/GPS所获得的。

关联系统通常是通过整车域控端口(VDC)进行单独的时间同步控制,因此HPC和ESP、EPS、VCU之间通常是不存在直接的主从节点这类型的时间同步关系,而是在执行指令过程中直接将各自时间戳发送给VDC控制器,在执行过程中进行时间对齐即可。

6. HPC安全冗余控制过程中的时间同步过程

对于整个自动驾驶系统来说,在时间同步过程中仍旧需要考虑相应的失效控制逻辑。考虑到其内所包含的AI芯片SOC和逻辑芯片MCU所承载的不同的功能。通常在两者出现故障的不同时刻会存在一定程度的功能降级。这类功能降级我们称之为局部功能降级。局部功能降级期间,若部分SOC失效时,MCU通过晶振维护时间和传感器做同步。期间,仍可接收Radar及其余SOC传递过来的摄像头目标数据信息,并保持输出时间戳的稳定。因此,可以说局部功能降级后系统在短时间内仍旧使用原时间戳做应对,MCU仍可保持原时间数据稳定(其时间同步过程可参照MCU中的管里面时钟进行),支持功能的运行。因为短时间内误差很小,所以该时间内不做时间同步风险也很小。

当然,如果整个HPC失效,则需要另外一个备份控制器(可以是另外一个低配版本的HPC,也可以是额外增加的智能摄像头Smart Camera)进行安全控制。此过程中,则需要重新建立该备份控制器与对应传感器之间的时间同步关系。

另外一种失效模式为供电失效引起的功能降级。这里需要说明,域控制器存在两种睡眠模式:深度睡眠和浅度睡眠。该睡眠模式主要与是否掐断整体供电有关。如果控制器处于深睡眠,则数据时钟直接使用上一次下电时存储的管理时钟,不再进行重新计时。如果控制器处于浅睡眠,则直接利用本次下电的管理时钟进行计时。相对于深度睡眠来说,浅睡眠同步的时钟结果更加准确。当然无论睡眠深浅,该时间段内控制器时钟始终是无效的,且各软件均无法正常运行。当然,由于整个浅睡眠转化到深睡眠的时间是可以自定义的(如12小时)。

7. 总结

本文详细的讲解了下一代自动驾驶系统的各个控制单元的时间同步原理,并对同步过程中的各个模块提出了精度要求,涉及局部网络节点同步、全局网络节点同步。其中,局部网络节点同步主要是针对自动驾驶系统内部的传感器与域控之间的同步关系。全局网络节点同步主要是针对自动驾驶系统与外部关联系统(如控制制动、转向、动力、车门、车灯、网关等)进行的时间同步关系。对于整体计算精度而言,局部网络节点同步是至关重要的,因为涉及的传感器单元比较多,需要各自针对自身实际情况打上对应的时间戳,并最终由域控进行总同步。全局网络节点同步则实际参照各分域控与HPC之间的信息交互简单的进行时间信息交换即可。这里需要注意的是,整体系统的绝对时间均来自于GNSS系统,通常可由HPC或CSC进行连接输入。

参考文献

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

下一代自动驾驶系统最全的系统时间同步方案设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值