読者です 読者をやめる 読者になる 読者になる

Visual SLAM勉強日記

ミュンヘン工科大学に留学中です。Daniel Cremers教授の研究室が主宰するPractical Course (1セメ研究)を通して、Visual SLAM (LSD-SLAM)の勉強をしていました。コンピュータービジョンの学習を始めてまだまだ日が浅いのですが、学んだ事のメモも兼ねて発信していきます。

SLAMの歴史①

robonchu様のブログに取り上げて頂きました!大変ありがとうございます。

robonchu.hatenablog.com

 

Good!の評に見合う様、中身のあるブログにしていきたいと思います。

本日のテーマはSLAMの歴史について。

一口にSLAMと言っても様々なアルゴリズムがあるのですが、何が何やらよく分からないというのが勉強し始めの私でした。勉強するうちにようやくSLAM研究の流れがおぼろげながら見えてきたので、記事にしたいと思います。とりあえずは何か発信する事が大事かなと思い書いているので、間違いがあれば教えてください。

 

SLAMの研究の歴史は大きくPTAM以前と以降で大きく二つに分かれる。

①PTAM以前

以前本ブログで紹介したAtsushiさんのブログの解説が非常に分かりやすい。

Simultaneous Localization And Mapping (SLAM)について - MyEnigma

PTAM以前の初期のSLAMでは、検出された特徴点(ランドマーク)の位置情報を全てカルマンフィルタの状態量に組み込み、ロボットへの制御入力と観測されたランドマークの位置、そしてIMU等の値を統合し自己位置の推定を行っている。しかし、これはランドマークを観測する度にカルマンフィルタの状態量が増え続ける事を意味し、移動を続ければ計算コストが次第に増大しリアルタイムでの実行が困難になるという問題点があった。 代表的なアルゴリズムにEKF SLAM (拡張カルマンフィルタを使用)、Fast SLAM (自己位置推定にパーティクルフィルタ、ランドマーク処理にEKFを用いる事で計算を工夫)などがある。ちなみにFast SLAMを生み出した元Stanford大のSebastian Thrun教授はDARPAグランドチャレンジに勝利した後にGoogleに引き抜かれ、現在Googleの自動運転開発を牽引している。Udacityの創設者でもある彼は、自動運転開発の歴史を紐解く上でのキーマンの一人である。

ランドマーク観測のセンサーとしてはざっくりカメラとLRFがあり、カメラ画像から特徴点を抽出し使用するものをVisual SLAMと呼ぶ。画像情報からは特徴点のマッチングが行いやすいがデプス推定の為の計算が別途必要であり、LRFでは特徴点のマッチングが難しい代わりにデプスを直接観測できる。

センサーとしてはカメラの方が安価で入手しやすい事から徐々にVisual SLAMの研究が増え、さらにはステレオカメラでなく小型で安価な単眼カメラを用いたSLAMが盛んに研究されるようになった。

初期のVisual SLAMの集大成として、Imperial College LondonのAndrew Davison教授が2003年に単眼カメラを用いたリアルタイムで実行可能なSLAMであるMono-SLAMを発表し、以降の単眼Visual SLAMの流れが生まれた。ちなみにDavison教授はその昔産総研でポスドクをしていた。

 

②PTAM登場

この様に初期のSLAMにはランドマークの増加に伴う計算コストの問題があったが、PTAMの登場を境に流れが変わる。PTAMはPararell Tracking and Mappingの略であり、AR系のトップ会議ISMAR 2007でOxford大から発表された単眼Visual SLAMのアルゴリズムである。

www.slideshare.net

(Masayashi Kobayashiさんのスライド。)

 

PTAMでは、バンドル調整と呼ばれるStructure from Motion (SfM)で用いられるマップ作成手法を用いている。SfMとは、複数の画像から環境の3次元形状を復元する技術であり、端的に言えばリアルタイム性と引き換えに高精度に3次元復元するSLAMである。この時に行われているのがバンドル調整であり、複数枚の画像から特徴点をマッチングさせ、画像間のカメラの位置姿勢変化と特徴量の3次元位置を最適化計算によって求める。

バンドル調整は計算量が大きくこれまでSLAMでは用いられてこず、カルマンフィルタを用いて位置姿勢を推定していた。しかしPTAMでは画像上の位置追跡とマップ作成を2つのスレッドに分けて同時に処理するという工夫を行っている。片方のスレッドでは常にカメラ位置の追跡計算を行い、もう一方のスレッドでは特定のフレーム(キーフレームと呼ばれる)周りのみに対してバンドル調整を行いマップを計算する。すなわち、従来全フレームに対してカメラ位置の追跡とマップ作成を行っていた部分を工夫し、キーフレームでのみデプス推定を行い(マップ作成)、その他のフレームでは最新のキーフレーム画像とデプス情報を用いて比較を行うことでカメラ位置を推定している(追跡)。この様な工夫の結果、リアルタイムで精緻な3次元地図を作成する単眼SLAMを実現した。(色々とややこしかったので論文読んでください。) 

PTAMの登場により、それまでマーカーを必須としていたARに革命をもたらした。以後マーカーレスARの研究開発が進み、最近で言えばPokemon Goにも同様の技術は用いられている。

また、以降登場するVisual SLAMの大半はPTAMの影響を受けており、追跡とマップ作成を別スレッドに分け計算させるという手法を継承している。

 

次回はPTAM以降のSLAMについて、LSD-SLAMとORB-SLAM、そしてDSOについて知っている事を書きます。