康谋技术 | 自动驾驶:揭秘高精度时间同步技术(一)
众所周知,在自动驾驶中,主要涵盖感知、规划、控制三个关键的技术层面。在感知层面,单一传感器采集外界信息,各有优劣,比如摄像头采集信息分辨率高,但是受外界条件影响较大,一般缺少深度信息;激光雷达有一个较大的感知范围和精度,但是分辨率上不如相机。因此,市面上普遍采用多传感器的方案进行车辆感知。而做传感器融合时,需要先进行运动补偿、时间同步和传感器标定。
要实现多传感器的时间同步,首先,我们需要选择一个统一的时钟源,为整个系统提供时间基准,通过”PPS+GPRMC”形式完成主设备授时。此外,在系统中包含多个不同类型的传感器,一般采用基于以太网的时间同步协议,实现主设备与传感器的高精度时间同步。这一整体流程确保了多传感器数据能在统一时间框架内准确分析处理。
一、时钟源
1、GNSS
在自动驾驶系统时间同步中,多数情况下会配备高精度GNSS车载接收机,如图1所示。GNSS接收机会解算导航卫星信号从而实现定位和授时功能。具体来说,解算获得导航卫星中高精度原子时钟与本系统时间的钟差,从而校准系统时间,完成GNSS的授时功能。

二、PPS+GPRMC
随后,GNSS接收机会发送PPS脉冲+GPRMC报文,信号如图2所示。

1、PPS
PPS(Pulse Per Second,秒脉冲):基于 UTC(协调世界时)产生时间周期为1s的同步脉冲信号,脉冲宽度通常在5ms-100ms之间。
2、GPRMC
GPRMC(Global Positioning System Recommended Minimum data,全球定位系统推荐最小数据集):是NMEA 0183报文之一,包含经纬度、日期(年、月、日)和UTC时间(精确到秒)等信息,通过标准串口进行输出。
3、时间同步原理
通过PPS+GPRMC进行时间同步原理如下:
- 当设备(比如域控制器、工控机)接收到PPS秒脉冲后,会将内部以晶振为时钟源的系统时间进行清零(毫秒及以下部分),并由此开始计算毫秒时间。
- 设备收到GPRMC数据后,提取报文中的UTC时间(时、分、秒、年、月、日)。
- 收到秒脉冲到解析出GPRMC中UTC时间所用时间为tx,tx时间与UTC整秒时间相加同步给设备系统,进而完成一次时间同步。
每秒钟会精确校准一次系统时间,以确保时间的准确性。
4、可操作性
在智能驾驶的方案中,一般都采用多传感器进行数据采集和存储。此时如果我们在域控制器与各类传感器之前都采用”PPS+GPRMC”,用两根线来连接这两个物理接口,技术上是可行的,但是实际上十分难以操作。
- PPS是低功率脉冲电平信号,一次性带十几个设备是十分困难的,并且容易出现信号干扰。
- GPRMC通过RS232串口发送同步报文,RS232是一种1对1的全双工通信形式,也可以通过主从形式实现1对几数据传输,但对十几,非常少见。
因此,基于单纯的PPS和GPRMC实现整个自动驾驶系统的时间同步,具有理论可行性,但并不具有实际可操作性。
三、高精度时间同步协议
1、PTP
PTP(Precision Time Protocol,精确时间协议)是一种IEEE 1588标准定义,用于在以太网中实现高精度的时间同步网络协议。它能够为网络中的所有设备提供一个统一的时间参考,从而确保数据的时效性和一致性。采用硬件时间戳,可以大幅减少软件处理时间,同步精度可以达到亚微秒级。此外,PTP可以运行在L2层(MAC层)和L4层(UDP层),在L2层网络运行时,可以在MAC层中直接进行报文解析,避免在UDP层处理,减少协议栈中驻留时间,进一步提高时间同步精度,十分适用于自动驾驶系统。
PTP网络由一个主时钟(Master Clock)和多个从时钟(Slave Clock)组成,。主时钟通常连接到一个高精度的时间源,如GPS,而从时钟则分布在网络中的各个设备上,如各类传感器。同时定义了三种时钟节点,包括普通时钟,边界时钟和透明时钟。
- 普通时钟(Ordinary Clock, OC):基本的从时钟,只有一个PTP通信端口,只同步时间。
- 边界时钟(Boundary Clock, BC):有多个PTP通信端口的时钟,可以接收一个时间信号并转发到另一个网络段,如交换机或路由器。
- 透明时钟(Transparent Clock, TC):通过它的报文不需要进行任何处理,直接转发。
2、时间同步过程
PTP通过在主从设备之间交互同步报文,并记录下报文发送时间,从而计算网络传输延迟和主从设备间时钟的偏差。同步报文包括:Sync、Follow_Up、Delay_Req和Delay_Resp,时间同步过程如下,如图3所示:

