【論文】A Comprehensive Survey of Visual SLAM Algorithms

# visual SLAM アルゴリズムに関する包括的サーベイ(2022)

visual SLAM の概要と各アプローチについて詳しく書かれている[サーベイ論文](https://doi.org/10.3390/robotics11010024)を見つけたので、自分の分かる範囲でまとめてみました。

## SLAMとは？

Simultaneous Localization and Mapping の略称。環境のマップ作成と自己位置の推定を同時に行うタスク。主に拡張現実やロボット工学の分野で使用されている。

## visual SLAMとは？

SLAM のうち、カメラなどで取得した画像データを基にしたものを visual SLAM(vSLAM) と呼ぶ。センサ構成が単純であることや、比較的低コストでも実現できるため、特に注目を集めている。

## vSLAMのアルゴリズム

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672156/0b0ea166-ac8e-1cd4-c4fd-4a131c182665.png)

まず初めに、どのような情報を用いるかだが、vSLAMには３つの主要なアプローチが存在する。

- **visual-only SLAM**
単眼またはステレオのカメラから取得した画像のみを使用する
- **visual-interial SLAM**
visual-only SLAM に**慣性計測ユニット**（**IMU**）による情報を追加
- **RGB-D SLAM**
visual-only SLAM に**深度センサ**による情報を追加

情報を取得したのち、グローバル座標を決定し、追跡とマッピングを行うための初期マップを構築する（初期化）。その後、センサの姿勢を継続的に推定し、PnP 問題[^1]を解いて現在のフレームとマップの間の 2D と 3D の対応関係を確立する（トラッキング）。最後に、カメラの移動に応じて 3D 構造を計算して拡張し、疎、半密[^2]、または密な三次元再構築が行われる（マッピング）。

このように、vSLAMのアルゴリズムは、**初期化→トラッキング→マッピング**という３つのプロセスで表すことができる。

また、vSLAMに密接に関連している技術として、**ビジュアルオドメトリ**（**VO**）がある。vSLAMとVOの主な違いは、推定された軌道とマップの一貫性を考慮するかどうかにある。VOは局所的最適化のみを行うのに対し、vSLAMはループクロージャーを使用して軌道の修正を行うことができる。

## visual-only SLAM

**メリット**：
センサーサイズが小さい、低価格、キャリブレーションが容易、低消費電力

**デメリット**：
初期深度や姿勢推定、ドリフト、スケール推定など、システムの初期化が複雑

visual-only SLAM はさらに、**特徴ベースの手法**と**直接的手法**に大別される。

- **特徴ベース手法** ... 特徴点抽出によりキーポイントを検出し、それらを画像間で一致させることにより姿勢推定を行う手法。すべてのフレーム情報を使用しないため埋め込み実装に適しているが、無地の環境では十分な数のキーポイントを検出することができず、失敗する可能性がある

- **直接的手法** ... 事前処理を行わずにピクセルの強度値のみから姿勢推定を行う手法。様々なアルゴリズムがあり、それによってマップの密度が疎な場合と密な場合がある。密な再構成を行うほど計算コストは高く、リアルタイムでの動作に制約がかかる

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3672156/3c591aea-53a3-4ca5-6d44-0293cd1029d6.png)

## visual-interial SLAM

**メリット**：
環境情報が増加することにより精度が向上

**デメリット**：
カメラに加えてIMUの初期化も必要なため、アルゴリズムが複雑

visual-interial SLAM はさらに、カメラとIMUデータの間の融合タイプに応じて分割することができる。

- **疎結合手法** ... IMUデータを姿勢の推定ではなく、センサ位置の方向と変化を推定する

- **密結合手法** ... カメラとIMUデータ両方を用いて姿勢を推定する

## RGB-D SLAM

**メリット**：
SLAM初期化の複雑性が低減

**デメリット**：
屋外には適さない、大量のメモリと消費電力を要する

## vSLAMアルゴリズムの分析
アルゴリズムを体系的に分析・評価するために、SLAMのシステムに影響を与える６つの基準を設定する。
- アルゴリズムタイプ
- マップ密度
- グローバル最適化
- ループクロージャー
- 組み込み実装
- 可用性

