看了一下港科的基于vins拓展的论文<relocalization, global optimization and merging for vins>,在回环的实现部分总体没有什么变化,DBoW2 + PnPRANSAC + 4DOF pose graph,唯一的改动是在pnp前面加了个fundamental matrix RANSAC,应该是有效果调优的,但是根据之前VINS和LDSO的写法,DBoW2 + PnPRANSAC也是够用的.别的一些不同的操作就是在用回环帧更新当前pose的位姿的时候不是直接修正,而是把回环帧作为一个固定帧加入到当期那滑窗.其他的工作更偏向纯实现吧,包括地图的保存和读取.

Abstract

VINS会漂移并且不能提供绝对的位姿估计.

衡量历史信息来进行重定位然后修正漂移是一个热点话题.

通过高效的存储和加载地图来重复使用地图.

现在的地图和以往的可以被融合,通过全局pose graph.

代码已经被融合近VINS-Mono了.

Introduction

里程计会产生drift,及时IMU可以修正在roll和pitch角的drift,其他4个维度还是会漂的.

另一个问题是里程计是一个基于第一帧计算相对变化的系统而不是计算一个绝对的位姿.每一次我们启动系统的时候,起始点都会变成第一帧然后输出一个不是固定坐标系下的里程.

Related Work

[7, 8]松耦合IMU和相机,然后用KF.

一个比较有名的基于EKF的VIO方案是MSCKF.几个相机的位姿会被保持在状态向量里.所以连续帧看到的同样的特征会形成multi-constraint update.

重定位算法可以基于地图的类别分为两类.

  • offline-built地图

[17]-[19]

[18],[19] build an offline map in geometric configuration

[17] build the offline map by learning method.

  • online-built地图

[20]和[22]用BRISK特征,[21]用ORB.这些方法都缺少加载和复用之前地图的能力.

System Overview

基本pipeline就这样.

Algorithm

A. Visual-Inertial Odometry

就是个VINS简介.

B. Loop Detection

我们用了DBoW2,每一个关键帧,我们用了500个FAST特征,然后用BRIEF描述子.

比之前的VINS里回环操作多了一个2D-2D,可能是有好处的,不知道出于什么考量.因为只是PnPRANSAC工作的也很好,包括LDSO也是这么操作的.

我们用了两步,

  • 先是2D-2D的Fundamental Matrix RANSAC.
  • 然后是3D-2D的PnP RANSAC

C. Tightly-Coupled Relocalization

我们没有只是计算了两个匹配帧的相对位子,我们通过在局部滑窗联合优化loop closure frame来解决.

这个回环帧被看做一个局部滑窗中的固定的额外帧.

在cost function中也只是加了个回环帧的重投影误差.

这种联合优化的方式会生成更高精度的结果.

D. Global Pose Graph Optimization

当我们固定过去的状态的时候,local window会立刻飞到一个"没有漂移"的地方. 这样的话,轨迹就会有一个跳跃.为了使得整个轨迹持续而平滑,我们用了一个轻量级的4DOF的pose graph.

4DOF的优化是比一般的pose graph不一样一些,因为重力可观以后,角度中只有yaw角不可观.

1) Four Accumulated Drift Direction

pitch和roll是可观的.

2) Adding Keyframes into the Pose Graph

每一帧在它被边缘化呢以后就会被加入pose graph. (?)为啥

然后会有两种变,顺序边和回环边.

3) 4-DOF Pose Graph Optimization

4) Map Merging

E. Map Reuse

1) Pose Graph Saving

我们只需要保存每一个节点和边,和每一个关键帧描述子(节点).

原图被扔了(这个和VINS中的操作一致.)

特征的描述子消耗的内存最多,就是500*32一个关键帧.

2) Pose Graph Loading

没啥.

Experiment Result

..

Conclusion

..

