Trifo-VIO:Roubst and Efficient Stero Visual Inertial Odometry using Points and Lines论文笔记
这是2018-IROS上的一篇文章,亮点是作者提出了Lines特征的VIO方案,还有就是提出一个新颖的回环检测,不是用传统的基于优化的方法或者BA,另外作者还发布了一个新的用于VIO的数据集。亮点主要还是在线特征的使用上,有更强的鲁棒性,能适应低纹理和光照变化的环境。
Abstract:
提出Trifo-VIO系统,使用点和线特征的基于滤波的紧耦合立体VIO系统。线特征可以帮助点特征处理低纹理和光照变化的环境。在不使用全局BA或位姿图优化情况下,提出一个新的轻量级基于滤波的闭环检测以减少累计误差。当EKF更新时,制定了闭环,以最优地将由滤波器维护的当前滑动窗口重新定位到过去的关键帧。还介绍了Trifo-Ironsides数据集,一个新的视觉惯性数据集,具有高质量的同步立体摄像机和IMU数据。
Introduction:
描述了两种VIO的分类方法。基于when visual and inertial measurements are fused,分为松耦合和紧耦合;基于how visual and inertial measurements are fused,分为滤波和优化方法。介绍中提出了作者发现VIO存在的两个问题,然后提出了自己的改进方法。
1)现在大多数的VIO系统使用点特征,很少有使用线特征的。其次点特征在低纹理和光照变化环境中表现不好,然而,许多这样的低纹理环境包含了丰富的线性形状的平面元素,而且边缘的检测对自然光线变化不那么敏感。基于上面的实际情况提出了结合使用线特征的VIO,就是为了使系统更加鲁棒。但引入线特征必然会带计算复杂度的问题,增加计算开销,作者是怎么处理得呢?原话描述是通过使用多状态约束卡尔曼滤波器(MSCKF),立体点和线特征在滑动窗口中仅以特征数量的线性为代价进行处理。即使用滑动窗口的方法,只对滑动窗口的内容进行特征匹配和特征追踪,计算开销只和特征数量有关。
2)现在VIO系统为了处理漂移问题,大多数采用基于优化或者BA的方法,但是计算开销大。所以作者提出一个轻量级的回环检测方法,不使用图优化或者BA。
作者的贡献:
1)他提出的Trifo-VIO方法是第一个基于紧耦合滤波的立体VIO,它同时使用点和线特征。
2)介绍了一种全新的基于轻量级滤波的回环方法,定义为EFK更新时,它将当前的滑动窗口重新定位到被检测到的回环上;
3)与最先进的VIO系统进行比较和公开了新的用于VIO的数据集;
Related Work:
主要介绍最新的的里程计或slam系统中使用点和线特征,还有回环方面的相关工作。
在点和线特征的使用,在slam系统中已经有相关的应用,如PL-slam等等。但是在VIO系统中,使用点和线特征方面的工作还很少。作者对线特征的使用介于直接方法和基于特征的方法之间。尽管具有无特征操作的优点,但直接方法依赖于亮度恒定假设,通常会受到环境光照变化和相机增益和曝光设置的影响。与此相反,特别是对于ROVIO,作者使用点重投影误差和点对线距离作为滤波器更新的创新,而不是光度误差。
参考VINS-MONO的两步闭环方法:(1)局部紧耦合重定位,使滑动窗口与过去的位姿对齐;(2)全局位姿图优化。作者提出的轻量级回环类似于VINS-MONO使用的第一步,只是作者在滤波器框架中实现了它,为了提高效率,没有全局优化。
Estimator Description:
估计器的主干是MSCKF,它的关键思想是维护和更新一个使用特征跟踪观测的滑动窗口,而不包括滤波状态中的特征。相反,三维特征位置是通过最小二乘多视觉三角剖分进行估计,然后被边缘化,在一定程度上类似于无结构的BA。这样做的优点是可以考虑减少计算成本,使MSCKF的复杂度在特征数量上是线性的,而不是像EKF-SLAM那样的立方。
介绍了两种类型的EKF更新:(1)基于点和线特征的更新,以应对具有挑战性的场景和增强鲁棒性;(2)循环闭合更新,以减少累积漂移。
作者下面介绍了各个部分的一些工作:
状态参数化、EKF传播、点特征的测量模型即是左右相机点的重投影误差、线特征的测量模型主要是线段的前后两个端点和线段上的一个点的残差。
E、EKF更新:点和线特征。每当点或线特性不再被跟踪,或者滑动窗口大小超过预定义的最大大小,就会触发EKF更新。点特征和线特征随后被边缘化,因为它们的位置与状态估计直接相关,这使得算法复杂度在特征数量上呈线性。边缘化是利用特征雅可比矩阵的左零空间来实现的,它抵消了线性化残差中的特征项。然后将变换后的残差和点、线的状态雅可比矩阵累加起来,形成最终的残差和观测矩阵。
F、EKF更新:闭环。当一个新的摄像机状态被添加到滑动窗口时,在并行线程中执行关键帧选择和触发循环检测(如果选择)。 如果关键帧仍在滑动窗口中时检测到循环,则将触发闭环更新。 否则,关键帧将与其特征描述符和3D位置一起添加到数据库中。由于回环检测在当前关键帧和过去关键帧之间建立了特征匹配,我们使用过去关键帧的特征位置进行EKF更新,而不是使用漂移的当前姿势对它们进行重新三角化。 更新过程与点特征的更新几乎相同,除了我们将这种闭环特征的3D位置视为先验知识,因此不执行特征边缘化。 这是有道理的,因为这样的“地图”点在过去与被插入到回环检测数据库中的关键帧一起被边缘化。
Image Processing:
对于每个新图像,我们通过KLT光流(OF)跟踪现有点特征,对于非跟踪图像区域,通过FAST特征检测器检测新特征。 对于线特征,使用线段检测器(LSD)来提取线段。对于检测到的每个线段,使用线带描述符(LBD)提取二进制描述符。 线要素的立体和时间匹配均基于LBD描述符匹配。
Loop Detection:
对于每个新图像,根据跟踪的特征数量和循环检测数据库中现有关键帧的姿态距离进行关键帧选择。如果选择了一个关键帧,我们提取ORB描述符进行回环检测。回环检测是基于DBoW2 实现的,它既快又可靠,并且它运行在主VIO线程的并行线程中。对于候选回环,在RANSAC框架内执行两步异常值拒绝:2D-2D基本矩阵测试和3D-2D PnP测试。如果内部特征匹配的数量高于预定义的阈值,我们标记检测到的回环并触发回环,关闭EKF更新。如果当前关键帧不包含循环,将它从滤波器维护的活动滑动窗口边缘化时,将其位姿、特征的2D和3D位置及其描述符添加到数据库。考虑到内存要求和检测速度,我们在数据库中设置了最大关键帧数,以确保它在一个相机帧内返回结果。
Trifo-VIO:Roubst and Efficient Stero Visual Inertial Odometry using Points and Lines论文笔记的更多相关文章
- 视觉惯性里程计Visual–Inertial Odometry(VIO)概述
周围很多朋友开始做vio了,之前在知乎上也和胖爷讨论过这个问题,本文主要来自于知乎的讨论. 来自https://www.zhihu.com/question/53571648/answer/13772 ...
- 论文阅读——Visual inertial odometry using coupled nonlinear optimization
简介:论文提出一种新的视觉里程计算法,其直接利用带噪声的IMU数据和视觉特征位置来优化相机位姿.不同于对IMU和视觉数据运行分离的滤波器,这种算法将它们纳入联合的非线性优化框架中.视觉特征的透视重投影 ...
- Correlation Filter in Visual Tracking系列二:Fast Visual Tracking via Dense Spatio-Temporal Context Learning 论文笔记
原文再续,书接一上回.话说上一次我们讲到了Correlation Filter类 tracker的老祖宗MOSSE,那么接下来就让我们看看如何对其进一步地优化改良.这次要谈的论文是我们国内Zhang ...
- Correlation Filter in Visual Tracking系列一:Visual Object Tracking using Adaptive Correlation Filters 论文笔记
Visual Object Tracking using Adaptive Correlation Filters 一文发表于2010的CVPR上,是笔者所知的第一篇将correlation filt ...
- 论文笔记之:Visual Tracking with Fully Convolutional Networks
论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015 CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...
- 论文笔记: Dual Deep Network for Visual Tracking
论文笔记: Dual Deep Network for Visual Tracking 2017-10-17 21:57:08 先来看文章的流程吧 ... 可以看到,作者所总结的三个点在于: 1. ...
- 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning
论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning 2017-06-06 21: ...
- Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记
Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪 ...
- 论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks
论文笔记-IGCV3:Interleaved Low-Rank Group Convolutions for Efficient Deep Neural Networks 2018年07月11日 14 ...
随机推荐
- Xcode中利用git源代码版本号控制
git是一个版本号控制系统,能够通过命令行来调用,也有专门的桌面软件.这里主要介绍在Xcode中怎样利用git来进行版本号的控制. 一.创建git源 从Xcode5開始引入了使用git的一些新特性.将 ...
- Python zip Python zip函数
zip([iterable, ...])zip()是Python的一个内建函数,它接受一系列可迭代的对象作为参数,将对象中对应的元素打包成一个个tuple(元组),然后返回由这些tuples组成的li ...
- Java并发编程(三):并发模拟(工具和Java代码介绍)
并发模拟工具介绍 ① Postman : Http请求模拟工具 从图上我们可以看出,Postman模拟并发其实是分两步进行操作的.第一步:左边的窗口,在窗口中设置相关接口以及参数,点击运行进行第二步. ...
- C/C++之文件打开方式差别
一.引言 在上一篇中,需要获取文件的大小,但是获取的文件大小与从文件中读取的数据大小总是对不上(10行数据,文件大小是129,但是读取数据是119),因此,实现的服务器总是出现这个错误:net::ER ...
- ORACLE的显式游标与隐式游标
1)查询返回单行记录时→隐式游标: 2)查询返回多行记录并逐行进行处理时→显式游标 显式游标例子: DECLARE CURSOR CUR_EMP IS SELECT * FROM EMP; ROW_E ...
- 基于Java语言开发jt808、jt809技术文章精华索引
很多技术开发人员喜欢追逐最新的技术,如Node.js, go等语言,这些语言只是解决了某一个方面,如只是擅长异步高并发等等,却在企业管理后台开发方面提供的支持非常不够,造成项目团队技术选项失败,开发后 ...
- vi/vim 光标移动命令
vi/vim 光标移动命令 移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列 w:光标以 ...
- QBC运算符含义
HQL运算符 QBC运算符 含义 = Restrictions.eq() ...
- Python写的贪吃蛇游戏例子
第一次用Python写这种比较实用且好玩的东西,权当练手吧 游戏说明: * P键控制“暂停/开始”* 方向键控制贪吃蛇的方向 源代码如下: 复制代码代码如下: from Tkinter import ...
- 下一个时代,对话即平台 —— 开始使用Bot Framework和Cognitive Service来打造你的智能对话服务
在16年3月30号微软的全球开发者大会Build上发布了Bot Framework,微软认为下一个big thing是Conversation as a Platform,简称CaaP,中文应该叫做& ...