① 主时钟周期性的发送 Sync 报文 (预计时间) → 从时钟接收 Sync 报文 (时间 t2);
② 主时钟发送 Follow_Up 报文 (实际发送时间 t1) → 从时钟接收 Follow_Up 报文;
③ 从时钟发送 Delay_Req 报文 (发送时间 t3) → 主时钟接收 Delay_Req 报文 (接收时间 t4);
④ 主时钟发送 Delay_Resp 报文 (包含时间 t4) → 从时钟接收 Delay_Resp 报文;
⑤ 从时钟根据网络往返延时和时钟偏差的测量结果,调整其本地时钟。
值得注意的是,t1和t4时间由主时钟记录,t2和t3时间由从时钟记录。这样我们就可以计算网络延时和时间偏差。其中,网络延时是Sync报文和Delay_Resp报文在网络中往返传输的时间,D=[(t2-t1)+(t4-t3)]/2。时间偏差是从时钟与主时钟之间的时间差,Δ=(t2−t1)−D。
具体来说,从设备会根据网络延迟调整其接收到的同步报文的时间戳,以消除网络传输带来的延迟影响。同时,从设备还会根据时钟偏差的测量结果,调整其本地时钟的频率或相位,使其与主设备的时钟保持一致。
3、gPTP
此外,除了PTP时间同步协议,我们也会在自动驾驶领域时常看见gPTP(Generalized Precision Time Protocol)协议。gPTP和PTP都是基于IEEE标准的时间同步协议,其中PTP遵循IEEE 1588标准,而gPTP是IEEE 802.1AS标准。
PTP最初设计用于以太网,主要关注局域网(LAN)内的时间同步。而gPTP设计用于更广泛的网络环境,包括局域网和广域网(WAN),以及跨越不同网络技术的场景。gPTP在PTP的基础上增加了一些额外的功能和机制,以支持更广泛的网络环境和应用场景,比如边界时钟(Boundary Clock)的概念,用于处理网络中的复杂路径。但它们的最终目的都是为网络中的设备提供高精度的时间同步。
四、时间同步方案
1、康谋数据采集方案
针对智驾域控制器测试和数据采集,我们康谋带来了一整套的数据采集方案。基于BRICK/ATX4系列工控机和时间同步XTSS软件,如图4所示。

在时间同步方面,GNSS作为绝佳的时钟源,又可与智驾域控制器直接连接(或内置)。因此,可以采用智驾域控制器成为主时钟节点。方案架构如图5所示,配置BRICK/ATX4设备处于边界时钟节点,其他各类传感器通过车载以太网(PTP/gPTP)连接进行时间同步,对于相机,我们可以采用外触发方式在主控中记录此时系统时间或者通过转换器进行打时间戳进行记录。

总的来说,在BRICK/ATX4系列工控机中,集成了GNSS接收机,可以简便快捷的采集GPS信号,进行授时,获取精确的时间信息。配备了多个以太网接口,支持时间同步(PTP/gPTP)配置,与各类转换器一起,采集各种传感器的数据,满足自动驾驶各类场景下的数据采集任务。
通过XTSS软件可以进行灵活的时间同步配置,包括gPTP和PTP(UDP – P2P, UDP – E2E, 1588 Ethernet – E2E)。因此,通过XTSS软件可以在BRICK/AXT4工控机上(支持硬件时间戳的以太网接口)捕获精确的硬件时间戳。
五、应用案例
1、数采系统
通过BRICK/ATX4系列工控机和XTSS软件,我们可以方便快捷的搭载数采系统并配置时间同步服务。此次,我们联合友思特,搭载了以Blickfeld LiDAR+BRICK plus+XTSS软件的数采采集系统,如图6所示。