### visual-only SLAM
- **MonoSLAM** (2007) ... 拡張カルマンフィルタ (EKF) を使用してカメラの動きとマップを推定。グローバル最適化、ループクロージャーを使用しないため正確性に欠ける
- **Parallel Tracking and Mapping** (2007) ... トラッキングとマッピングを2つの異なるスレッドに分離し、マッピングスレッドにキーフレームの概念を導入。消費電力が大きく組み込み実装には向かない
- **Dense Tracking and Mapping** (2011) ... フレームの逆深度[^3]を用いて平均測光誤差の最小化を行う密マッピングと密トラッキングを提案。高密度のマップを構成するが計算コストが高い
- **Semi-Direct Visual Odometry** (2014) ... 特徴ベース手法と直接的手法の両方の利点を組み合わせた手法。低コストで組み込み実装に適しているが、データの関連付けを短時間で行うため精度が低い
- **Large-Scale Direct Monocular SLAM** (2014) ... 半密再構成を行う。トラッキング、深度推定、マップ最適化の3つのスレッドに分かれている
- **ORB-SLAM 2.0** (2017) ... 特徴点の対応を見つけ、再投影誤差を最小化することによりセンサ位置を特定
- **CNN-SLAM** (2017) ... CNNに基づくリアルタイムSLAMシステム
- **Direct Sparse Odometry** (2018) ... 直接的手法とスパース再構成を組み合わせたもの

|手法|タイプ|マップ密度|グローバル最適化|ループクロージャ|組み込み実装|可用性|
|:--|:--|:--|:--|:--|:--|:--|
|MonoSLAM|特徴ベース|疎|なし|なし|〇|〇|
|PTAM|特徴ベース|疎|あり|なし|〇|〇|
|DTAM|直接|密|なし|なし|〇|〇|
|SVO|どちらも|疎|なし|なし|〇|〇|
|LSD|直接|半密|あり|あり|〇|〇|
|ORB-SLAM|特徴ベース|疎|あり|あり|〇|〇|
|CNN-SLAM|直接|半密|あり|あり|-|〇|
|DSO|直接|疎|なし|なし|-|〇|

※組み込み実装と可用性の欄は論文にリンクあり

### visual-interial SLAM
- **Multi-State Constraint Kalman Filter** (2007) ... フィルタ状態の伝播と更新を共分散行列を用いて行う。計算コストが低いため組み込み実装に適しているが、ヤコビアンの計算による不整合や精度の低下が懸念される
- **Open Keyframe-Based Visual-Inertial SLAM** (2014) ... IMU データと再投影項を目的関数に結合し、重み付き再投影誤差と IMU からの時間誤差を同時に最適化する。他手法よりもメモリ消費量が少なく組み込み実装に適しているが、精度面では劣る
- **Robust Visual Inertial Odometry** (2015) ... 特徴抽出に加えて、特徴の周囲のマルチレベルパッチの抽出を行う。低いリソース使用率で組み込み実装に適しているが、 フレームごとの処理時間の影響を受けやすく、他手法よりも精度面で劣る
- **Visual Inertial ORB-SLAM** (2017) ... ORB-SLAMに基づく。マッピングスレッドは、IMUの動作を考慮した異なるカリングポリシーを採用
- **Monocular Visual-Inertial System** (2018) ... IMU測定値と特徴観測値をマージする再局在化とポーズグラフ最適化モジュールを実装。高精度だが、メモリ使用量が多い
- **Visual-Inertial Direct Sparse Odometry** (2018) ... DSOに基づく。慣性情報を考慮したDSOの拡張であり、他手法よりも精度とロバスト性に優れているが、初期化に時間がかかる。グローバル最適化とループクロージャを行わない
- **ORB-SLAM3** (2020) ... Atlas と呼ばれるマルチマップ表現を維持する。単眼、ステレオ、RGB-D カメラで使用でき、グローバル最適化とループクロージャを実装するが、屋外での精度は低い

