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

在自动驾驶中,对车辆外界环境进行感知需要用到很多传感器的数据(Lidar,Camera,GPS/IMU),如果计算中心接收到的各传感器消息时间不统一,则会造成例如障碍物识别不准等问题。

为了对各类传感器进行高精度的时间同步,可以分为几部分内容:统一时钟源,硬件同步,软件同步。


目录

一、统一时钟源

二、时间戳误差

三、硬件同步

四、软件同步

作者介绍


一、统一时钟源

在构建自动驾驶的时间同步架构时,我们面临着一个核心问题:如何确保系统中各个传感器的时间基准一致?由于每个传感器可能拥有自己的内部时钟,而这些时钟之间可能存在微小的频率差异,即所谓的“钟漂”。这些差异随时间累积,会导致各传感器时间基准的不一致。

为了解决这一问题,引入了统一时钟源的概念。统一时钟源的作用是提供一个所有传感器都遵循的共同时间参考,如图1所示。

图1:统一时钟源

 统一时钟源有两种常见方式:一种是基于GPS的“PPS+NMEA”,另一种是基于以太网的IEEE 1588/802.1AS(PTP/gPTP)时钟同步协议。关于两种时钟源同步方式可查看上篇文章:自动驾驶:揭秘高精度时间同步技术(一)。 康谋技术 | 自动驾驶:揭秘高精度时间同步技术(一)-CSDN博客

二、时间戳误差

当传感器数据被标记上从GPS接受到的全局时间戳,时间戳通常来源于精确的时间同步协议(如UTC time·),这样以GPS为基准的时间戳,简化了同步过程,非常方便。每个传感器数据都有了全局一致的时间参考。

但同样也会面临一个问题,不同的传感器采样频率不一样,比如激光雷达(通常为10Hz)和相机(通常为25/30Hz)。导致在特定时间获取同步数据可能会有延迟,在动态环境中可能造成较大的误差。

比如图2中,三个传感器具有不同的采样频率,在T1时刻,传感器2有一个数据,此时,我们需要对应传感器1和3的数据是多少,就会进行查找。查找的方式就是找对应的传感器数据和传感器2时间差最近的数据包。如果查找的数据包时间和T1时刻传感器2数据包的差距较大,在加上车身和障碍物都在移动,这样误差会比较大。

图2:传感器时间戳

 为了缓解查找时间戳造成的误差现象,主要采用的方式有硬件同步和软件同步。

三、硬件同步

硬件同步是一种通过物理信号来确保不同传感器数据采集时间一致性的方法。自动驾驶上使用的相机(Rolling Shutter)一般是支持外部触发曝光的。激光雷达通常支持两种时间同步接口,基于PTP时间同步和PPS+NMEA协议。因此,一种常见的硬件同步方法是使用PPS信号作为触发器。PPS信号是一个精确的时钟信号,可以触发传感器在特定的时间点采集数据。

例如,激光雷达和相机可以配置为在PPS信号的上升沿采集数据,从而确保两者的数据采集是同步的。具体来说,激光雷达可以利用其相位锁定功能来实现与PPS信号的同步,如图3所示。通过设置激光雷达的相位锁定角度与相机视野的中心对齐,可以在激光雷达的激光束旋转到特定角度时触发相机,实现两者的同步采集。

图3:激光雷达与相机时间同步触发

 当然,由于激光雷达是连续旋转采集数据,而相机则是瞬间曝光,所以硬件同步只能近似实现。例如,激光雷达的帧率若是10Hz,那么一帧点云中最早和最晚采集的点之间的时间差可能达到100ms。相机由于曝光是瞬时的,其所有像素点的采集时刻是一致的。因此,对于相机视野中心的点云,采集时间与图像采集时间一致,但对于视野边缘的点云,存在一定的时间偏差,这个偏差可能在5ms到20ms之间。

四、软件同步

软件同步是一种在数据处理阶段对传感器数据进行时间校正的方法。当硬件同步无法实现或不足以满足系统要求时,软件同步提供了一种解决方案,利用已知的时间标签和传感器的运动信息来推算传感器数据的准确时间点。