在搭载好整个系统后,就可以对XTSS软件配置PTP时间同步服务,以确保BRICKplus端口支持PTP同步,随后在LiDAR的GUI界面中配置同样的PTP,我们就可以完成激光雷达的时间同步配置。如图7所示,我们可以看到激光雷达时间同步配置服务成功,与主时钟的误差在us级别。

这里我们也附上了激光雷达与XTSS配置的视频,欢迎各位点击观看,了解更多详情。
激光雷达时间同步
如您对上述产品和解决方案感兴趣,
欢迎联系康谋自动驾驶团队了解更多信息。
我们将竭诚为您服务!
期待与您的交流!
康谋科技 - 您的一站式自动驾驶解决方案合作伙伴,助力自动驾驶商业化落地 - keymotek康谋科技有限公司是原虹科自动驾驶业务孵化出来的全新独立公司,专注于自动驾驶领域。我们以数据为驱动力,提供高性能的数据采集、记录、传输方案,针对各种驾驶场景进行精准的仿真模拟,以及对大量自动驾驶数据进行高效、高质量处理。我们的一站式服务能够满足自动驾驶领域研发测试的全流程需求,助力客户在自动驾驶领域取得更大突破。https://keymotek.com/
相关文章:

康谋技术 | 自动驾驶:揭秘高精度时间同步技术(一)
众所周知,在自动驾驶中,主要涵盖感知、规划、控制三个关键的技术层面。在感知层面,单一传感器采集外界信息,各有优劣,比如摄像头采集信息分辨率高,但是受外界条件影响较大,一般缺少深度信息&…...

客户端被攻击怎么办,为什么应用加速这么适合
随着科技的进步和互联网的普及,游戏行业也正在经历前所未有的变革。玩家们不再满足于传统的线下游戏,而是转向了线上游戏。然而,随着游戏的线上化,游戏安全问题也日益凸显。游戏受到攻击是游戏开发者永远的痛点,谈“D“…...
Introduction to HAL3
目录 HAL3 behavior Overview of HAL1 v.s HAL3 HAL3 behavior: HAL3 - detail: HAL3 operation and pipeline Framework Diagram Problem of current code Operation mode Full v.s limited Do: Don’t: Metadata Manual control – ISP control...

Vue02-搭建Vue的开发环境
一、Vue.js的安装 1-1、直接用 <script> 引入(CDN) 1、CDN的说明 2、Vue的版本说明 生产版本是开发版本的压缩。 3、Vue的引入 验证是否存在Vue函数: 4、搭建Vue的开发环境 ①、下载开发版本的Vue,并在代码中引入 ②、安…...
Python | 句子缩写
字符串大小的比较Unicode码值 类似于asc|| 码 小写字母从 a 到 z 对应的 Unicode 码值是从 97 到 122,而大写字母从 A 到 Z 对应的 Unicode 码值是从 65 到 90, 大小写字母之间的差值为32,所以可以通过数学运算将小写字符减去32后转换为大写字符。 字…...

STM32自己从零开始实操04:显示电路原理图
一、TFT-LCD 屏接口 1.1指路 以下是该部分的设计出来后的实物图,我觉得看到实物图可能更方便理解这部分的设计。 图1 实物图 这部分设计的是一个屏幕的接口,很简单。使用的屏幕是:2.8inch 16BIT Module MRB2801。 1.2数据手册 ࿰…...
数分—AB测试
一、介绍 AB测试是一种常用于比较两种或多种不同版本的产品、服务或策略效果的实验方法。在AB测试中,被比较的版本被标记为A组和B组,然后两组被随机分配给不同的用户群体或实验对象。接着,针对每个组收集数据,比如用户行为、转化…...

基于全志T507-H的Igh EtherCAT主站案例分享
基于全志T507-H的Linux-RT IgH EtherCAT主站演示 下文主要介绍基于全志T507-H(硬件平台:创龙科技TLT507-EVM评估板)案例,按照创龙科技提供的案例用户手册进行操作得出测试结果。 本次演示的开发环境: Windows开发环…...
刷题记录(20240605)
1.数组构造 题目描述 小红的数组构造小红希望你构造一个数组满足以下条件: 1.数组共有 n个元素,且所有元素两两不相等。 2.所有元素的最大公约数等于 k。 3.所有元素之和尽可能小。请你输出数组元素之和的最小值。 输入描述: 两个正整数 n 和 k。 输出描述ÿ…...
CUDA和OpenGL纹理texture结合
cuda和OpenGL纹理结合,并进行直方图计算 针对于单通道16位图像。结合方式在CUDA_equalizeHistogram_16函数中。 其他的为CUDA核函数。 #define HISTOGRAM_LENGTH 65536 // 2^16 表示16位深度定义直方图长度为65536,对应16位像素值的范围(0-65535)。 __global__ void com…...