论文阅读 <Relocalization, Global Optimization and Map Merging for Monocular Visual-Inertial SLAM>的更多相关文章

  1. 《Deep Learning of Graph Matching》论文阅读

    1. 论文概述 论文首次将深度学习同图匹配(Graph matching)结合,设计了end-to-end网络去学习图匹配过程. 1.1 网络学习的目标(输出) 是两个图(Graph)之间的相似度矩阵 ...

  2. Deep Learning of Graph Matching 阅读笔记

    Deep Learning of Graph Matching 阅读笔记 CVPR2018的一篇文章,主要提出了一种利用深度神经网络实现端到端图匹配(Graph Matching)的方法. 该篇文章理 ...

  3. Deep Reinforcement Learning for Dialogue Generation 论文阅读

    本文来自李纪为博士的论文 Deep Reinforcement Learning for Dialogue Generation. 1,概述 当前在闲聊机器人中的主要技术框架都是seq2seq模型.但 ...

  4. Deep Learning 33:读论文“Densely Connected Convolutional Networks”-------DenseNet 简单理解

    一.读前说明 1.论文"Densely Connected Convolutional Networks"是现在为止效果最好的CNN架构,比Resnet还好,有必要学习一下它为什么 ...

  5. Deep Learning 26:读论文“Maxout Networks”——ICML 2013

    论文Maxout Networks实际上非常简单,只是发现一种新的激活函数(叫maxout)而已,跟relu有点类似,relu使用的max(x,0)是对每个通道的特征图的每一个单元执行的与0比较最大化 ...

  6. Discriminative Learning of Deep Convolutional Feature Point Descriptors 论文阅读笔记

    介绍 该文提出一种基于深度学习的特征描述方法,并且对尺度变化.图像旋转.透射变换.非刚性变形.光照变化等具有很好的鲁棒性.该算法的整体思想并不复杂,使用孪生网络从图块中提取特征信息(得到一个128维的 ...

  7. Sequence to Sequence Learning with Neural Networks论文阅读

    论文下载 作者(三位Google大佬)一开始提出DNN的缺点,DNN不能用于将序列映射到序列.此论文以机器翻译为例,核心模型是长短期记忆神经网络(LSTM),首先通过一个多层的LSTM将输入的语言序列 ...

  8. Deep Learning 24:读论文“Batch-normalized Maxout Network in Network”——mnist错误率为0.24%

    读本篇论文“Batch-normalized Maxout Network in Network”的原因在它的mnist错误率为0.24%,世界排名第4.并且代码是用matlab写的,本人还没装caf ...

  9. Deep Learning 25:读论文“Network in Network”——ICLR 2014

    论文Network in network (ICLR 2014)是对传统CNN的改进,传统的CNN就交替的卷积层和池化层的叠加,其中卷积层就是把上一层的输出与卷积核(即滤波器)卷积,是线性变换,然后再 ...

  10. Deep Learning 28:读论文“Multi Column Deep Neural Network for Traffic Sign Classification”-------MCDNN 简单理解

    读这篇论文“ Multi Column Deep Neural Network for Traffic Sign Classification”是为了更加理解,论文“Multi-column Deep ...

随机推荐

  1. C# 事件详解

    1.事件的本质是什么 答:事件是委托的包装器,就像属性是字段的包装器一样 2.为什么有了委托还有有事件 委托可以被访问就可以被执行,事件则只能在类的内部执行 3.事件要怎么声明 a.明一个委托 //委 ...

  2. 照片美妆---基于Haar特征的Adaboost级联人脸检测分类器

    原文:照片美妆---基于Haar特征的Adaboost级联人脸检测分类器 本文转载自张雨石http://blog.csdn.net/stdcoutzyx/article/details/3484223 ...

  3. LINQ查询表达式---------where子句

    LINQ查询表达式---------where子句 where 子句用在查询表达式中,用于指定将在查询表达式中返回数据源中的哪些元素. 它将一个布尔条件(“谓词”)应用于每个源元素(由范围变量引用), ...

  4. Android Contact 导入导出 vcf格式(不依赖第三方库)

    Android sdk 支持vcf处理的(忘记最低哪个版本开始支持的了,可以查一查) 备注:此代码来自Stack Overflow(原地址找不到了,o(╥﹏╥)o) 1. 导出联系人为vcf格式 Co ...

  5. UWP-HttpClient

    原文:UWP-HttpClient 基本格式: HttpClient client = new HttpClient(); Uri uri = new Uri(url); HttpResponseMe ...

  6. Qt 5.6 5.8 vs2015 编译静态库版本(有全部的截图)good

    安装Qt 去Qt官网下载Qt安装包  安装Qt和源码,一定要勾选source选项  添加bin到系统变量  工具 需要python3和 perl. vs2015 第三方工具,到官方下载安装  在命令行 ...

  7. 可以用GetObjectProp来获取对象的属性

    原来可以用GetObjectProp来获取对象的属性,还有这用法,哈哈哈哈…… var SL: TStrings; UseDBTools: Boolean;begin SL := nil; if Me ...

  8. 使用MinGW编译Boost,MSVC编译Boost的几种链接方式 good

    1.下载Boost(http://www.boost.org) 我目前用的是1.61.0版本 2.将MinGW下的bin目录完整路径设置到系统环境变量Path中,保证cmd命令行能找到gcc,g++等 ...

  9. qt5.7交叉编译gstreamer-1.0

    一.交叉编译glib1.提前需先交叉编译libffiCC=/home/mjl/opt/gcc-4.7-linaro-rpi-gnueabihf/bin/arm-linux-gnueabihf-gcc ...

  10. T4随记

    关于T4模板的信息我就不赘述了,百度一大堆 MSDN的介绍 https://msdn.microsoft.com/zh-cn/library/bb126478.aspx 下面是简单的一个示例,从类中获 ...