首发:3D视觉工坊微信公众号
作者:薛轲翰
本篇文章主要介绍 2018 年 ICRA 的一篇论文:
Rosinol Vidal, A., Rebecq, H., Horstschaefer, T., Scaramuzza, D.,
_Ultimate SLAM? Combining Events, Images, and IMU for Robust Visual SLAM in HDR and High Speed Scenarios_,
IEEE Robotics and Automation Letters (RA-L), 3(2):994-1001, Apr. 2018. PDF, YouTube, Poster, Project page, ICRA18 video pitch.
这篇论文提出了首个将 Event-based Camera(事件相机)、Traditional Frame-based Camera(传统相机)与 IMU 三者结合的一个 SLAM pipeline(其实我觉得称其为 VIO 更加合适...)。
Event-based Camera 具有高速、高动态范围(HDR)等优点,关于其介绍的资料很多,这里不再赘述。
主要贡献
- 提出了首个融合了 Event Camera、传统相机、IMU 三者的 state estimation pipeline。鲁棒性好、精度高,并可在环境光照大幅突变、高速运动等情况下正常工作。这个 pipeline 可以看作是作者组里的上一篇论文《Real-time Visual-Inertial Odometry for Event Cameras using Keyframe-based Nonlinear Optimization》(Event+IMU)的扩展,将传统相机的 image 给加了进来。然后做了一些改进,使其可以在移动机器人上实时运行。
- 定量分析了将传统相机的 image 数据加进来之后,本文提出的方法在计算负荷仍然满足的情况下,状态估计精度的提升。并在真实无人机上进行了评测,可以 onboard 实时运行。并且可以在低光照、光照突变和高速运动等场景中正常飞行。
我个人认为,这篇工作主要基于 okvis 的那一套 formulation,再往优化函数里面加入一项 events frame 的重投影误差项。这样做的细节和带来的好处将在下文中提到。
具体工作
本文提出的 pipeline:
图像数据处理:首先基于 spatial-temporal window 和 IMU 的测量量,将 Event-based Camera 产生的 events 合成运动补偿(为适应高速运动场景)的 virtual event frames;此外还有传统相机的 image frames。然后对这两者分别进行 FAST 角点检测,L-K 光流法做 tracking,triangulation 出 landmark 的空间坐标、计算重投影误差,作为两个误差项。然后 IMU 的做法也就是传统 的紧耦合 VIO 中常见的方法,这里不再赘述。
1. Coordinate Frame Notation
Event-based Camera、传统相机与 IMU 三者之间的外参由事先标定好。
2. Spatio-temporal Windows of Events
上面提到,要一个合成 virtual event frame,所以这个时候就要确定一个如何选取event 合成 frame 的策略。作者提出了一个Spatio-temporal Window,即以传统相机的 frame 的到来时间tk为基准,选取此前的N个 events 来作为合成 frame 的 events。下图的 example 为N=4的样例,在论文中的实验中,选取了N=20000。这个N是要取决于场景中纹理的多少的。
3. Synthesis of Motion-Compensated Event Frames
对于进行运动补偿的图示和效果,在作者的另一篇(也就是上面提到的这篇的前作)中有图例展示:
4. Feature Tracking
作者同时在event frames 和 standard camera frames上分别进行 FAST 角点检测,并通过 KLT 进行跟踪。两者是完全相互独立的。这里的做法也就比较常规了,每个feature被当作candidate feature,在多帧之间进行跟踪。当它可以被可靠的三角化,就三角化为空间中的 3D 点 landmark,并被当作为 persistent feature用于更长远的后面帧的一直跟踪。当被跟踪的feature小于一个阈值,这个时候就重新进行feature detection。在两种frame上用于 feature 检测和跟踪的参数是一样的。
5. Visual-inertial Fusion through Nonlinear Optimization
构造了如下的 cost function:
很直观,这是一个帧数为K的sliding window中进行的优化,前面一项就是两种frames的重投影误差,其中i表示是是event还是传统相机。第二项就是 IMU的误差项。这些就是标准VIO的标配了,具体可见okvis,这里不再赘述。
作者论文中提到,这种优化方式,自然而然就会往当前工作状态更好的sensor去靠近。比如当前环境光照很低,传统相机效果极差,但event的工作较好,优化自然会更多的利用event的信息。
6. Additional Implementation Details
6.1 Initialization
初始化的时候,认为系统是静止的。收集一段时间的IMU的测量量来估计初始位姿,并且初始化陀螺仪与加速度计的bias。
6.2 No-Motion Prior for Almost-Still Motions
当近乎静止的时候,系统此时几乎是没有event输出的。为了应对这种情况,当检测到event的产生速率低于一定的阈值的时候(论文中提到为 1000events/s,measure window 为 20ms),就在优化问题中加一个速度为零的强先验。
论文实验
在数据集上,作者设定了不同的对比实验。详细的论文实验和参数设置请详见论文。这里简单放一些结果。
同时采用三者(Fr+E+I)与只采用(E+I)、只采用(Fr+I)进行对比:
(Fr+E+I)与当前的 SOTA 的(E+I)方案进行对比:
作者在真实无人机上进行实验。飞控使用 PX4,onboard computer使用 Odroid。相机下视,作者做了绕圈飞和悬停的实验;以及飞行过程中的开关灯,导致环境光照剧烈变化。
飞行时的图片样例:
视频演示地址:
本文仅做学术分享,如有侵权,请联系删文。
推荐阅读
- RTFNet:基于可见光/红外图像的城市自动驾驶道路场景语义分割
- 基于点云的机器人抓取识别综述
- uNetXST:将多个车载摄像头转换为鸟瞰图语义分割图像
- 自动驾驶领域:一种实时高精度的城市道路场景语义分割方法
重点介绍:1、3D视觉算法;2、vslam算法;3、图像处理;4、深度学习;5、自动驾驶;6、技术干货。 博主及合伙人分别来国内自知名大厂、海康研究院,深研3D视觉、深度学习、图像处理、自动驾驶、目标检测、VSLAM算法等领域。
欢迎关注微信公众号