多传感器时间同步

简介: 多传感器时间同步

时间同步

 第一次谈及时间同步,可能会有点懵逼。其实这在我们生活中是很常见的,小时候应该都用过那种电子手表,这种电子手表往往隔一段时间就会不准确,需要手动进行校准。这种手动校准的过程就可以认为是时间同步。想想看,若是没有时间同步,那可真是乱了套了,想要在家看个世界杯,都不能及时的和别人分享进球的喜悦,这这这…是不是也太难受了…

 好了,下面就重点来说说多传感器的时间同步。多传感器数据的时间同步是多传感器信息融合的必备条件之一。实际上,由于各个传感器独立封装并按照自己的时钟基准运行,往往采样频率也不尽不同,这些将导致种采样数据时间上不同步。针对这一问题有硬同步和软同步两种解决方案。硬件同步是指定制传感器,使得多个传感器能在同一时刻触发采样,例如多个传感器安装于同一个晶振下工作。软件同步是指通过统一的主机给各个传感器提供基准时间,使得传感器每帧数据同步到统一的时间戳上。

1.1 软同步

 

  软件同步的方法主要就是利用时间戳进行不同传感器的匹配。通常是将各传感器数据统一到扫描周期较长(频率较小)的传感器数据上。拿某4线激光雷达(采样频率约12.5Hz)和某相机(采样频率约30Hz)来说明,显然记过雷达的周期大,则以激光雷达的采样频率为基准进行匹配,如下图所示:a2542b564612403caf35cb2dd3b3cdba.png

图中绿色虚线框表示激光雷达采集频率,蓝色虚线框表示相机采集频率,横轴表示统一的时间戳。传感器的每个采样时刻记录在统一的时间序列上。当激光雷达完成一次采样时,寻找与该时刻最近邻时刻的图像,这样便完成了两种数据的时间匹配,如图中红色方框所示。

可以看出,这种时间同步的方式可能存在一些问题:上文红色字体所述的最近邻时刻较为模糊,若最近邻的时刻同样和激光雷达采样时间差距较大,那最终的时间同步的效果肯定不好;另一方面,如若随着需要进行时间同步的传感器越来越多,那么匹配的难度必然加大,匹配的精度也大大折扣。这时候可能就需要别的方法来支持时间同步了,硬件同步就油然而生。


1.2 硬同步

  硬同步主要是通过GNSS进行授时的,传感器自身集成了GPS通信接口,可以接收一些数据和信号。目前使用较多的是使用PTP协议解决各传感器设备时间同步的问题。

首先先来介绍一下PTP协议,其是基于数据包的时间同步协议。数据传输和时间同步使用同一网络,它描述了如何在基于数据包网络(比如以太网)上分配同步时间的机制。时钟精度达到亚微秒级。PTP是一种主从式的时间同步系统,采用硬件时间戳,因此可以大幅减少软件处理时间。同时PTP可运行在L2层(MAC层)和L4层(UDP层),运行在L2层网络时,直接在MAC层进行报文解析,不用经过四层UDP协议栈,从而大幅减少协议栈驻留时间,进一步提高时间同步精度,对于自动驾驶系统来说非常友善。

     好了,是不是没怎么看懂,我也是。我觉得姑且可以认为这种方法还是蛮不错的,可以较好的完成时间同步的任务。下面具体阐述通过PTP协议进行时间同步的过程。还是先来对一些基本概念进行一个了解。设备中运行PTP协议的网络端口称为PTP端口,PTP主端口用来发布时间,PTP从端口用来接收时间。同时还定义了如下三种始终节点:489554c0948f43f283663da35d356b59.png

  PTP通过在主从设备之间交互同步报文,并记录下报文发送时间,从而计算网络传输延迟和主从设备间时钟的偏差。PTP定义了四条同步报文:Sync、Follow_Up、Delay_Req、Delay_Resp,精确同步过程如下。fc5fddd7a8ea41b1a07b8ad8a977dec2.png

1、PTP主端口向从端口发送Sync报文,同步记录下Sync发送的时间t1。从端口收到Sync报文后,记录下收到的时间t2。


2、紧接着主端口将t1时间放到Follow_Up报文发送给从端口,从端口收到此报文后就可以解析出t1,并由此得到第一个方程式:t1+网络延时+时钟偏差=t2。


3、从端口向主端口发送Delay_Req报文,同步记录下Delay_Req发送的时间t3。主端口收到报文后,记录下收到的时间t4。