内插外推法是软件同步中常用的一种算法。通过以下步骤实现同步:

  • 时间差计算:首先,计算两个传感器数据帧之间的时间差。例如,如果有一个激光雷达(Lidar)数据帧和一个相机数据帧,它们的时间标签可能不同,我们需要找出这两个时间标签之间的差异;
  • 运动信息获取:收集传感器在两个时间标签期间的运动信息,这通常包括速度、加速度和旋转等;
  • 位置推算:利用传感器的运动信息和时间差,通过物理模型或机器学习模型推算目标在两个时间点之间的位置变化;
  • 建立新帧:根据推算出的目标位置,创建一个新的数据帧,这个新帧代表了两个原始数据帧之间的某个时间点的状态。

软件同步通过智能的数据处理技术弥补了硬件同步的不足,提高了传感器数据的同步精度,当然,它也需要额外的计算和实时性要求,需要精心设计和优化算法来实现高效准确的同步。


作者介绍

郑工

康谋高级自动驾驶技术研发工程师,拥有超过5年的汽车电子和自动驾驶数据分析经验,专精于高精度传感器数据的获取、整合与优化。在数据采集技术方面造诣深厚,尤其在车载网络和实时数采系统上富有实践成果,设计并优化了多种数据采集与传输方案。曾多次代表公司参加海外技术研讨会和培训项目,深入了解国际自动驾驶行业的最新动态和技术趋势,积累了丰富的国际视野。


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

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

我们将竭诚为您服务!

期待与您的交流!

康谋QX550车载时间同步板卡 - 多接口高速传输 | 高精度时间同步 | 高效同步不同时间源 | 无缝集成各操作系统康谋QX550是基于PCIe的时间同步板卡,配备四个10GBASE-T接口,基于双Intel X550AT2以太网控制器,支持多接口高速数据传输。QX550支持PTP和gPTP时间同步协议,同步精度最高可达100纳秒。此外,QX550能够与外部时间源或内部设备进行精确同步,增强网络时间同步的可靠性和灵活性。icon-default.png?t=N7T8https://keymotek.com/timesync-card_qx550/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/346026.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

consul做配置中心

1. 分布式配置中心 consul不仅可做注册中心,还可做配置中心 applicaiton.yml与bootstrap.yml: applicaiton.yml是用户级的资源配置项bootstrap.yml是系统级的,优先级更加高 Spring Cloud会创建一个“Bootstrap Context”,作为Spring应用…

ReactRouter——路由配置、路由跳转、带参跳转、新route配置项

目录 写在前面 (一)初步使用router 1.安装react-router-dom 2.创建router结构 3.嵌套路由 4.配置not found页面 (1)确切路由报错页面 (2)未配置路由报错页面 5.重定向 (二)路由跳转 1.组件跳转 2.NavLink 3.js跳转 (三)传递参数 1.searchParams(query)参数 2…

kafka集成SpringBoot api编写教程

1.新建项目 用的idea是20222.1.3版本,没有Spring Initializr 插件,不能直接创建springboot项目 可以在以下网址创建项目,下载后解压,然后用idea打开项目即可 1.1 在 https://start.spring.io/ 上创建项目 1.2上传到linux&#x…

10.2 Go Channel

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」…

Letcode-Top 100二叉树专题

94. 二叉树的中序遍历 方法一:递归法 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, TreeN…

【python】在【机器学习】与【数据挖掘】中的应用:从基础到【AI大模型】

目录 💗一、Python在数据挖掘中的应用💕 💖1.1 数据预处理💞 💖1.2 特征工程💕 💗二、Python在机器学习中的应用💕 💖2.1 监督学习💞 💖2.2…

第1章Hello world 3/5:Cargo.lock:确保构建稳定可靠:运行第一个程序

讲动人的故事,写懂人的代码 1.6 Cargo.lock:确保构建稳定可靠 “看!”席双嘉一边指着屏幕一边说,“终端窗口提示符的颜色,从绿变黄了。这就意味着代码在上次提交后有点变化。” 赵可菲:“但是我们只是运行了程序,代码应该没动呀。” 席双嘉敲了下git status -uall,这…

