草庐IT

【AI】PTP时钟同步在智能驾驶系统里的重要性

NTP校时服务器 2023-03-28 原文

【AI】PTP时钟同步在智能驾驶系统里的重要性

【AI】PTP时钟同步在智能驾驶系统里的重要性

京准电子科技官微——ahjzsz

一辆宣称具备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作为时钟源,智驾域控制器作为主时钟,整车域控制器作为桥接设备,其它域控制器作为从时钟。

 

 

有关【AI】PTP时钟同步在智能驾驶系统里的重要性的更多相关文章

  1. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  2. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  3. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  4. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  5. ruby - 在没有基准或时间的情况下用 Ruby 测量用户时间或系统时间 - 2

    因为我现在正在做一些时间测量,我想知道是否可以在不使用Benchmark类或命令行实用程序time的情况下测量用户时间或系统时间。使用Time类只显示挂钟时间,而不显示系统和用户时间,但是我正在寻找具有相同灵active的解决方案,例如time=TimeUtility.now#somecodeuser,system,real=TimeUtility.now-time原因是我有点不喜欢Benchmark,因为它不能只返回数字(编辑:我错了-它可以。请参阅下面的答案。)。当然,我可以解析输出,但感觉不对。*NIX系统的time实用程序也应该可以解决我的问题,但我想知道是否已经在Ruby中实

  6. ruby - 以毫秒为单位获取当前系统时间 - 2

    在Ruby中,以毫秒为单位获取自纪元(1970)以来的当前系统时间的正确方法是什么?我试过了Time.now.to_i,好像不是我想要的结果。我需要结果显示毫秒并且使用long类型,而不是float或double。 最佳答案 (Time.now.to_f*1000).to_iTime.now.to_f显示包含十进制数字的时间。要获得毫秒数,只需将时间乘以1000。 关于ruby-以毫秒为单位获取当前系统时间,我们在StackOverflow上找到一个类似的问题:

  7. ruby-on-rails - 如何构建复杂的 Rails 系统 - 2

    关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我们有以下(以及更多)系统,我们将数据从一个应用推送/拉取到另一个:托管CRM(InsideSales.com)Asterisk电话系统(内部)横幅广告系统(openx,我们托管)潜在客户生成系统(自行开发)电子商务商店(spree,我们托管)工作板(本土)一些工作网站抓取+入站工作提要电子邮件传送系统(如Mailchimp,自主开发)事件管理系统(如eventbrite,自主开发)仪表板系统(大量图表和

  8. ruby-on-rails - Rails 3,在RAILS_ROOT上方显示来自本地文件系统的jpg图片 - 2

    我正在尝试找出一种方法来显示来自不在RAILS_ROOT下(在RedHat或Ubuntu环境中)的已安装文件系统的图像。我不想使用符号链接(symboliclink),因为这个应用程序实际上是通过Tomcat部署的,而当我关闭Tomcat时,Tomcat会尝试跟随符号链接(symboliclink)并删除挂载中的所有图像。由于这些文件的数量和大小,将图像放在public/images下也不是一种选择。我查看了send_file,但它只会显示一张图片。我需要在一个格式良好的页面中显示6个请求的图像。由于膨胀,我宁愿不使用Base64编码,但我不知道如何将图像数据与呈现的页面一起传递下去。

  9. ruby - 我可以从 Ruby 中的系统调用中获得连续输出吗? - 2

    当您在Ruby脚本中使用系统调用时,您可以像这样获得该命令的输出:output=`ls`putsoutput这就是thisquestion是关于。但是有没有办法显示系统调用的连续输出?例如,如果您运行此安全复制命令,以通过SSH从服务器获取文件:scpuser@someserver:remoteFile/some/local/folder/...它显示随着下载进度的连续输出。但是这个:output=`scpuser@someserver:remoteFile/some/local/folder/`putsoutput...不捕获该输出。如何从我的Ruby脚本中显示正在进行的下载进度?

  10. u盘安装系统(win10为例) - 2

    下载微PE工具箱进入官网下载微PE工具箱-下载 安装好后,打开微PE工具箱客户端,选择安装PE到U盘 PE壁纸可选择自己喜欢的壁纸,勾选上包含DOS工具箱,个性化盘符图标 下载原版系统进入网站下载镜像NEXT,ITELLYOU如果没有账号,注册一下就好进入选择开始使用选择win10 这里我们选择消费者版,用迅雷把BT种子下载下来 下面的两个盘符,是PE工具箱安装进U盘后,分成的盘符,注意EFI的盘符,这里面不能删东西,也不能添东西,另一个盘符可以当做正常的U盘空间使用,我们现在需要把下载下来的景象文件复制到正常的U盘空间中去 这个时候我们的系统U盘就只做好了 安装系统我们将U盘插入电脑,开机,

随机推荐