市场凌乱,智能算法哪种效果好?
当我们在面对市场波动,个股震荡,无从下手的时候,不懂算法的朋友就只懂做t;懂算法的朋友这会儿就迷茫并不知道选择哪种智能算法交易?今天小编给大家整理一套性价比高的,适合个人投资者搞的算法交易ÿ…...

学会这14大招,30天涨粉两三千没问题!沈阳新媒体运营培训
很多小白在刚转入公司做新媒体时,基本都是从帮助公司运营账号开始的。但不同于个人号,一个企业本身是没有ip属性的,它的风格、调性等,都需要通过你的运营,让它变成一个活灵活现的、赋予独立个性人设的账号。 目前&…...
SQL数据库性能优化
1.查询尽量避免使用select * 1.1 增加磁盘开销:数据库本质上是将记录存储在磁盘上,查询操作就是一种进行磁盘IO的行为,我们查询的字段越多,读取的内容也就越多,对IO磁盘的开销也就会增大,特别是某些字段,如…...

eNSP学习——RIP路由协议基础配置
目录 主要命令 原理概述 实验内容 实验目的 实验拓扑 实验编址 实验步骤 1、基本配置 2、使用RIPv1搭建网络 开启 RIP调试功能 3、使用RIPv2搭建网络 RIPv1和RIPv2的不同 需要eNSP各种配置命令的点击链接自取:华为eNSP各种设备配置命令大全PD…...
备考系统架构设计师,看这篇就够了!(包括核心总结、真题、论文、模拟试题索引)
注:以下章节核心总结来自最新版课本:系统架构设计师教程(第2版): https://url35.ctfile.com/f/52515535-1268514286-ca9b3a?p6235 ( 访问密码: 6235, 电子版 pdf 文件大小: 168.9 M ,需要的话可自行下载,…...
stm32编译原理
STM32编译原理主要包括以下几个方面: (1)编译器选择:STM32可以使用多种编译器进行开发,如Keil、IAR、GCC等。不同的编译器有不同的特点和优缺点,需要根据具体需求进行选择。 (2)编…...
如何以JNI方式实现安卓APP控制GPIO?
本文档提供了在 Android 10 设备上通过应用程序(App)控制通用输入输出(GPIO)的详细指南。这涵盖了从创建 gpio驱动到App 配置 以及 SELinux 策略以允许特定访问的所有必要步骤。 1. 驱动实现 添加创建gpio控制驱动bsp\kernel\ke…...

计算机网络学习笔记——运输层(b站)
目录 一、 运输层概述 二、运输层端口号、复用与分用的概念 三、UDP和TCP的对比 四、TCP的流量控制 五、TCP的拥塞控制 六、TCP超时重传时间的选择 七、TCP可靠传输的实现 八、TCP报文段的首部格式 一、 运输层概述 物理层、数据链路层、网络层实现了主机到主机的通信…...
HBase数据库面试知识点:第二部分 - 核心技术(持续更新中)
目录 1. 分布式存储与HDFS 2. 面向列的存储 3. 数据版本控制 4. Region与RegionServer 5. 分布式协调服务(ZooKeeper) 1. 分布式存储与HDFS HBase利用Hadoop的HDFS作为其底层存储系统,确保数据的高可靠性和可扩展性。 数据块࿰…...

Spring 使用SSE(Server-Sent Events)学习
什么是SSE SSE 即服务器发送事件(Server-Sent Events),是一种服务器推送技术,允许服务器在客户端建立连接后,主动向客户端推送数据。 SSE 基于 HTTP 协议,使用简单,具有轻量级、实时性和断线重…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
爬虫基础学习day2
# 爬虫设计领域 工商:企查查、天眼查短视频:抖音、快手、西瓜 ---> 飞瓜电商:京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空:抓取所有航空公司价格 ---> 去哪儿自媒体:采集自媒体数据进…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
MySQL用户和授权
开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务: test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...

20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...

MySQL 知识小结(一)
一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库,分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷,但是文件存放起来数据比较冗余,用二进制能够更好管理咱们M…...