|手法|タイプ|マップ密度|グローバル最適化|ループクロージャ|組み込み実装|可用性|
|:--|:--|:--|:--|:--|:--|:--|
|MSCKF|フィルタリングベース|疎|なし|なし|〇|〇|
|OKVIS|最適化ベース|疎|なし|なし|〇|〇|
|ROVIO|フィルタリングベース|疎|なし|なし|〇|〇|
|VINS|最適化ベース|疎|あり|あり|〇|〇|
|VIORB|最適化ベース|疎|あり|あり|-|-|
|VI-DSO|最適化ベース|疎|なし|なし|-|〇|
|ORB-SLAM3|最適化ベース|疎|あり|あり|-|〇|

### RGB-D SLAM
- **KinectFusion** (2011) ... RGB データと深度データを使用して頂点と法線マップを生成し、新しい深度フレームを 3D 再構成に統合して新しい密な表面予測を取得する。 最大の中規模の部屋でも良好なマッピングが可能だが、ループ終了を実行しないため、ドリフト誤差が蓄積される
- **SLAM++** (2013) ... オブジェクト指向のSLAMアルゴリズム。ループ閉鎖検出を実行し、物体の反復性を考慮する。既知のシーンに最も適している
- **Dense Visual Odometry** (2013) ... キーフレームベースの手法であり、各フレームについて、閾値と比較されるエントロピー値を計算する。テクスチャのないシーンに対してロバスト性があり、ループクロージャを行う
- **RGBDSLAMv2** (2014) ... 特徴間の推定にRANSACを、ポーズ推定にICPを用いる。累積誤差を除去するためにグローバル最適化とループクロージャを実行する

|手法|タイプ|マップ密度|ループクロージャ|組み込み実装|可用性|
|:--|:--|:--|:--|:--|:--|
|KinectFusion|直接|密|なし|〇|〇|
|SLAM++|どちらも|密|あり|-|-|
|RGBDSLAMv2|特徴ベース|密|あり|-|〇|
|DVO|直接|密|あり|-|〇|
|ORB-SLAM 2.0|特徴ベース|密|あり|-|〇|

## 今後の議論
- アルゴリズムのロバスト性の強化 ... 動的な環境によって追跡や再構成が失敗してしまう
- 計算リソースの最適化 ... マップの容量によってはメモリ制限により動作に影響が出てしまう
- 地図表現における環境理解の進化 ... マップの再構成だけでなく、環境内のオブジェクトを認識してそれらの情報を取得する

深層学習ベース (UnDeepVO, DeepSLAM, DF-SLAM) や、セマンティックベース、動的SLAM (DynaSLAM II) などが将来の方向性として代表的。

## データセットと評価指標について
- TUM RGB-D
- KITTI
- ICL-NUIM
- TUM MonoVO

この辺りのデータセットが評価には向いている。

## まとめ
visual SLAM はそのコストの低さから様々な分野で用いられている。本論文では、vSLAM の主なアプローチとアルゴリズム、その評価指標について詳細な解説と分析がなされている。

### 論文情報・リンク
- [Macario Barros, Andréa, et al. "A comprehensive survey of visual slam algorithms." Robotics 11.1 (2022): 24.](https://www.mdpi.com/2218-6581/11/1/24)

[^1]: **PnP** (**Perspective-n-Points**) **問題** ... 3次元空間中にあるn個の点群と、それに対応する2次元の画像上の点群の関係から、カメラの位置姿勢を推定する問題。
[^2]: **半密** (**Semi-dense**) ... データのほとんどが非ゼロ要素であり、一部の要素のみがゼロであるようなデータのこと。逆に、データのほとんどがゼロ要素であり、一部の要素のみが非ゼロであるようなデータを半疎 (Semi-sparse) という。
[^3]: **逆深度** (**Inverse depth**) ... 深度値の逆数のこと。深度値には通常無限の範囲があるが、その逆数を考え深度の範囲を有限にすることで有限深度推定問題に置き換えることができる。