在自动驾驶领域,如何实现激光雷达和相机的时间同步呢?

作者 | 路边野餐  编辑 | 汽车人

原文链接:https://www.zhihu.com/question/363919550/answer/1982689792

点击下方卡片,关注“自动驾驶之心”公众号

ADAS巨卷干货,即可获取

点击进入→自动驾驶之心【多传感器融合】技术交流群

后台回复【相机标定】获取超详细的单目双目相机模型介绍、内外参标定算法原理视频!

刚好最近在研究车上多传感器时间同步的问题,车上一般传感器包括:camera,Radar, Lidar, gnss,rtk,组合导航,轮速计等等。那么常见的传感器间时间同步主要涉及到camera, radar, lidar, imu等。对于如何实现传感器的时间同步,以及时间同步一般包括哪些内容,可能需要从以下几个方面考虑:

1)统一时钟源

69dc3bdaa875d7348582345bb5e5d3ea.png
图1  统一时钟源示意图

由于每个传感器都有自己的时间戳,这里 统一时钟就是来同步不同传感器时间戳的。如果传感器支持硬件触发的情况下,可以采用GPS时间戳作为基准进行硬件触发,这时传感器给出的数据中包含的时间戳即为全局时间戳(GPS时间戳)而非传感器时间戳。

2)硬件同步触发传感器

5245c5219a6c7e02f6a94416c8925e66.png
图2 硬件同步触发示意图

另外,由于每种传感器的采样频率不一致,如lidar通常为10Hz,camera通常为25/30Hz,不同传感器之间的数据传输还存在一定的延迟,那么可以通过寻找相邻时间戳的方法找到最近邻帧,但如果两个时间戳相差较大,且传感器或障碍物又在运动,那么最终会得到较大的同步误差。这个情况可以采用硬同步触发的方法来缓解查找时间戳造成的误差现象,也可以调整传感器的固有频率,如将相机调整为20Hz,减少时间差问题。

3)各种传感器的时间戳

a) GPS/GNSS时间戳

GPS时间指的是GPS原子时,是以UTC时间1980年1月6日0时0分0秒为时间基准,以后按照TAI秒长累计计时。

b) 相机时间戳

自动驾驶上使用rolling   shutter相机是支持外部触发曝光的,但由于相机帧周期包括曝光时间和readout时间(整帧像素点读出),所以需要关注曝光时间,对于相同cmos芯片的相机,其readout时间是固定的,来反推图像真实时间戳(一般采用曝光中间时间)。

c) 激光雷达时间戳

d) 毫米波雷达时间戳

e) IMU时间戳

4)传感器间时间软同步

最后整体了解下车端传感器时间硬件同步的一个接线图,如下:

d4305e480cf0988cf7bb54c567fe5ed4.png

这个图中激光雷达和相机时硬件时间同步一个示例,因为激光雷达支持两种时间同步方法,而相机一般只是支持外部触发,一般采用基于GPS的时间同步机制。激光雷达采用的是基于IEEE   1588的以太网时间同步机制。

1fb3511cddccad4678f4a30c23e6255e.png

自动驾驶之心】全栈技术交流群

自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、硬件配置、AI求职交流等方向;

4dec41a893a22cfd1c5b5448576e3dd7.jpeg

添加汽车人助理微信邀请入群

备注:学校/公司+方向+昵称

### 激光雷达时间同步相机的技术实现 激光雷达相机的联合标定以及时间同步自动驾驶领域中的关键技术之一。为了确保传感器之间的协同工作,通常需要解决以下几个核心问题:空间对齐、时间同步以及数据融合。 #### 1. **时间同步的重要性** 时间同步是指将不同传感器采集的数据按照同一时间戳进行匹配的过程。对于激光雷达相机而言,由于两者的采样频率可能存在差异,因此必须引入精确的时间同步机制以减少误差。在实际应用中,可以通过硬件触发或者软件算法完成这一过程[^1]。 #### 2. **硬件级时间同步** 一种常见的做法是在设计阶段就考虑硬件层面的支持。例如,在某些高级传感器套件中,会内置一个全局时钟源用于驱动所有的输入/输出接口。这样可以保证每次扫描周期内的图像帧与对应的点云数据严格对应起来。此外,还有一种方式叫做脉冲信号发生器(Pulse Generator),它能向多个设备发送相同的启动指令从而达成一致的行为模式[^3]。 #### 3. **软件级时间同步** 当无法依赖专用硬件设施时,则需依靠强大的后端处理能力来进行补偿调整。具体来说就是基于事件序列分析找出最接近的理想时刻作为公共参考点。这种方法虽然复杂度较高但也提供了更大的灵活性特别是在后期维护升级方面具有明显优势。 #### 4. **校准流程概述** - 使用特定工具包如Autoware calibration toolkit执行内外参数估计操作; - 调整安装位置直至满足预设阈值条件为止; - 验证最终成果并通过反复迭代优化整个系统表现性能指标直到达到预期标准范围之内。 以下是关于如何编写一段简单的Python脚本来模拟基本形式下的两个异构型传感单元间基础版次序排列逻辑: ```python import numpy as np def synchronize_data(lidar_timestamps, camera_timestamps): """ Synchronizes lidar and camera data based on timestamps. Parameters: lidar_timestamps (list): List of lidar capture times. camera_timestamps (list): List of camera frame capture times. Returns: tuple: Indices pairs that represent synchronized points between both sensors. """ sync_indices = [] i,j=0,0 while i<len(lidar_timestamps)and j<len(camera_timestamps): diff=np.abs(lidar_timestamps[i]-camera_timestamps[j]) if(diff<tolerance_threshold): # Define tolerance threshold according to your needs sync_indices.append((i,j)) i+=1 j+=1 elif lidar_timestamps[i]<camera_timestamps[j]: i +=1 else : j +=1 return sync_indices if __name__=='__main__': tolerance_threshold=0.01 # Example value; adjust accordingly depending upon application requirements lidar_times=[... ] # Replace with actual timestamp values from Lidar sensor readings cam_times =[...] # Replace with corresponding Camera frames' captured instants result=synchronize_data(lidar_times,cam_times) print(result) ``` 上述代码片段展示了如何通过比较各自获取瞬间来寻找最佳配对组合关系以便后续进一步深入探讨其他更复杂的场景需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值