激光雷达与相机标定的时间戳同步问题

2020 年 8 月 29 日 计算机视觉life

点击上方“计算机视觉life”,选择“星标”

快速获得最新干货

本文由知乎作者 郑纯然授权发布。原文链接:

https://zhuanlan.zhihu.com/p/191372189


机和激光雷达之间的时间戳同步问题一直是实时跑SLAM的先决条件。本文试图以最清晰的思路去讲明白这个事情。

开始本文之前,先介绍几个基本概念。

  1. 相机特性-曝光和读出

相机获取一帧图像分为曝光和读出两个阶段。相机使用的传感器不同,相机的曝光时间和读出时间的重叠关系也有所不同,分为交叠曝光非交叠曝光两种。交叠曝光和非交叠曝光相比,交叠曝光可以减少曝光时间对出图时间的影响。

非交叠曝光是指当前帧的曝光和读出都完成后,再进行下一帧的曝光和读出。非交叠曝光帧周期大于曝光时间与帧读出时间的和。

内触发模式非交叠曝光

交叠曝光是指当前帧的曝光和前一帧的读出过程有重叠,即前一帧读出的同时,下一帧已经开始曝光。交叠曝光帧周期小于等于曝光时间与帧读出时间的和。

内触发模式交叠曝光

对!上一段就是为了告诉你:后文叙述中无论当前帧曝光时间和上一帧的读出时间是否重叠都不要惊讶。

  1. 图像采集:触发模式(外部输入)

相机的触发模式分为内触发模式和外触发模式 2 种。

内触发模式:相机通过设备内部给出的信号采集图像。
外触发模式:相机通过外部给出的信号采集图像。外部信号可以是软件信号,也可以是硬件信号,主要包含软触发和硬件触发。外触发模式如图:

外触发模式

软触发:触发信号由软件发出(也可以利用相机SDK提供的API接口进行软触发)。

硬件触发:外部设备通过相机的 I/O 接口与相机进行连接,触发脉冲信号由外部设备给到相机进行采图。其实是直接对相机内部寄存器进行读写。下图是海康相机的电源IO的6-pin线缆:

海康相机电源及IO接口(6-pin Hirose)

其中,海康相机有1个光耦隔离输入Line0+,1个可配置输入输出Line2+,可选择一个配置为输入信号。

  1. 触发输出

相机触发输出信号为开关信号,可用于控制报警灯、光源、PLC等外部设备。触发输出信号可通过Strobe 信号实现。

相机的曝光发生时,会立即输出一个Strobe信号,该信号为高电平有效。后文我们主要使用该信号对Lidar等其他传感器进行硬触发。这里有一个Strobe的预输出的概念。Strobe信号早于曝光生效。其工作原理为延迟曝光先进行Strobe输出。该功能可应用于响应比较慢的外部设备。Strobe预输出时序如图所示。(后面会讲为啥要延迟曝光)

Strobe信号预输出时序

现在我们回到正题吧,现在讲起来就很快了。

要同步相机和激光雷达的时间戳主要有三个方式,硬触发、软触发、软触发+硬触发。下面我以手绘示意图的形式一一介绍。

先说硬触发吧。一个MCU产生脉冲信号对三个传感器设备进行硬触发。

对于软触发+硬触发来说,可以先用相机SDK的API对一个相机进行软触发,然后利用相机的外触发信号Strobe对雷达和相机等其他传感器进行硬触发。

这里需要注意一个问题,如果进行软触发的第一个相机在曝光的同时发出Strobe信号,其他被硬触发的传感器总归是晚了一步,不能完全同步。因此引出了之前Strobe的预输出的概念,即先进行Strobe输出再延迟曝光。

配置该模式时注意四点:

1.上升沿or下降沿的触发方式;
2.有效电平宽度,电平幅值,你要知道能触发Lidar的最低幅值;
3.Strobe预输出
4.两边电平信号是否一样,3v or 5v是否需要升压…
最后讲讲不被推荐的软触发。

首先调用API操作相比于硬触发(对传感器内部寄存器直接进行读写操作)明显是慢了,执行第二句命令API(2)前API(1)就已经花了些时间。

