本文へ移動
雑学書庫好奇心が集まる場所
日本語

未知の空間を自ら描く、自己位置推定と地図作成の同時実行(Simultaneous Localization and Mapping)

見知らぬ建物の廊下を初めて歩くロボットを想像してみましょう。地図もなく、自分がどこにいるのかもわかりません。それでもセンサーで周囲を調べながら少しずつ進み、いつの間にか部屋の形と自分の位置を同時に把握します。このように、地図を描きながら同時に自分の位置を推定する技術が「自己位置推定と地図作成の同時実行(Simultaneous Localization and Mapping、SLAM)」です。

自己位置推定と地図作成の同時実行とは、簡単にいえば「事前に作成した地図を使わず、ロボットが移動しながら得たセンサー観測から、環境の地図と自分の位置・姿勢を一度に推定すること」を意味します。地図がなければ位置を特定できず、位置が正確でなければ地図を描けないという、鶏と卵のような循環を、両者を別々に完成させるのではなく、一緒に整合させながら解いていくアプローチです。

本資料では、SLAMがなぜ難しい問題なのかという点から、歴史と主要な構成要素、代表的な解法の変遷、そして実際の運用で直面する限界まで、順を追って見ていきます。


地図と位置を同時に整合させる技術

自己位置推定と地図作成の同時実行とは何か?

明るいオフィスの廊下の中央で、LiDARを搭載した小型の車輪式屋内移動ロボットが一時停止し、周囲を調べている様子

従来のロボットナビゲーションでは、工場のようにあらかじめ描かれた地図があるか、衛星測位のように位置が既知の基準点があれば十分でした。しかし、家の中や地下倉庫のように地図もGPSもない場所では、ロボットが自ら空間を学ばなければなりません。SLAMは、まさにそのような状況で、ロボットの「どこにいるのか」と「周囲はどのような様子なのか」を一つの問題として扱います。

  • 自己位置推定(Localization):既存の地図を基準に、ロボットの位置と向き(姿勢)を求めることです。
  • 地図作成(Mapping):ロボットがどこにいるかがわかっているという前提のもと、センサー観測を集めて環境の地図を作ることです。
  • 同時推定(Simultaneous Estimation):上記の二つを交互に完成させるのではなく、複数の時点での観測が同じ環境を説明できるよう、位置と地図を一緒に調整することです。

姿勢には、平面上の座標だけでなく、向いている方向も含まれます。そのため、SLAMの成果には、ロボットが通ってきた軌跡、壁・角・特徴点などの地図要素、そしてそれらの推定値の不確実性が一緒に含まれることがよくあります。


鶏と卵の問題から確率的な解法へ

実験室の床に出発点へ戻る簡単な経路が示され、隅に置かれた箱のそばに小型の研究用ロボットが立っている様子を上から見た場面

1991年、ジョン・レナード(John Leonard)とヒュー・デュラント=ホワイト(Hugh Durrant-Whyte)は、知能ロボット・システム国際会議(IROS)で、この問題を「事前情報のない長期的な大域的位置推定」として定式化しました。SLAMという略語は、1995年の国際ロボティクス研究シンポジウム(ISRR)で発表されたデュラント=ホワイト、ライ、ネボット(Durrant-Whyte、Rye、Nebot)の論文で初めて使われました。この問題の起源は、1986年にサンフランシスコで開かれたIEEEのロボティクス・オートメーションの会議での議論にまでさかのぼります。当時の研究者たちは、地図上のランドマークの推定値が互いに強く相関していることに気づきました。ロボットの位置誤差が、共通の誤差として複数の観測に入り込むためです。

(1)ランドマークと誤差の相関
ロボットが、まだ正確に把握できていない位置から二つの特徴を観測すると、その二点の推定位置は同じ位置誤差を共有します。その後、観測が蓄積されるにつれ、この相関を保持する確率モデルが、地図の一貫性を保つ鍵になります。

