SLAM技術による拡張現実(AR)

皆さんは「SLAM」という言葉を聞いたことがありますでしょうか?本コラムでは、自動運転やAGV、ロボットなど様々なアプリケーションに採用されている「SLAM」技術の基本と活用について解説します。SLAMの概念や種類、ユースケースなど、様々な視点からSLAMについて理解を深め、SLAM活用の手助けとなれば幸いです。

SLAM(スラム)とは?

SLAMとは、「Simultaneous Localization and Mapping」の頭文字をとってSLAM(スラム)と呼びます。これを日本語にすると”Simultaneous=同時に起こる”、”Localization=位置特定”、”and=と”、”Mapping=地図作成”となり、「位置特定と地図作成を同時に行う」という意味になります。「位置特定と地図作成を同時に行う」技術と言われても、イメージしにくいと思いますので、もう少しかみ砕いて説明します。

まずは下の図をご覧下さい。例えば、あなたが目隠しをした状態である場所まで連れて来られたとします。目隠しを外して、まずあなたは周辺に何があるのかを見て、記憶の中からあてはまる場所を探していくと思います。そして頭の中では、眼から得た周辺の情報をもとに地図を作成し、あなたの知っている場所と一致すれば、正確な位置を特定することができると思います。もし、あなたの全く知らない場所であった場合は、まっさらの状態から歩き回り、頭の中で地図を作りながら、知っている場所にたどり着くことで位置を特定することができると思います。
これをSLAMに置き換えると、地図の中で自分がどこにいるのか、どっちを向いているのかということを技術的に正確に認識する「位置特定」と、周りに何があるのか、色々な情報を収集して周辺環境を把握する「地図作成」を同時に行っているということになります。

一般的に「Localization =自己位置推定」、「Mapping=環境地図作成」と表現されることが多いことから、SLAMとは「自己位置推定と環境地図作成を同時に行う技術」の総称になります。

知らない場所から自己位置特定までの流れ

SLAMの活用

SLAM技術により自分がどこにいるのか、周辺がどうなっているのかを把握することができるため、自動運転、ドローン、AGV、ロボット、AR/VR/MRなど、様々なアプリケーションに適用することができます。いずれも自己位置と周辺地図を正確に把握することが非常に重要な分野となります。
自動運転やドローンであれば、SLAMによって自身と周辺にある障害物やランドマークなどとの正確な距離を算出し、その情報から障害物を回避するなど次にとる行動を判断することができます。また、AGVやロボットであれば、目的地まで移動する、取り付けられたアームで物を取るなどの目的を実行するために、自己位置と周辺地図を正確に把握する必要があります。このように、SLAMは「機械の眼」として、多くのユースケースにおいて活用することができます。

バス停に停車している自動運転シャトルバス バス停に停車している自動運転シャトルバス
自動運転
倉庫内で稼働するAGV 倉庫内で稼働するAGV
AGV
起動しているロボット 起動しているロボット
ロボット

SLAMとセンサー

自動運転やAGVなどでSLAMを実現するには、機械が自車両の周囲状況を把握する必要があります。そのためには、LiDAR(レーザースキャナ)、カメラ、ToFセンサーなどのセンサーを使って、外界の状況をセンシングする必要があります。そして、これらのセンサーには、それぞれ長所・短所があるので、アプリケーションの要求仕様に応じて、最適なセンサーを選択する必要があります。
LiDARは測距精度に優れており最大検知距離も長いですが、現在ではまだ少し高価です。カメラは分解能が高く、色識別が可能ですが、霧・暗闇など耐環境性で劣ります。例えば、道路上を高速で移動する車であれば、前方の物体までの距離を正確に把握する必要があるため、LiDARが最適かもしれませんし、低速で移動するAGVで、二次元コードなどの情報を読み取る必要がある場合では、カメラの方が最適かもしれません。また、センサーにかけられる予算も、選択する上で重要な要素になります。
SLAMを実現するためには、ユースケースに応じて、最適なセンサーを選択することが重要になります。

LiDAR、カメラ、TOFセンサーの比較

また、その他のセンサーとして、IMU・オドメトリ、GNSSがあります。IMUと呼ばれる慣性計測装置では、加速度、角速度といった情報を取得することができます。オドメトリは人間で例えると、歩幅が1mで10歩歩いたため10m進んだというように、ある量の合計から移動量を求める方法です。GNSSはGPSを含む衛星測位システムの総称で、衛星から発信された電波を受信できる環境であれば自己位置を緯度・経度で得ることができます。
これらのセンサーからの情報入力頻度、すなわち周波数はそれぞれのセンサーによって異なります。例えば、LiDARであれば1秒間に10回~30回、カメラであれば1秒間に30回~60回、IMUはより多くの頻度で送られてくるなど、センサーからの情報はばらばらにSLAMに入力されることになります。

