这周末ORB-SLAM3出现了.先看了看论文.IMU部分没细看,后面补上.

Abstract

  • 视觉,视觉惯导,多地图SLAM系统
  • 支持单目/立体/RGBD相机
  • 支持pinhole/鱼眼相机

基于特征/紧耦合/视觉惯导,基于最大后验估计的SLAM系统,即使是在IMU的初始化阶段。

我们的系统更准2-5倍。


多地图系统,基于新的场景识别,提升了recall。

1. Introduction

  • short-term data association 前段配
  • mid-tem data assocation 后端配
  • long-term data association 回环配(MGI配)

我们还提出了multi-map data association

  • ORB-SLAM Atlas: Atlas可以代表一组非连续的地图。可以用于,场景识别,相机重定位,回环检测,和地图融合。
  • Abstract camera representation:感觉就是我们的mcamera。

2. Related Work

它可承认LK比描述子匹配稍微鲁邦一点。

我们的ORB-SLAM3比VINS-Mono准2.6倍,在单目VIO配置下。

3. System Overview

  • Atlas
  • Tracking thread
  • Local Maping thread 在有IMU的时候,IMU参数是初始化,然后用MAP-estimation refine。
  • Loop and map merging thread

4. Camera Model

我们的目标是抽象所有的相机模型,提取所有相机模型相关的特性/函数(投影/反投影/雅克比..)。

A. Relocalization

ORB2中用ePNP,但是需要pinhole相机模型。我们用了MLPnP【76】,和相机模型解耦了。

B. Non-recitified Stereo SLAM

立体图像都转换成pinhole,一样的焦距,共平面,而且在水平极线上。

现在不了,泛化性更强。

  • 两个相机之间是SE3的关系(相机外参)
  • 可选择:有共视区域

5. Visual-Inertial SLAM

A.基础

状态向量:

\[\mathcal{S}_{i} \doteq\left\{\mathbf{T}_{i}, \mathbf{v}_{i}, \mathbf{b}_{i}^{g}, \mathbf{b}_{i}^{a}\right\}
\]

整个优化问题:

\[\min _{\tilde{\mathcal{S}}_{k}, \mathcal{X}}\left(\sum_{i=1}^{k}\left\|\mathbf{r}_{\mathcal{I}_{i-1, i}}\right\|_{\Sigma_{\mathcal{I}_{i, i+1}}^{2}}^{2}+\sum_{j=0}^{l-1} \sum_{i \in \mathcal{K}^{j}} \rho_{\text {Hub }}\left(\left\|\mathbf{r}_{i j}\right\|_{\Sigma_{i j}}\right)\right)
\]

它认为inertial残差不需要huber norm,因为不存在错配。

B. IMU初始化

有一些系统比如VI-DSO[46]尝试从scratch VI BA来解决,sidestepping(回避)一个初始化阶段。

我们的insights:

  • 纯单目的SLAM可以提供很准的初始地图,但是scale未知,解决视觉-only的问题会提升IMU初始化。
  • 不要使用隐式的BA表达,显式的优化问题可以使得尺度更快收敛。
  • 在IMU初始化阶段忽略传感器不确定性的话会产生很大的不可预测的误差

  1. Vision-only MAP Estimation: 在初始的2秒初始化单目SLAM,以4Hz插KF,这样有10个pose和百余个点。
  2. Inertial-only MAP Estimation:

inertial变量:

\[\mathcal{Y}_{k}=\left\{s, \mathbf{R}_{\mathrm{w} g}, \mathbf{b}, \overline{\mathbf{v}}_{0: k}\right\}
\]

\(s \in R^+\) 是尺度,\(R_{wg}\in SO3\) 是重力方向,用两个角度表示,重力向量在世界系中是\(g=R_{wg}g_I\),\(g_I = (0, 0, G)^T\)。\(\overline{\mathbf{v}}_{0: k} \in \mathbb{R}^{3}\) 是up-to-scale的body速度(从第一到最后的关键帧),从\(\overline{\mathbf{T}}_{0: k}\) 初始估计。

。。。

C. Tracking and Mapping

在一些特殊的case,比如缓慢的移动没有提供好的关于inertial参数的观测性,初始化可能收敛在好的结果。我们提出了一个变种的inertial-only的优化,它包含了所有插入的关键字,但是只优化尺度重力方向。在这种情况下,biases是常量的假设就没有了,我们会给每个帧估计,然后修正。这个优化很高效,在local mapping线程里每10秒做一次,知道有100多个关键字或者跑了75秒以上。

D. Robustness to tracking loss

  • 短时的丢失:用IMU来估计当前状态,然后投影匹配。
  • 长时丢失:初始化一个新的visual-inertial map。

6. Map Merging and Loop Closing

A. Place Recognition

为了获得高recall,每个关键字在dbow2 database 查询。为了获得100%的准确,我们走几何验证。

如果 几个候选,我们检查最优比次优。

  • 在有IMU的时候,再检查一下重力方向。

B. Visual Map Merging

当场景识别产生了multi-map的数据关联,KF \(K_a\) (当前地图\(M_a\),a表示active)- KF \(K_m\) (Atlas \(M_m\)),相对变换是\(T_{am}\)。

  1. Welding window assembly
  2. 地图融合
  3. Welding bundle adjustment 弄一个local BA
  4. Pose-graph optimization

C. Visual-Inertial Map Merging

大差不差吧。

D. Loop Closing

7. Experiment Result

  • 测了 单目/单目-IMU/立体/立体-IMU

A. single-session SLAM on EuRoC