(2)ループ閉じ込みで誤差を修正する
ロボットが以前通った場所を再び認識すると、現在の位置だけでなく、過去の軌跡や地図まで一度に修正できます。この「ループ閉じ込み(Loop Closure)」は、車輪や慣性だけに基づいて蓄積した位置誤差が時間とともに大きくなるドリフトを抑える、重要な仕組みです。


フィルターからグラフ最適化まで

ロボット用の作業台の上に、LiDAR、深度カメラ、慣性計測モジュールが、何も書かれていないノートとともに整然と並べられている様子

古典的なSLAMは、拡張カルマンフィルター(Extended Kalman Filter)を使い、ロボットの状態とランドマークを一つの大きな推定ベクトルとして扱う方式から始まりました。その後、計算量と非線形性に対処するため、粒子フィルターに基づくアプローチや、ロボットの姿勢と観測をノード・エッジとして表し、誤差を最小化するグラフ最適化(Graph-based SLAM)が広く使われるようになりました。

  • 走行距離計測(オドメトリ、Odometry):車輪の回転や慣性センサーから、短い区間の動きを予測します。単独で使うと誤差が蓄積します。
  • 観測更新(Observation Update):LiDAR・カメラ・超音波などで捉えた特徴を地図と照合し、位置と地図を修正します。
  • データ対応付け(Data Association):今観測した点が、以前見た同じ壁なのか、新しい物体なのかを対応付けることで、間違えると地図に大きなずれが生じます。

センサーの選択は環境によって異なります。屋内の掃除ロボットや物流ロボットは、一般に2次元LiDARや深度カメラを使い、拡張現実デバイスは視覚的特徴と慣性計測を組み合わせた視覚・慣性SLAMを使います。大切なのはセンサーの名前よりも、観測の不確実性を確率的に扱い、同じ場所に再び来たときに、整合性を保ちながら地図を修正する仕組みです。


現場で押さえておきたいSLAMの限界

ガラス壁と同じ形のドアが繰り返し現れる長い白い廊下で、一台のカートが片側を遮り、特徴に乏しく見える場面

SLAMはすでに家庭用ロボットや倉庫の自動化、自動運転の一部のモジュールに取り入れられていますが、「完全に解決された問題」と呼ぶにはまだ早いといえます。

(1)変化しない空間を前提にしがちです
人がドアを開け閉めしたり、カートを移動させたりすると、以前地図に記録された特徴が消え、ループ閉じ込みに失敗することがあります。動的な場面を物体単位で理解し、地図から除外する研究が続けられています。

(2)特徴に乏しい場所では不安定になります
長い白い廊下、広いガラス壁、暗い空間など、パターンが繰り返されたり観測が難しかったりする環境では、データ対応付けが頻繁に誤ります。このような場合は、複数のセンサーの情報を融合したり、点群・格子・意味を持つ物体単位を用いて地図表現を豊かにしたりする戦略が必要です。

(3)精度と計算量のバランスが課題です
大規模な建物内を長時間走行すると地図が大きくなり、リアルタイムでの最適化が難しくなります。キーフレームだけを残したり、局所地図に分けて管理したりする手法が、実運用での性能を左右することがよくあります。


SLAMは、ロボットが見知らぬ空間でも「自分がどこにいるのか」と「ここがどのような場所なのか」を同時に学べるようにする、ナビゲーションの骨格です。地図と位置を別々に完成させてから初めて動くのではなく、不確実な観測を積み重ねながら両者を一緒に洗練させていくという発想が、その核心です。

観測に誤差があることを認めたうえで、地図と位置を一緒に修正すること。それが、未知の空間を自ら切り開いていくロボットナビゲーションの第一歩です。

SLAMは、周囲の観測と動きの推定を繰り返しながら、ロボットの位置と地図を同時に更新する。同じ場所を再び認識するループ閉じ込みは、経路と地図に蓄積した誤差を減らすのに役立つ。
SLAMによる位置・地図の同時推定とループ閉じ込みを簡略化した概念図です。出典: MathWorks、SLAMおよびLidar SLAMのドキュメント.