自動運転技術やお掃除ロボットにも使用されているSLAM (Simultaneous Localization And Mapping) をシンプルに解説していきます。
- SLAMとは
- SLAMの適用例
- SLAMの実現方法
- まとめ
SLAMとは
- SLAMって何?(SLAM=自己位置推定+環境地図作成)
- なぜSLAMが必要?
SLAMとはその名の通り、同時(Simultaneous)に自分の位置の推定(Localization)と周りの地図の作成(Mapping)を行う事です。
僕たちが今どこにいるかを知りたいときは、どうするでしょうか。
地図を使って周りの風景と照らし合わせたり、今だと携帯電話などのGPS機能やアプリを使用して、現在僕たちがどこにいるかを調べると思います。
ロボットの場合も同様で、ロボットの位置をGPSやカメラなどを使って推定しています。
これを自己位置推定(Localization)と言います。
また、地図を作成したい場合はどうすれば良いでしょうか。
僕たち人間の場合は、正確な測量技術を駆使して地図を作成しています。
ロボットの場合も同じで、カメラの映像などを基に周りの状況を把握して、地図を作成していきます。
これを環境地図作成(Mapping)と言います。
この時、大事な情報として、今自分たちがどこにいるかは分かっている必要があります。
さもなければ、出来上がった地図は意味のないものになってしまいます。
では、どこにいるかもわからない、地図も何もない場所の時はどうすれば良いでしょうか。
いきなり真っ暗な部屋の中に放り込まれた状態をイメージして下さい。
もし、部屋の地図があれば何とか脱出できるかもしれません。
もしくは、正確な移動距離が分かれば部屋の形が分かり、脱出も可能だと思います。
ただ、何も情報の無いところにいきなり放り込まれた場合は地図もない、場所も分からないで八方ふさがりの状態です。
そこで、有効となる技術がSLAMです。
SLAMを用いることで、自分の位置を推定しながら周りの地図を作成していくことが可能になります。
SLAMの適用例
- 一般的な適用例(自動運転車、屋内での自立ロボット)
- 研究紹介
例えば自動運転技術において、GPSでは補え切れない場所(トンネルなど)での位置推定にSLAMが用いられています。
お掃除ロボットにもSLAMが使用されていて、地図を作ることで部屋の形や大きさを入手して、自分の位置を知ることで最適なロボットの経路を計算しています。
(ランダムに動いて掃除するロボットもありますが…。)
SLAMの実現方法
- SLAM=自己位置推定+環境地図作成
- 自己位置推定
- 環境地図作成
SLAMとは自己位置推定と環境地図作成を同時に行うものと説明してきました。
このSLAMの難しさは、チキン―エッグ問題(「鶏が先か、卵が先か」という問題)にあると言われています。
自己位置を推定するために環境地図が必要で、環境地図を作るために自己位置を知る必要があるという事です。
因果性のジレンマというものです。
この難しさを加味した上でSLAMを実現するため、簡単な方法を下記に示します。
- 初期の自己位置を決定
- 現在時刻t=0での環境地図を作成
- 時刻t+1での自己位置を推定
- 時刻tでの環境地図を基に推定した自己位置を修正
- 時刻t+1での環境位置を測定
- 時刻tで作成した環境地図を更新
- 2から6を繰り返す
この方法では、まず自分の初期位置を中心として地図を作成します。
そして、自己位置推定→環境地図作成→自己位置推定→環境地図作成→・・・、と繰り返してSLAMを実現しています。
まとめ
- SLAMは便利で必要な技術
今回紹介はSLAMについて、「SLAMって何?」の部分を説明しました。
次回はSLAM技術を実際にプログラムしながら、より詳しくSLAMの実現方法を紹介したいと思います。
自己位置推定についての記事をまとめたページはこちらから