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

2024-06-06 09:20

本文主要是介绍康谋技术 | 自动驾驶:揭秘高精度时间同步技术(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在自动驾驶中,对车辆外界环境进行感知需要用到很多传感器的数据(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.chinasem.cn/article/1035710

相关文章

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

canal实现mysql数据同步的详细过程

《canal实现mysql数据同步的详细过程》:本文主要介绍canal实现mysql数据同步的详细过程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的... 目录1、canal下载2、mysql同步用户创建和授权3、canal admin安装和启动4、canal

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis