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 ...
随机推荐
- PL/SQL 美化器不能解析文本
1.问题:PL/SQL美化器不能解析文本 原始sql语句如下: CREATE OR REPLACE VIEW V_GGXZBM AS SELECT XZBM,XZMC,CASE WHEN PARENT ...
- 计算机原理--cpu篇
简介 本文的目的是为了能够对特定的计算模型估算所需的CPU规格,个数. 这里主要介绍CPU的基本工作原理,指令集.(仅以X86体系结构的CPU为例 )
- mybatis想要在控制台显示sql语句配置文件
在src目录下创建一个properties文件 配置内容如下 log4j.rootLogger=debug,stdout,logfile log4j.appender.stdout=org.apach ...
- mysql 查询锁,解锁语句
一:锁表: 锁定数据表,避免在备份过程中,表被更新 mysql>LOCK TABLES tbl_name READ; 为表增加一个写锁定: mysql>LOCK TABLES tbl_na ...
- Centos下源码安装git
1.centos下git版本太久了,才1.8几,而官方更新的还是很活跃的,于是我就想源码安装一个新版本. 2.首先到: https://github.com/git/git/releases 下载最新 ...
- Atitit.atiJsBridge 新特性v7q329
Atitit.atiJsBridge 新特性v7q329 atiJsBridge 未来计划 Postdata 图像上传的支持 Simp param计划 p1 p2 p3 p4 $method 的si ...
- Android Studio编译的时候提示Gradle无法下载的解决方案
首先,打开android studio项目 找到项目目录gradle\wrapper\gradle-wrapper.properties这个文件.内容如下:#Wed Apr 10 15:27:10 P ...
- 通过show status 来优化MySQL数据库
1, 查看MySQL服务器配置信息 Java代码 mysql> show variables; 2, 查看MySQL服务器运行的各种状态值 Java代码 mysql> show ...
- 奇怪的string
代码1: #include <iostream> //#include <string> using namespace std; int main(int argc, cha ...
- shell变量/环境变量和set/env/export用法_转
转自:shell环境变量以及set,env,export的区别 一.shell环境变量的分类以及set env export的区别: set:显示(设置)shell变量,包括的私有变量以及用户变量.不 ...