当前位置: 首页 > news >正文

康谋技术 | 自动驾驶:揭秘高精度时间同步技术(一)

众所周知,在自动驾驶中,主要涵盖感知、规划、控制三个关键的技术层面。在感知层面,单一传感器采集外界信息,各有优劣,比如摄像头采集信息分辨率高,但是受外界条件影响较大,一般缺少深度信息;激光雷达有一个较大的感知范围和精度,但是分辨率上不如相机。因此,市面上普遍采用多传感器的方案进行车辆感知。而做传感器融合时,需要先进行运动补偿、时间同步和传感器标定。

要实现多传感器的时间同步,首先,我们需要选择一个统一的时钟源,为整个系统提供时间基准,通过”PPS+GPRMC”形式完成主设备授时。此外,在系统中包含多个不同类型的传感器,一般采用基于以太网的时间同步协议,实现主设备与传感器的高精度时间同步。这一整体流程确保了多传感器数据能在统一时间框架内准确分析处理。

一、时钟源

1、GNSS

在自动驾驶系统时间同步中,多数情况下会配备高精度GNSS车载接收机,如图1所示。GNSS接收机会解算导航卫星信号从而实现定位和授时功能。具体来说,解算获得导航卫星中高精度原子时钟与本系统时间的钟差,从而校准系统时间,完成GNSS的授时功能。

图1:GNSS接收机

二、PPS+GPRMC

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

图2:PPS与GPRMC

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所示:

图3:PTP时间同步过程

① 主时钟周期性的发送 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所示。

图4:BRICK/AXT4工控机与XTSS软件

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

图5:数采方案时间同步架构

总的来说,在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所示。

图6:数采系统

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

图7:时间同步配置

这里我们也附上了激光雷达与XTSS配置的视频,欢迎各位点击观看,了解更多详情。   

激光雷达时间同步


如您对上述产品和解决方案感兴趣,

欢迎联系康谋自动驾驶团队了解更多信息。

我们将竭诚为您服务!

期待与您的交流!

康谋科技 - 您的一站式自动驾驶解决方案合作伙伴,助力自动驾驶商业化落地 - keymotek康谋科技有限公司是原虹科自动驾驶业务孵化出来的全新独立公司,专注于自动驾驶领域。我们以数据为驱动力,提供高性能的数据采集、记录、传输方案,针对各种驾驶场景进行精准的仿真模拟,以及对大量自动驾驶数据进行高效、高质量处理。我们的一站式服务能够满足自动驾驶领域研发测试的全流程需求,助力客户在自动驾驶领域取得更大突破。icon-default.png?t=N7T8https://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> 引入&#xff08;CDN&#xff09; 1、CDN的说明 2、Vue的版本说明 生产版本是开发版本的压缩。 3、Vue的引入 验证是否存在Vue函数&#xff1a; 4、搭建Vue的开发环境 ①、下载开发版本的Vue&#xff0c;并在代码中引入 ②、安…...

Python | 句子缩写

字符串大小的比较Unicode码值 类似于asc|| 码 小写字母从 a 到 z 对应的 Unicode 码值是从 97 到 122&#xff0c;而大写字母从 A 到 Z 对应的 Unicode 码值是从 65 到 90, 大小写字母之间的差值为32&#xff0c;所以可以通过数学运算将小写字符减去32后转换为大写字符。 字…...

STM32自己从零开始实操04:显示电路原理图

一、TFT-LCD 屏接口 1.1指路 以下是该部分的设计出来后的实物图&#xff0c;我觉得看到实物图可能更方便理解这部分的设计。 图1 实物图 这部分设计的是一个屏幕的接口&#xff0c;很简单。使用的屏幕是&#xff1a;2.8inch 16BIT Module MRB2801。 1.2数据手册 &#xff0…...

数分—AB测试

一、介绍 AB测试是一种常用于比较两种或多种不同版本的产品、服务或策略效果的实验方法。在AB测试中&#xff0c;被比较的版本被标记为A组和B组&#xff0c;然后两组被随机分配给不同的用户群体或实验对象。接着&#xff0c;针对每个组收集数据&#xff0c;比如用户行为、转化…...

基于全志T507-H的Igh EtherCAT主站案例分享

基于全志T507-H的Linux-RT IgH EtherCAT主站演示 下文主要介绍基于全志T507-H&#xff08;硬件平台&#xff1a;创龙科技TLT507-EVM评估板&#xff09;案例&#xff0c;按照创龙科技提供的案例用户手册进行操作得出测试结果。 本次演示的开发环境&#xff1a; Windows开发环…...

刷题记录(20240605)

1.数组构造 题目描述 小红的数组构造小红希望你构造一个数组满足以下条件: 1.数组共有 n个元素&#xff0c;且所有元素两两不相等。 2.所有元素的最大公约数等于 k。 3.所有元素之和尽可能小。请你输出数组元素之和的最小值。 输入描述: 两个正整数 n 和 k。 输出描述&#xff…...

CUDA和OpenGL纹理texture结合

cuda和OpenGL纹理结合,并进行直方图计算 针对于单通道16位图像。结合方式在CUDA_equalizeHistogram_16函数中。 其他的为CUDA核函数。 #define HISTOGRAM_LENGTH 65536 // 2^16 表示16位深度定义直方图长度为65536,对应16位像素值的范围(0-65535)。 __global__ void com…...

市场凌乱,智能算法哪种效果好?

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

学会这14大招,30天涨粉两三千没问题!沈阳新媒体运营培训

很多小白在刚转入公司做新媒体时&#xff0c;基本都是从帮助公司运营账号开始的。但不同于个人号&#xff0c;一个企业本身是没有ip属性的&#xff0c;它的风格、调性等&#xff0c;都需要通过你的运营&#xff0c;让它变成一个活灵活现的、赋予独立个性人设的账号。 目前&…...

SQL数据库性能优化

1.查询尽量避免使用select * 1.1 增加磁盘开销&#xff1a;数据库本质上是将记录存储在磁盘上&#xff0c;查询操作就是一种进行磁盘IO的行为,我们查询的字段越多&#xff0c;读取的内容也就越多&#xff0c;对IO磁盘的开销也就会增大&#xff0c;特别是某些字段&#xff0c;如…...

eNSP学习——RIP路由协议基础配置

目录 主要命令 原理概述 实验内容 实验目的 实验拓扑 实验编址 实验步骤 1、基本配置 2、使用RIPv1搭建网络 开启 RIP调试功能 3、使用RIPv2搭建网络 RIPv1和RIPv2的不同 需要eNSP各种配置命令的点击链接自取&#xff1a;华为&#xff45;NSP各种设备配置命令大全PD…...

备考系统架构设计师,看这篇就够了!(包括核心总结、真题、论文、模拟试题索引)

注&#xff1a;以下章节核心总结来自最新版课本&#xff1a;系统架构设计师教程&#xff08;第2版&#xff09;: https://url35.ctfile.com/f/52515535-1268514286-ca9b3a?p6235 ( 访问密码: 6235, 电子版 pdf 文件大小: 168.9 M &#xff0c;需要的话可自行下载&#xff0c;…...

stm32编译原理

STM32编译原理主要包括以下几个方面&#xff1a; &#xff08;1&#xff09;编译器选择&#xff1a;STM32可以使用多种编译器进行开发&#xff0c;如Keil、IAR、GCC等。不同的编译器有不同的特点和优缺点&#xff0c;需要根据具体需求进行选择。 &#xff08;2&#xff09;编…...

如何以JNI方式实现安卓APP控制GPIO?

本文档提供了在 Android 10 设备上通过应用程序&#xff08;App&#xff09;控制通用输入输出&#xff08;GPIO&#xff09;的详细指南。这涵盖了从创建 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. 分布式协调服务&#xff08;ZooKeeper&#xff09; 1. 分布式存储与HDFS HBase利用Hadoop的HDFS作为其底层存储系统&#xff0c;确保数据的高可靠性和可扩展性。 数据块&#xff0…...

Spring 使用SSE(Server-Sent Events)学习

什么是SSE SSE 即服务器发送事件&#xff08;Server-Sent Events&#xff09;&#xff0c;是一种服务器推送技术&#xff0c;允许服务器在客户端建立连接后&#xff0c;主动向客户端推送数据。 SSE 基于 HTTP 协议&#xff0c;使用简单&#xff0c;具有轻量级、实时性和断线重…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

使用分级同态加密防御梯度泄漏

抽象 联邦学习 &#xff08;FL&#xff09; 支持跨分布式客户端进行协作模型训练&#xff0c;而无需共享原始数据&#xff0c;这使其成为在互联和自动驾驶汽车 &#xff08;CAV&#xff09; 等领域保护隐私的机器学习的一种很有前途的方法。然而&#xff0c;最近的研究表明&…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...

python执行测试用例,allure报乱码且未成功生成报告

allure执行测试用例时显示乱码&#xff1a;‘allure’ &#xfffd;&#xfffd;&#xfffd;&#xfffd;&#xfffd;ڲ&#xfffd;&#xfffd;&#xfffd;&#xfffd;ⲿ&#xfffd;&#xfffd;&#xfffd;Ҳ&#xfffd;&#xfffd;&#xfffd;ǿ&#xfffd;&am…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

Windows 下端口占用排查与释放全攻略

Windows 下端口占用排查与释放全攻略​ 在开发和运维过程中&#xff0c;经常会遇到端口被占用的问题&#xff08;如 8080、3306 等常用端口&#xff09;。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口&#xff0c;帮助你高效解决此类问题。​ 一、准…...

字符串哈希+KMP

P10468 兔子与兔子 #include<bits/stdc.h> using namespace std; typedef unsigned long long ull; const int N 1000010; ull a[N], pw[N]; int n; ull gethash(int l, int r){return a[r] - a[l - 1] * pw[r - l 1]; } signed main(){ios::sync_with_stdio(false), …...