//读取lidar和image数据的线程1
while(1)
{
API(1); //软触发第一个sensor
API(2); //软触发第二个sensor
//假设脉冲周期为0.5s
}
//处理数据线程2
for(i=0;i<nimage;i++)
{  
    t1 = getTickCount();
//部分程序有互斥锁
    t2 = getTickCount();
    Time = (t2 - t1) / getTickFrequency(); //当前帧处理时间
    sleep(1/fps-Time);
}

如上图示意,如果处理单帧数据的时间超过0.5s,线程1就会读到下一帧数据,就会导致线程2数据混乱。因此线程2单帧处理时间需要小于0.5s,且每帧需要等待(1/fps-当前帧处理时间)。



视频专辑:最新计算机视觉应用/论文/开源

专辑:计算机视觉方向简介

专辑:视觉SLAM入门

专辑:最新SLAM/三维视觉论文/开源

专辑:三维视觉/SLAM公开课

专辑:深度相机原理及应用

专辑:手机双摄头技术解析与应用

专辑:相机标定

专辑:全景相机


从0到1学习SLAM,戳↓

视觉SLAM图文+视频+答疑+学习路线全规划!

交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


投稿、合作也欢迎联系:simiter@126.com

长按关注计算机视觉life

登录查看更多
0

相关内容

【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
基于深度学习的表面缺陷检测方法综述
专知会员服务
85+阅读 · 2020年5月31日
基于视觉的三维重建关键技术研究综述
专知会员服务
160+阅读 · 2020年5月1日
【实用书】流数据处理,Streaming Data,219页pdf
专知会员服务
76+阅读 · 2020年4月24日
【中科院自动化所】视觉对抗样本生成技术概述
专知会员服务
35+阅读 · 2020年4月15日
专知会员服务
86+阅读 · 2019年12月13日
新开源RadarSLAM: 不惧风雪雨雾夜的全天候大场景激光SLAM!
自动驾驶高精度定位如何在复杂环境进行
智能交通技术
18+阅读 · 2019年9月27日
计算机视觉方向简介 | 视觉惯性里程计(VIO)
计算机视觉life
64+阅读 · 2019年6月16日
【泡泡一分钟】基于运动估计的激光雷达和相机标定方法
泡泡机器人SLAM
25+阅读 · 2019年1月17日
实战 | 相机标定
计算机视觉life
15+阅读 · 2019年1月15日
【泡泡图灵智库】LOAM:实时激光里程计与建图
泡泡机器人SLAM
18+阅读 · 2018年12月15日
【机器视觉】深度解析移动机器人的几种视觉算法
产业智能官
4+阅读 · 2018年11月10日
视觉里程计:特征点法之全面梳理
计算机视觉life
12+阅读 · 2017年8月2日
Monocular Plan View Networks for Autonomous Driving
Arxiv
6+阅读 · 2019年5月16日
Joint Monocular 3D Vehicle Detection and Tracking
Arxiv
8+阅读 · 2018年12月2日
Federated Learning for Mobile Keyboard Prediction
Arxiv
5+阅读 · 2018年11月8日
VIP会员
相关VIP内容
相关资讯
新开源RadarSLAM: 不惧风雪雨雾夜的全天候大场景激光SLAM!
自动驾驶高精度定位如何在复杂环境进行
智能交通技术
18+阅读 · 2019年9月27日
计算机视觉方向简介 | 视觉惯性里程计(VIO)
计算机视觉life
64+阅读 · 2019年6月16日
【泡泡一分钟】基于运动估计的激光雷达和相机标定方法
泡泡机器人SLAM
25+阅读 · 2019年1月17日
实战 | 相机标定
计算机视觉life
15+阅读 · 2019年1月15日
【泡泡图灵智库】LOAM:实时激光里程计与建图
泡泡机器人SLAM
18+阅读 · 2018年12月15日
【机器视觉】深度解析移动机器人的几种视觉算法
产业智能官
4+阅读 · 2018年11月10日
视觉里程计:特征点法之全面梳理
计算机视觉life
12+阅读 · 2017年8月2日
Top
微信扫码咨询专知VIP会员