这是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. 纯div+css制作的弹出菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. Xgboost 模型保存和载入()

    https://blog.csdn.net/u012884015/article/details/78653178 xgb_model.get_booster().save_model('xgb.mo ...

  3. Unity3D_NGUI_性能优化实践_CPU卡顿

    http://gad.qq.com/college/articledetail/7083468 博尔特以9.58秒创造了百米世界纪录,假设他是跑酷游戏的角色,卡顿一帧就足以把冠军拱手让人. Unity ...

  4. Java服务CPU占用高问题定位方法

    1. 概述 提供一种简单的方法来定位CPU高的问题. 找到CPU高的进程,比如232543: 执行top -H -p pid,找到占用CPU最高的线程号,比如232544,转换成16进制38c60: ...

  5. [svc]caffe安装笔记-显卡购买

    caffe,这是是数据组需要做一些大数据模型的训练(深度学习), 要求 服务器+显卡(运算卡), 刚开始老板让买的牌子是泰坦的(这是2年前的事情了). 后来买不到这个牌子的,(jd,tb)看过丽台的, ...

  6. 日期在苹果手机上显示NaN的处理方法

    注意两点即可: 1.苹果只认识 yyyy/mmmm/dddd/  这类格式的日期 2.如果输出后还要进行处理日期对比,苹果默认会带中文字,如:年月日,需要转成上面1当中的日期格式在转时间戳进行比较 G ...

  7. 质问微软 WP8.1开发HTTPS 真费劲

    本人用C#多年,WPF2年,一直想做点应用为WP生态贡献一点力量,最近终于有机会接触了 家里的本子是2年前的低压I3,不支持虚拟化,一直没有真机.最近同事妈妈换下来一个820给我拿来做开发用,非常感谢 ...

  8. Django1.6 +wsgi 部署到Apache2 的步骤。

    网上很多教程都是关于1.6之前的版本,很多都不适用,经历告诉我们最靠谱的还是官方文档. 一个Demo例子: 以 python shell开发的方式部署没有问题,但当独立部署到Apache2的过程非常艰 ...

  9. git设置忽略文件和目录

    1.登录gitbash命令端进入本地git库目录 Administrator@PC201601200946 MINGW32 /d/gitrespository/crmweb (master) 2.创建 ...

  10. 01 SQL核心语句

    在 sqlplus 中可以使用 ; 或 / 来执行一条 sql 语句, 但是 / 必须要换行, 个人感觉只有那些脚本啊什么的最后一般使用 / , 其他的都使用; 核心语句 SELECT oracle  ...