这是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论文笔记的更多相关文章

  1. 视觉惯性里程计Visual–Inertial Odometry(VIO)概述

    周围很多朋友开始做vio了,之前在知乎上也和胖爷讨论过这个问题,本文主要来自于知乎的讨论. 来自https://www.zhihu.com/question/53571648/answer/13772 ...

  2. 论文阅读——Visual inertial odometry using coupled nonlinear optimization

    简介:论文提出一种新的视觉里程计算法,其直接利用带噪声的IMU数据和视觉特征位置来优化相机位姿.不同于对IMU和视觉数据运行分离的滤波器,这种算法将它们纳入联合的非线性优化框架中.视觉特征的透视重投影 ...

  3. Correlation Filter in Visual Tracking系列二:Fast Visual Tracking via Dense Spatio-Temporal Context Learning 论文笔记

    原文再续,书接一上回.话说上一次我们讲到了Correlation Filter类 tracker的老祖宗MOSSE,那么接下来就让我们看看如何对其进一步地优化改良.这次要谈的论文是我们国内Zhang ...

  4. Correlation Filter in Visual Tracking系列一:Visual Object Tracking using Adaptive Correlation Filters 论文笔记

    Visual Object Tracking using Adaptive Correlation Filters 一文发表于2010的CVPR上,是笔者所知的第一篇将correlation filt ...

  5. 论文笔记之:Visual Tracking with Fully Convolutional Networks

    论文笔记之:Visual Tracking with Fully Convolutional Networks ICCV 2015  CUHK 本文利用 FCN 来做跟踪问题,但开篇就提到并非将其看做 ...

  6. 论文笔记: Dual Deep Network for Visual Tracking

    论文笔记: Dual Deep Network for Visual Tracking  2017-10-17 21:57:08  先来看文章的流程吧 ... 可以看到,作者所总结的三个点在于: 1. ...

  7. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

  8. Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记

    Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪 ...

  9. 论文笔记-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 ...

随机推荐

  1. Codeforces 474D Flowers 动态规划法

    话说好久没写算法代码了,工作了有点忙的了.只是算法始终是我的挚爱,故此还是尽量抽时间和挚爱来个约会. Codeforces的题目是最适合练手的了,以下是一道不算难的动态规划法题目.先上题: D. Fl ...

  2. Springboot读取配置文件的两种方法

    第一种: application.yml配置中的参数: zip: Hello Springboot 方法读取: @RestController public class ControllerTest ...

  3. builtroot make menuconfig流程

    本文主要介绍一下,buildroot(buildroot-2018.02.1)的make menuconfig.众所周知,在我们执行menuconfig时,会生成一个图形化界面,然后进行相关的配置.同 ...

  4. windows下控制台程序更改图标和加载资源文件

    1.在空项目的Resouce FIles中右击创建一个新的.rc文件. 2.选中这个.rc文件右击在界面中选择导入icon 3.选中icon,将icon的ID更改为IDC_MAINFRAME. 4.重 ...

  5. JQuery EasyUI 请求/加载 两次

    解决方案如下: Html页面中的Table标签中包含class属性(class="easyui-datagrid"),删除即可.

  6. uinty实现玩家尾随鼠标位置平滑旋转角度

    首先我们要在场景中加入一个quad平面作为地板, 然后指定Layer为Floor,然后移除mesh renderer组件 然后加入脚本 脚本主要思想是从屏幕中心投出一条射线到地板, 然后获取相应坐标, ...

  7. TCP/IP详解读书笔记:概述

    分层 分层是一种很通用的架构模式.通过分层,可以把一个系统分解成多个层,每个层专注于各自的功能,并提供接口给上面的层调用.上面的层不需要了解调用层的详细实现,只依赖于其接口,这就给维护带来了很大的好处 ...

  8. android打包library

    最近在做开发时,遇到一个需求,就是要自定义一个控件,最后需要将其打包成android library库,然后供以后其他需求使用,由于以前很少打包library,所以这次特地学了下怎么打包. 首先先随便 ...

  9. shellscript

    shell script 运行方法 -------------------------------------- 1. 以命令方式执行( 一般是以这种方式执行 ) 首先修改档案权限可以运行 chmod ...

  10. 虚拟机Ubuntu系统下kaldi安装与编译简介

    kaldi官网:http://www.kaldi-asr.org/doc/index.html 在http://github.com/kaldi-asr/kaldi中直接下载kaldi的zip包,没有 ...