单目/立体:ORB3比2更准是因为回环算法 - 更早的回环,更多的mid-term匹配。有趣的是,DSM获得次优的表现因为使用了mid-term的匹配,即使没有回环。

单目-IMU:ORB3比VI-DSO和VINs-Mono准两倍,说明了mid-term和long-term数据关联的优势。

双目-IMU:ORB3比OKVIS,VINs-Fusion和Kimera好很多。

B. Visual-Inertial SLAM on TUM-VI

在单目提1500个点,双目是一张图1000个点。

。。。

C. Multi-session SLAM

。。。

8. Conclusions

描述子感觉可以解决mid/long term的匹配问题,但是tracking没有LK鲁邦。

一个有趣的线是研发光度技术来解决4种数据关联问题。

其他没啥。

论文阅读 ORBSLAM3的更多相关文章

  1. 论文阅读(Xiang Bai——【PAMI2017】An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition)

    白翔的CRNN论文阅读 1.  论文题目 Xiang Bai--[PAMI2017]An End-to-End Trainable Neural Network for Image-based Seq ...

  2. BITED数学建模七日谈之三:怎样进行论文阅读

    前两天,我和大家谈了如何阅读教材和备战数模比赛应该积累的内容,本文进入到数学建模七日谈第三天:怎样进行论文阅读. 大家也许看过大量的数学模型的书籍,学过很多相关的课程,但是若没有真刀真枪地看过论文,进 ...

  3. 论文阅读笔记 - YARN : Architecture of Next Generation Apache Hadoop MapReduceFramework

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

  4. 论文阅读笔记 - Mesos: A Platform for Fine-Grained ResourceSharing in the Data Center

    作者:刘旭晖 Raymond 转载请注明出处 Email:colorant at 163.com BLOG:http://blog.csdn.net/colorant/ 更多论文阅读笔记 http:/ ...

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

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

  6. 论文阅读笔记 Word Embeddings A Survey

    论文阅读笔记 Word Embeddings A Survey 收获 Word Embedding 的定义 dense, distributed, fixed-length word vectors, ...

  7. 论文阅读笔记六:FCN:Fully Convolutional Networks for Semantic Segmentation(CVPR2015)

    今天来看一看一个比较经典的语义分割网络,那就是FCN,全称如题,原英文论文网址:https://people.eecs.berkeley.edu/~jonlong/long_shelhamer_fcn ...

  8. 论文阅读笔记 Improved Word Representation Learning with Sememes

    论文阅读笔记 Improved Word Representation Learning with Sememes 一句话概括本文工作 使用词汇资源--知网--来提升词嵌入的表征能力,并提出了三种基于 ...

  9. 论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline

    论文阅读:Prominent Object Detection and Recognition: A Saliency-based Pipeline  如上图所示,本文旨在解决一个问题:给定一张图像, ...

随机推荐

  1. vue全家桶(3.1)

    4.数据请求 4.1.axios是什么? axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它有以下特征: 从浏览器中创建 XMLHttpRequest 从 no ...

  2. Nginx配置upstream并且实现负载均衡

    感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结. 技术无止境, 我们仍需努力! 1,话不多说, ...

  3. 搭建nginx服务器nginx-1.6.2.tar.gz

    2016-06-17 09:06:52   一.实验环境 CentOS6.5 软件:nginx-1.6.2.tar.gz 二.实验步骤 1)安装nginx所依赖的软件 yum -y install p ...

  4. JavaScript基础函数的属性:记忆模式(019)

    函数在Javascript里是有属性的,因为它们是一种特殊对象.事实上,就算是没有明确声明,函数在最初就已经包含了一些固有的属性,比如所有函数都length这个属性,它可以指出函数声明了多少个参数: ...

  5. jupyter lab最强代码补全插件

    1 简介 提起kite相信不少朋友都有印象,它是一个功能非常强大的代码补全工具,目前可用于Python与javascript,为许多知名的编辑器譬如Vs Code.Pycharm提供对应的插件. 图1 ...

  6. SQL中的ON DUPLICATE KEY UPDATE使用详解

    一:主键索引,唯一索引和普通索引的关系主键索引 主键索引是唯一索引的特殊类型. 数据库表通常有一列或列组合,其值用来唯一标识表中的每一行.该列称为表的主键. 在数据库关系图中为表定义一个主键将自动创建 ...

  7. flask的小错误

    这几天刚学flask,根据录屏学代码的时候,遇到一个问题 基本能看懂错误,role_id是类的一个字段,应该是一个对象,最后发现是单词写错了,应该是大写的Column, db.Column(db.In ...

  8. PHPstorm常用快捷键(Windows)

    本文整理本人在日常工作中使用最频繁的PHPstorm快捷键,以作为自己的总结备忘,也希望能够帮到有需要的小伙伴. 以下快捷键大致按本人的使用频率从高到低来介绍. 1.复制.粘贴 Ctrl+c .Ctr ...

  9. HTML5 Canvas绘图基本使用方法, H5使用Canvas绘图

    Canvas 是H5的一部分,允许脚本语言动态渲染图像.Canvas 定义一个区域,可以由html属性定义该区域的宽高,javascript代码可以访问该区域,通过一整套完整的绘图功能(API),在网 ...

  10. C++中string转换为char*类型返回后乱码问题

    问题来源: 在写二叉树序列化与反序列化时发现序列化函数为char* Serialize1(TreeNode *root)  其函数返回类型为char*,但是我在实现的过程中为了更方便的操作添加字符串使 ...