4、紧接着主端口将t4时间放到Delay_Resp报文发送给从端口,从端口收到此报文后就可以解析出t4,并由此得到第一个方程式:t3+网络延时-时钟偏差=t4。


上文红色公式有两个未知数,两个方程组,应用初中数学知识可以解出:网络延时Delay=[(t2-t1)+(t4-t1)]/2,时钟偏差Offset=[(t2-t1)-(t4-t3)]/2。


 知道了Delay和Offset就能对传感器的时间进行调整,从而进行传感器的时间同步。


相关文章
|
存储 编解码 安全
Opus从入门到精通(二):编解码器使用
opus_encoder_get_size()返回编码器状态要求的大小。注意,这段代码的未来版本可能改变大小,所以没有assuptions应该对它做出。编码器状态在内存中总是连续,复制它只要一个浅拷贝就足够了。使用opus_encoder_ctl()接口可以改变一些编码器的参数设置。所有这些参数都已有缺省值,所以只在必要的情况下改变它们。
2730 0
|
数据可视化 中间件 API
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
熟悉 在 STM32 CubeMX 下面的 FreeRTOS 使用
5909 1
FreeRTOS记录(一、熟悉开发环境以及CubeMX下FreeRTOS配置)
|
Ubuntu 机器人 开发者
Docker环境下的ROS Noetic:Ubuntu 20.04 系统下的解决方案
这就是在Docker环境下安装ROS Noetic在Ubuntu 20.04系统的一种简单方法,希望能对你有所帮助。
1260 16
|
安全 机器人 5G
PTP同步时钟使用注意事项及场景应用
精确时间协议(PTP,IEEE1588标准)是数字化时代分布式系统中实现亚微秒级高精度时钟同步的关键技术,广泛应用于智能电网、5G通信、工业自动化和金融交易等领域。使用PTP同步时钟时需注意网络环境适配(低延迟、支持硬件时间戳)、主从时钟选择与配置(高稳定性主时钟、硬件时间戳引擎)、时间源校准与抖动抑制以及安全冗余设计。典型应用场景包括电力系统的继电保护、5G基站的纳秒级同步、工业自动化的多轴协同运动及金融交易的高频订单撮合。选型时应根据精度需求(硬件或软件PTP)、网络架构复杂性(透明时钟或边界时钟)和可靠性要求(冗余时钟源与路径)合理配置,以提升系统协同性和数据一致性。
|
传感器 自动驾驶 机器人
大疆Livox Mid360 使用指南
本文是大疆Livox Mid-360激光雷达的使用指南,包括Livox Viewer 2的安装与使用、Livox SDK2的安装与演示、Livox ROS的配置与启动,以及一些使用时的注意事项。文章还提供了关于Livox Mid-360的详细特点、接线信息、尺寸信息、主控端IP设置、修改Livox Mid 360的IP方法、坐标系定义和IMU内参的介绍。此外,还提供了官方资料和软件下载的链接。
12245 2
|
机器学习/深度学习 人工智能 缓存
【AI系统】算子融合
算子融合是优化神经网络模型执行效率的关键技术之一,通过合并计算图中的算子,减少中间结果的实例化和不必要的输入扫描,提升模型的计算并行度和访存效率,有效解决内存墙和并行墙问题。TVM等框架通过支配树分析等高级算法实现高效的算子融合,显著提高模型的执行速度和资源利用率。
1744 2
|
Linux
CentOS 7.x时间同步服务chrony配置详解
文章详细介绍了在CentOS 7.x系统中如何安装和配置chrony服务,以及它与ntpd服务的对比,强调了chrony在时间同步方面的高效性和准确性。
1817 2
CentOS 7.x时间同步服务chrony配置详解
|
传感器 机器学习/深度学习 算法
Isaac Sim教程01 Isaac Sim介绍
这篇文章是Isaac Sim的入门教程,介绍了NVIDIA Omniverse平台上的Isaac Sim机器人仿真工具包。内容包括Isaac Sim的背景、特点、应用场景、架构和工作流程,以及近期的更新情况。Isaac Sim支持物理精确的仿真和合成数据集的创建,与ROS/ROS2兼容,并能模拟多种传感器数据,适用于机器人导航、操作应用、计算机视觉研究和数据集生成等多种场景。
3496 2
Isaac Sim教程01 Isaac Sim介绍
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
6933 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
传感器 编解码 vr&ar
Intel深度摄像头RealSense D435(实感双目摄像头)和目标检测结合使用
Intel深度摄像头RealSense D435(实感双目摄像头)和目标检测结合使用
7615 0