一文聊聊激光雷达与相机标定的时间戳同步问题
来源:51CTO.COM
时间:2023-05-18 10:10:13 489浏览 收藏
有志者,事竟成!如果你在学习科技周边,那么本文《一文聊聊激光雷达与相机标定的时间戳同步问题》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~
01 相机特性-曝光和读出
相机获取一帧图像分为曝光和读出两个阶段。相机使用的传感器不同,相机的曝光时间和读出时间的重叠关系也有所不同,分为交叠曝光和非交叠曝光两种。
叠曝光和非交叠曝光相比,交叠曝光可以减少曝光时间对出图时间的影响。
"Non-overlapping exposure" refers to conducting the exposure and readout of the current frame completely before initiating the exposure and readout of the next frame.。非交叠曝光帧周期大于曝光时间与帧读出时间的和。
内触发模式非交叠曝光
“交叠曝光”是指在当前帧进行曝光时,同时进行前一帧的读出过程,即下一帧已经开始曝光,从而出现的重叠现象。交叠曝光帧周期小于等于曝光时间与帧读出时间的和。
内触发模式交叠曝光
对!上一段就是为了告诉你:后文叙述中无论当前帧曝光时间和上一帧的读出时间是否重叠都不要惊讶。
02 图像采集:触发模式(外部输入)
相机的触发模式分为内触发模式和外触发模式 2 种。
内触发模式:相机通过设备内部给出的信号采集图像。
外触发模式:相机通过外部给出的信号采集图像。可以通过软触发或硬件触发来产生外部信号,它们可以是软件信号也可以是硬件信号。外触发模式如图:
外触发模式
软触发:触发信号由软件发出(也可以利用相机SDK提供的API接口进行软触发)。
外设触发:相机通过I/O接口与外设连接,外设向相机发送触发脉冲信号以进行图像采集。其实是直接对相机内部寄存器进行读写。下图是海康相机的电源IO的6-pin线缆:
海康相机电源及IO接口(6-pin Hirose)
其中,海康相机有1个光耦隔离输入Line0+,1个可配置输入输出Line2+,可选择一个配置为输入信号。
03 触发输出
开关信号可以由相机触发输出,用于控制外部设备,如报警灯、光源和PLC等。触发输出信号可通过Strobe 信号实现。
当相机的曝光发生时,会立即发出一个高电平有效的Strobe信号。后文我们主要使用该信号对Lidar等其他传感器进行硬触发。这里有一个Strobe的预输出的概念。Strobe信号早于曝光生效。其工作原理为延迟曝光先进行Strobe输出。该功能可应用于响应比较慢的外部设备。Strobe预输出时序如图所示。(后面会讲为啥要延迟曝光)。
Strobe信号预输出时序
现在我们回到正题吧,现在讲起来就很快了。
同步相机和激光雷达的时间戳有三种方式,包括硬触发、软触发和软触发加硬触发。下面我以手绘示意图的形式一一介绍。
先说硬触发吧。一个MCU产生脉冲信号对三个传感器设备进行硬触发。
对于软触发+硬触发来说,可以先用相机SDK的API对一个相机进行软触发,然后利用相机的外触发信号Strobe对雷达和相机等其他传感器进行硬触发。
这里需要注意一个问题,如果进行软触发的第一个相机在曝光的同时发出Strobe信号,其他被硬触发的传感器总归是晚了一步,不能完全同步。因此,Strobe预输出的概念被提出,先进行Strobe输出再延迟曝光。
配置该模式时注意四点:
- 上升沿 or 下降沿的触发方式;
- 有效电平宽度,电平幅值,你要知道能触发 Lidar 的最低幅值;
- Strobe 预输出;
- 两边电平信号是否一样,3v or 5v 是否需要升压;
最后讲讲不被推荐的软触发。
首先调用API操作相比于硬触发(对传感器内部寄存器直接进行读写操作)明显是慢了,执行第二句命令API(2)前API(1)就已经花了些时间。
//读取lidar和image数据的线程1while(1){API(1); //软触发第一个sensorAPI(2); //软触发第二个sensor//假设脉冲周期为0.5s}//处理数据线程2for(i=0;i<nimage;i++){t1 = getTickCount();//部分程序有互斥锁t2 = getTickCount();Time = (t2 - t1) / getTickFrequency(); //当前帧处理时间sleep(1/fps-Time);}
如果处理一帧数据所需时间超过0.5秒,线程1会读取下一帧数据,从而导致线程2的数据出现混乱。因此线程2需要在处理每一帧之前等待剩余时间(1/fps-当前帧处理时间),并保证单帧处理时间小于0.5秒。
以上就是《一文聊聊激光雷达与相机标定的时间戳同步问题》的详细内容,更多关于技术,雷达的资料请关注golang学习网公众号!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
141 收藏
-
160 收藏
-
105 收藏
-
425 收藏
-
275 收藏
-
113 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习