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

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

相关文章

Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码

《Java中Date、LocalDate、LocalDateTime、LocalTime、时间戳之间的相互转换代码》:本文主要介绍Java中日期时间转换的多种方法,包括将Date转换为LocalD... 目录一、Date转LocalDateTime二、Date转LocalDate三、LocalDateTim

Spring Boot项目中结合MyBatis实现MySQL的自动主从切换功能

《SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能》:本文主要介绍SpringBoot项目中结合MyBatis实现MySQL的自动主从切换功能,本文分步骤给大家介绍的... 目录原理解析1. mysql主从复制(Master-Slave Replication)2. 读写分离3.

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Feign Client超时时间设置不生效的解决方法

《FeignClient超时时间设置不生效的解决方法》这篇文章主要为大家详细介绍了FeignClient超时时间设置不生效的原因与解决方法,具有一定的的参考价值,希望对大家有一定的帮助... 在使用Feign Client时,可以通过两种方式来设置超时时间:1.针对整个Feign Client设置超时时间

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

SpringBoot3实现Gzip压缩优化的技术指南

《SpringBoot3实现Gzip压缩优化的技术指南》随着Web应用的用户量和数据量增加,网络带宽和页面加载速度逐渐成为瓶颈,为了减少数据传输量,提高用户体验,我们可以使用Gzip压缩HTTP响应,... 目录1、简述2、配置2.1 添加依赖2.2 配置 Gzip 压缩3、服务端应用4、前端应用4.1 N

揭秘Python Socket网络编程的7种硬核用法

《揭秘PythonSocket网络编程的7种硬核用法》Socket不仅能做聊天室,还能干一大堆硬核操作,这篇文章就带大家看看Python网络编程的7种超实用玩法,感兴趣的小伙伴可以跟随小编一起... 目录1.端口扫描器:探测开放端口2.简易 HTTP 服务器:10 秒搭个网页3.局域网游戏:多人联机对战4.

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4