计网总结☞网络层

.................................................. 思维导图 ........................................................... 【Wan口和Lan口】 WAN口(Wide Area Network port): 1)用于连接外部网络,如互联…

SpringBoot学习笔记

总体思路:先写dao,再写service 1.https://start.spring.io 生成对应的模板 2.写TestCotroller类,类上写RestCotroller注解 3.TestCotroller类里写方法,方法上写GetMapping("/方法名")注解 4.不一定要写GetMapping,具体看做什么操…

MySQL从入门到高级 --- 15.优化 16.pymysql

文章目录 第十五章 && 第十六章:15.优化15.1 查询SQL执行效率15.2 定位低效率执行SQL15.3 explain分析执行计划 - 基本使用15.4 explain分析执行计划 - id15.5 explain分析执行计划 - select_type15.6 explain分析执行计划 - type15.7 explain分析执行计划 …

MySQL高性能(MySQL锁)

MySQL性能系列 MySQL锁 前言1. 死锁机制2. 思维导图与锁划分介绍3. 粒度划分锁3.1. 全局锁3.2. 页级锁(Page-level locking)3.3. 表级锁(Tables-level lock)○ 共享锁(表级)○ 排他锁(表级&…

字节面试:CPU100% 如何处理?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的线上问题的场景题: 1.CPU100%,你是怎么处理的&…

jvm学习笔记(二) ----- 垃圾回收

GC 一、判定对象是否是垃圾1.引用计数法2.可达性分析算法 二、垃圾回收算法1.标记清除2.标记整理3. 复制4. 分代垃圾回收1.尝试在伊甸园分配2.大对象直接晋升至老年代3.多次存活的对象4.老年代连续空间不足,触发 Full GC 链接: jvm学习笔记(一) ----- JAVA 内存 链接…

C++程序设计:对数据文件的操作与文件流

姚老师小课堂开课啦! 一、文件的分类: 1.ASCII码文件: ASCII文件使用方便,比较直观,便于阅读,便于对字符进行输入输出,但一般占用存储空间较多,而且需要花费转换时间(二…

④-2单细胞学习-cellchat单数据代码补充版(通讯网络)

目录 通讯网络系统分析 ①社会网络分析 1,计算每个细胞群的网络中心性指标 2,识别细胞的信号流模式 ②非负矩阵分解(NMF)识别细胞的通讯模式 1,信号输出细胞的模式识别 2,信号输入细胞的模式识别 信…

激光点云配准算法——Cofinet / GeoTransforme / MAC

激光点云配准算法——Cofinet / GeoTransformer / MAC GeoTransformer MAC是当前最SOTA的点云匹配算法,在之前我用总结过视觉特征匹配的相关算法 视觉SLAM总结——SuperPoint / SuperGlue 本篇博客对Cofinet、GeoTransformer、MAC三篇论文进行简单总结 1. Cofine…

计算机网络 期末复习(谢希仁版本)第8章

元文件就是一种非常小的文件,它描述或指明其他文件的一些重要信息。这里的元文件保存了有关这个音频/视频文件的信息。 10. 流式:TCP;流式实况:UDP。

10秒钟docker 安装Acunetix

1、拉取镜像: 2、查看镜像: [rootdns-server ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/hiepnv/acunetix latest f8415551b8f4 2 months ago 1.98GB 3、运行镜像: …

Redis 单线程问题 BigKey问题

前言 简单的redis基础类型以及常用操作我们都也已经介绍过了 现在今天我们来谈谈redis对于单线程是需要怎么理解的 以及redis假设遇见大key我们需要怎么去查询和删除呢??? redis单线程 假设有个人现在问你一个问题:redis是单线程的还是多线程的 这个问题本身就不严谨 就像问…

Python通过数据验证功能在Excel文件中创建下拉列表

Excel表格的灵活性和功能性深受各行各业人士的喜爱。在Excel表格中,下拉列表功能是提升数据录入效率与准确性的一个重要利器,能够为用户提供预设的选择项,限制输入范围,避免手动输入错误,还能够简化数据录入过程&#…