*SLAM とは
移動体にセンサを取り付け,その情報を入力として「センサの位置や姿勢」と「周囲のマップ」を同時に推定する方法です.ロボットや車の自動化や,[link:AR]のためにカメラの自己位置を推定したい場合によく利用されます.
**Localization / Tracking
センサ自身の位置姿勢を推定する処理を指します.LocalizationよりTrackingと呼ぶ場合の方が多いと思います.
**Mapping
センサの周囲の画像特徴を抽出したり形状情報を推定して保持する処理を指します.Trackingの補助的な役割としてMappingがある場合もありますが,Mappingの方を重視しシーンの構造を正確に再構成することを目的としたSLAMもあります.(例えば,以降に紹介するPTAMは前者,KinectFusionは後者に寄った方法だと思います.)
*代表的なSLAMのアルゴリズム
**PTAM (Parallel Tracking and Mapping) [1]
リアルタイムに動作させたいTrackingと,計算コストの重いMappingの処理を別々のスレッドで並列実行することで,安定した性能を実現した方法です.以降の研究でもこの並列実行の方法論を使う場合が多いです.
[youtube:Y9HMn6bd-v8]
{{small:[1] G.Klein, D.Murray, "Parallel Tracking and Mapping for Small AR Workspaces", International Symposium on Mixed and Augmented Reality (ISMAR), 2007}}
{{small:[link:http://www.robots.ox.ac.uk/~gk/publications/KleinMurray2007ISMAR.pdf] }}
**DTAM (Dense Tracking and Mapping) [2]
従来までの画像から特徴点を検出する方法とは大きく異なり,画像上すべての画素を利用してTrackingとMappingを行う方法です.次のデモ動画では,PTAMと比較してブラーに対する耐性や密な3次元形状を推定できる点などが紹介されています.
[youtube:Df9WhgibCQA]
{{small:[2] R.A.Newcombe, S.J.Lovegrove, A.J..Davison, "DTAM: Dense tracking and mapping in real-time", IEEE International Conference on Computer Vision (ICCV), 2011}}
{{small:[link:https://www.robots.ox.ac.uk/~vgg/rg/papers/newcombe_davison__2011__dtam.pdf] }}
**KinectFusion [3]
3次元センサ(Kinect)から得られる距離情報を利用して,それを3次元のボクセル空間に統合することでMappingを行う方法です.
[youtube:quGhaggn3cQ]
{{small:[3] R. Newcombe, S. Izadi, O. Hilliges, D. Molyneaux, D. Kim, A. Davison, P. Kohli, J. Shotton, S. Hodges, A. Fitzgibbon, "KinectFusion: Real-Time Dense Surface Mapping and Tracking", EEE International Symposium Mixed and Augmented Reality (ISMAR), 2011}}
{{small:[link:https://www.doc.ic.ac.uk/~ajd/Publications/newcombe_etal_ismar2011.pdf] }}
**Point-based Fusion [4]
surfelと呼ぶ位置と面積の情報を持つ点を利用してMappingを行います.KinectFusionとは異なり,ボクセル空間を利用しないためメモリ使用率が軽いため,広い範囲でもMappingが可能になります.また,点の追加や削除が比較的容易であり,シーン中の物体が動いたときそれを取り除くような操作が可能であることも紹介されています.
[youtube:2BdwMdh5M7Q]
{{small:[4] M.Keller, D.Lefloch, M.Lambers, S.Izadi, T.Weyrich, A.Kolb, "Real-time 3D Reconstruction in Dynamic Scenes using Point-based Fusion", International Conference on 3D Vision (3DV), 2013}
{{small:[link:http://reality.cs.ucl.ac.uk/projects/kinect/keller13realtime.pdf] }}
**LSD-SLAM [5]
DTAMではすべての画素について3次元の座標を推定します.これに対し,LSD-SLAMでは勾配のつい良い箇所(画素のマッチングをとりやすい箇所)に絞って計算を行います.DTAMに比べ計算コストが軽く,またメモリ使用量も少なくすることができるようです.
[youtube:GnuQzP3gty4]
{{small:[5] J.Engel, T.Schöps, D.Cremers, "LSD-SLAM: Large-Scale Direct Monocular SLAM", European Conference on Computer Vision (ECCV), 2014}
{{small:[link:https://vision.in.tum.de/_media/spezial/bib/engel14eccv.pdf] }}
下記のリンクでは,関連する論文がまとめて紹介されています.
{{small:[link:https://vision.in.tum.de/research/vslam/lsdslam] }}
**ORB-SLAM [6]
ORB特徴を利用した方法です.Githubでソースコードが公開されていて,現時点ではORB-SLAM2が最新のようです.単眼カメラだけではなく,ステレオカメラやデプスカメラを利用する条件でも動作するようになっています.プログラムとして非常に完成度が高く,めったにトラッキングは破綻しまない上,破綻したとしてもORB特徴に基づいた復帰機能も安定的に動作します.
[youtube:ufvPS5wJAx0]
{{small:[6] Raúl Mur-Artal, J.M.M.Montiel, J.D.Tardós, "ORB-SLAM: A Versatile and Accurate Monocular SLAM System", IEEE Transactions on Robotics, 2015}}
{{small:[link:http://webdiis.unizar.es/~raulmur/MurMontielTardosTRO15.pdf] }}
{{small:[link:https://github.com/raulmur/ORB_SLAM2] }}
**SVO
[youtube:2YnIMfw6bJY]