想定されるアプリケーションによって、自己位置情報を適切な精度で取得する、または周囲環境をマッピングするといった目的に合わせて、どのようなセンサーを使用するのか、センサー情報を融合するのかといったことが求められます。これらの情報をどのように結合し、自己位置推定、環境地図生成の精度につなげるかということが非常に重要になります。

SLAMの種類

続いて、SLAMの種類について紹介します。SLAMは入力センサーの違いによって、大きく3種類に分類されます。LiDARを入力として用いたLiDAR SLAM、カメラを用いたVisual SLAM、ToFセンサーなどからの測距情報を用いたDepth SLAMです。また、複数のセンサー情報を組み合わせて用いることで、広域・高精度が求められるユースケースにも利用可能になります。それでは、それぞれのSLAMの特徴についてみていきましょう。

入力センサーとSLAMの種類

LiDAR SLAM

LiDAR SLAMは、LiDAR(レーザースキャナ)から取得したデータによって実現するSLAM技術です。LiDARの出力値は2D (X、Y座標)や3D (X、Y、Z座標)の点群データとなっており、非常に高い精度で物体までの距離が計測できます。また、LiDARはカメラと比べて遠距離での測距精度に優れ、より高精度なマップを生成することができます。ただし、一般的に周辺に検知対象となる障害物が少ない環境では点群データの取得が難しく、データ処理の負荷も大きいといった課題もあります。

LiDAR SLAMの様子について、以下の動画にて紹介します。
画面右上は、LiDARが検出している周辺の物体の情報を表しています。画面左上は、LiDARからの情報と車載カメラの映像を重ねています。画面下半分では3次元地図を作成している様子と、水色線は自己位置の軌跡を表しています。非常に高い精度で周辺の物体を検知し、通過した場所の3次元地図がリアルタイムに作られていることが見て取れるかと思います。

Visual SLAM

Visual SLAMは、カメラからの画像によって実現するSLAM技術です。カメラにはレンズがひとつしかない単眼カメラ、レンズが複数ある複眼のステレオカメラなどがあり、周辺に見える物体に対して距離を計測します。比較的に安価に入手できるカメラを使用することからコストメリットが大きく、また、Visual SLAMではIMUやToFといった他のセンサーと組み合わせるケースも多いです。

Visual SLAMの様子について、以下の動画にて紹介します。
こちらは単眼カメラを使って撮影していますが、カメラの入力をもとに、周辺にある物体を多数の特徴点として認識しています。カメラ画像の上に紫色の「×」印が見えると思います。これは物体の特徴点を認識して、カメラとの距離や角度が変わることによる映像の変化から、特徴点との距離を算出するということが行われています。そして同時に、画面左上のように、緑色の点群によって周辺環境の3次元地図が作られている様子がわかるかと思います。

Depth SLAM

Depth(デプス) SLAMは、センサーから取得した深度画像(距離情報)によって実現するSLAM技術です。センサーは主にToFセンサーやデプスカメラを使用し、周辺に見える物体までの距離を計測します。Visual SLAMの苦手とする特徴点の少ない環境や暗所の環境でもSLAMを実行することができます。

Depth SLAMの様子について、以下の動画にて紹介します。
画面下は、デプスカメラから取得した画像を表しています。画面左上は、カメラ画像からの情報とカメラ画像から検出した特徴点(緑色の点)を表しています。これらの2つの情報をもとに、画面右上にて3次元地図作成(紫の点)と自己位置認識(緑色の四角錐)が行われている様子がわかるかと思います。

SLAMのロボット(ROS)への適用

ここでは、SLAM をロボットに組み込む際の考え方について解説します。以下の図はロボットを構成するプロセッサ、センサーなどのハードウェアから、上位層に当たる OS 、 ミドルウェア、アプリケーションのレイヤー構成を示しています。
前述のように、センサーからSLAMブロックに対して、異なる頻度で複数の情報が入力されます。SLAMブロックでは複数のセンサーからの情報を融合することで、SLAMアルゴリズムにて適切な精度の自己位置、姿勢を出力します。その情報を用いて、経路計画モジュールではどのような経路を通り目的地に向かうのかを計算し、その結果に基づいてタイヤなど駆動部の制御が行われます。これを連続して繰り返し行うことで、ロボットなどは自己位置を認識しながら、目的地に向かって移動していきます。そして、SLAMのロボットへの適用にはROS(Robot Operating System)や様々なライブラリなどを活用したSLAMの実装方法について理解する必要があります。

 

最後に、SLAMは自己位置推定と環境地図作成を同時に行う技術として、様々なユースケースにおける活用が期待されています。
当社マクニカでは、SLAM技術の提供だけでなく、ユーザー様の目的に合わせたセンサーの選定・販売から、SLAM実装のサポート、自動運転アルゴリズムの開発まで幅広いサービスを提供しております。詳細情報のご希望やご質問などございましたら、以下よりお気軽にお問い合わせ下さい。