論文閱讀 ORBSLAM3

這周末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。

它可承認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種數據關聯問題。

其他沒啥。