智能驾驶数据网络时间同步(PTP时钟服务器)分析
随着汽车电子的日益复杂化以及汽车电子电气架构(EEA)的升级,人们对于联网智能汽车的需求也在逐步上升,大量先进技术往汽车上应用,如高级驾驶辅助系统(ADAS)、自动驾驶等,这些新技术也对车载网络的带宽有了更高的要求。从而使用以太网技术及中央域控制(Domain)和区域控制(Zonal)架构是下一代车载网络的发展方向。
然而对于自动驾驶技术的实现,涉及到感知、规划、执行三个层面。由于车辆行驶在未知动态环境中,需要事先构建出环境地图并在地图中进行自我定位,这其中涉及到各传感器数据的精确时间同步。然后根据传感器捕获的原始数据和已有环境场景,规划车辆从一个位置到另一个位置的路径。最后控制系统发出信号控制车上的电机或者液压执行器执行相应的动作。
一、传感器数据同步原理
通过设置唯一的时钟主机给各类传感器提供相同的基准时间。但是由于各传感器设备时钟晶振及数据传输路径不同,需要根据提供的基准时间校准各自的时钟时间,实现时间同步。最后根据校准后的时间为采集数据加上时间戳信息,这样就可以保证同一时刻采集相同的环境信息。

图1:传感器时钟同步原理
那么,怎么解决各传感器设备由于时钟晶振及数据传输路径等不同,怎么根据基准时间校准自己的时间?可以使用PTP/gPTP协议解决各传感器设备时间同步的问题!
二、PTP/gPTP时钟同步协议介绍
PTP/gPTP时钟同步协议是基于数据包的时间同步协议。数据传输和时间同步使用同一网络,它描述了如何在基于数据包网络(比如以太网)上分配同步时间(相位、频率和绝对时间)的机制。时钟精度达到亚微秒级。
三、相关名词及概念
▼时钟节点
构成时间域的各节点称为时钟节点。比如自动驾驶数采套件上的各类传感器。协议定义以下三类:

表1:时钟节点类型

图2:边界时钟与透明时钟区别
▼时钟节点端口

表2:端口状态
▼报文类型

表3:报文类型
▼传输延迟机制
协议中定义了两种机制用来测量时间节点端口之间的传输延迟。

表4:传输延迟机制
P2P机制优化了E2E在实际情况存在网络不对称造成的误差。那是不是我们就尽量P2P机制呢?显然不是!P2P机制要求交换节点都能支持TC或BC模式,否则无法识别和响应Pdelay报文,系统内存在大量普通交换机,采用E2E是更好的选择。
四、时钟同步原理及传输延迟机制区
▼时钟同步原理
协议的正常执行分为两个步骤:
- 建立主从层次;
所有普通时钟端口通过Announce报文和最佳主时钟(BMCA)算法来建立主从同步层次,处于从状态与处于主状态的端口进行同步。在域中,每个端口检查该端口上接收的所有“Announce”消息的内容,与普通时钟或边界时钟相关端口数据集的内容相比较,以确定时钟的每个端口的状态。
- 同步时钟。
时差修正,延迟补偿。需同步设备时间(T2) = 基准时间(T1)+链路延迟(Delay)+时钟偏差(Offset)。

图3:延迟请求响应机制
延迟请求响应机制步骤:
- 主节点向从节点发送Sync消息,并记录发送时间t1;
- 从节点收到该报文后,记录接收时间t2;
- 主节点通过以下方式将时间戳t1传递给从节点;
▶ One-step方式:时间戳t1嵌入到Sync消息中,对硬件处理能力要求较高,快速往Sync报文嵌入时间标签,以实现高准确性和精度。
▶ Two-step方式:将时间戳t1嵌入到Follow_Up中。
- 从节点向主节点发送Delay_Req报文,用于发起反向传输延时的计算,并记录发送时间t3;
- 主节点收到Delay_Req报文之后,记录接收时间t4;
- 主节点将t4嵌入到Delay_Resp消息中,从而传递给从节点。
- 此时,从节点便拥有了t1~t4这四个时间戳,假设网络对称,由此可计算出从节点相对于主节点的时钟延迟:Delay=(t4-t3+t2-t1)/2,时钟偏差:Offset=(t2-t4+t3-t1)/2。

图4:对等延迟机制
对等延迟机制步骤:
- 链路延迟测量从端口A开始,发出Pdelay_Req消息并为Pdelay_Req消息生成时间戳t1;
- 端口B接收Pdelay_Req消息,并为该消息生成时间戳t2;
- 端口B返回一个Pdelay_Resp消息,并为该消息生成一个时间戳t3;
- 为了最小化两个端口之间的频率偏移所造成的错误,端口B在收到Pdelay_Req消息后尽快返回Pdelay_Resp消息;
▶ One-step方式:Pdelay_Resp嵌入的t2和t3时间戳之间的差值;
▶ Two-step方式:Pdelay_Resp嵌入的t2时间标签,dealy_Resp_Follow_Up嵌入t3时间标签。
- 端口A生成接收Pdelay_Resp消息的时间戳t4。端口A然后使用这四个时间戳来计算平均链接延迟。Delay = [(t2–t1)+(t4–t3)]/2,时钟偏差:Offset=(t2-t4+t3-t1)/2。
▼E2E与P2P区别
E2E机制只能从节点往主节点这个方向计算延迟,而P2P机制可以主从节点两端计算延迟。如图5所示。

图5:E2E和P2P在边界时钟区别
E2E机制报文能全部被TC转发,而P2P机制独有的报文不能被转发。P2P机制下TC能把停留时间和沿路径的链路延迟之和将报告给从站。E2E机制下TC能把沿路径的停留时间总和将报告给从站。如图6所示。

图6:E2E和P2P在透明时钟区别
五、应用案例—ADAS数据采集解决方案
东信在构建精确时间同步系统方面具有丰富的经验,能够根据高清摄像头、毫米波雷达、激光雷达等各类传感器的特性,构建多种类型数据的处理分析系统,并实现数据的精确时间同步。

图7:系统示例
OK,今天的分享交流就到这里啦,若您还想了解更能多相关内容,欢迎给我们评论留言~
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 解决跨域问题的这6种方案,真香!
· 5. Nginx 负载均衡配置案例(附有详细截图说明++)
· Windows 提权-UAC 绕过