No. 24-02

ROS を用いたシステム構築技術 4

ロボットの自律移動を支える技術 ” SLAM “

キーワード：ROS/ROS2、自律移動、ロボット

はじめに
最近では、街中でも自律的に移動するロボットを見かけるようになりました。飲食店では配膳ロボット、公共施設では案内ロボット、家庭内では掃除ロボットなどが活躍しています。また、車両の自動運転も実用化に向けて技術開発が進められています。
移動ロボットが目的地まで自律的に移動するには、周囲の環境を認識して、その環境内において自分がどこにいるのかを推定し、目的地まで向かう経路を計画する機能が求められます。こ の機能を実現するには、環境の地図を構築する技術と、その地図における自分の位置を推定する技術が必要になります。SLAM(Simultaneous Localization andMapping)とは、ロボットが自分の位置(自己位置)を推定しながら、それと同時に地図を構築する技術
です 1)。
SLAM の開発では、オープンソースのソフトウェア開発プラットフォームである ROS(Robot OperatingSystem)2) が標準的な開発基盤となっています。大阪技術研では、ROS の有用性に着目し、ROS を活用したシステムの研究開発や技術支援を行っています 3)。本稿では、ROS で動作する SLAM について紹介します。
SLAM の計算処理の基本
SLAM では、ロボットが移動しながらセンサで周囲を計測し、移動軌跡に沿って地図を構築します。
その計算処理における入力はセンサデータで、出力はロボットの移動軌跡と地図になります。図 1 に地図構築の概略を示します。図 1 上部は時刻 t と時刻 t+1 の間にロボットが移動する様子を示し、図1 下部はそれぞれの時刻において得られるセンサデータと推定した自己位置から地図(センサデータの集合)を構築する様子を示しています。SLAM の基本となる計算処理の手順は以下の通りです 4) 。
1. ロボットが自分の周囲環境のデータをセンサから取得する
2. ロボットが現在いる場所を中心にして、センサで取得したデータを地図に書き加える

3. ロボットが移動する
4. 移動量を考慮して、移動後の地図上における自分の位置を推定する
5. 移動後にロボットが新たな周囲環境のデータを取得する
6. 推定した移動後の場所を中心にして、新たに取得したデータを地図に書き加える

図 1 SLAM における地図構築の概略
上記手順では、地図を構築したい環境のデータを取得するため、ロボットが環境を動き回る必要があります。その際には、人間がロボットを操縦することが多くあります。
先述した手順は、以前の地図に新しいセンサデータを付け加えていく手順である、といえます。これ
では、センサデータや推定したロボットの位置に誤差が生じると、その影響は累積されていきます。そこで、SLAM では、統計的手法などを取り入れることで累積誤差の影響を減らしています。
SLAM の種類と用いられるセンサ
SLAM では、環境のデータを取得するため、物体までの距離と方向を計測するセンサを用います。そのためのセンサとして LiDAR(Light Detection andRanging) や カ メ ラ が 使 わ れ ま す 。 LiDAR を 使 う
SLAM を LiDAR SLAM、カメラを使う SLAM を VisualSLAM といいます。
LiDAR は、物体にレーザ光を照射し、その反射光の情報をもとに物体までの距離と方向を計測するセンサです。レーザ光が 2 次元平面を走査する
2D-LiDAR と、3 次元空間を走査する 3D-LiDAR があります。
Visual SLAM では、単眼カメラ、ステレオカメラ、深度カメラが用いられます。単眼カメラは、一般的なデジタルカメラのように 1 つのレンズを使用するカメラですので、それ 1 台だけでは距離を得ることができません。そこで、カメラを移動させて得た複数の視点からの画像をもとに、三角測量によって距離と方向を算出します。ステレオカメラと深度カメラは、それだけで距離と方向を算出できます。
これらの他にも、LiDAR やカメラで推定したロボットの位置や向きを補正するため、ジャイロスコープ、IMU(Inertial Measurement Unit)といったセンサが使われます。また、車輪型のロボットでは、車輪の回転数を計測し、その値から計算して求めた移動量(オドメトリ)を位置や向きの補正に利用します。
2D-LiDAR SLAM
2D-LiDAR を用いた SLAM を 2D-LiDAR SLAMといいます。その代表的なアルゴリズムに gmappingがあります 5)。gmapping は、オドメトリと 2D-LiDARからの周囲環境データをもとに 2 次元地図を構築する SLAM です。ROS パッケージとして公開されており、比較的簡単に利用できます。
図 2 に仮想環境と gmapping で構築した地図を示します。図 2 左部に ROS で利用できるシミュレータに設けた仮想環境を示しています。その仮想環境内でロボットを走行させ、走行中に取得したセンサデータをもとに gmapping で地図を構築すると、図2 右部に示す 2 次元地図が得られます。

3D-LiDAR SLAM
3D-LiDAR を用いた SLAM を 3D-LiDAR SLAMといい、車両の自動運転技術への応用を目的とした研究開発が進められています。その開発基盤にも ROS が使われており、ROS で利用できる SLAMアルゴリズムが GitHub 等に公開されています。
図 3 に 3D-LiDAR SLAM で構築した地図を示します。この地図は、LeGO-LOAM6) というアルゴリズ
ムと 3D-LiDAR SLAM の性能を評価するためのセンサデータセット 7)を用いて構築した地図です。

図 3 3D-LiDAR SLAM で構築した地図
おわりに
本稿では、ROS を標準的な開発基盤としている代表的なアプリケーションである SLAM について紹介しました。大阪技術研では ROS/ROS2 によるシステム開発を支援しています。また、SLAM に関する研修を実施しております。ご興味のある方はお気軽にお問合せ下さい。
参考文献
1) 友納, SLAM 入門: ロボットの自己位置推定と地図構
築の技術, オーム社, (2018).
2) ROS, https://www.ros.org/
3) 大阪産業技術研究所テクニカルシート
No.22-09 「ROS を用いたシステム構築技術 1 microROS を活用したセンサデータの可視化」4) 中嶋, ゼロからはじめる SLAM 入門, 科学情報出版
株式会社, (2022).
5) gmapping,https://github.com/ros-perception/slam_gmapping6) LeGO-LOAM,
https://github.com/RobustFieldAutonomyLab/LeGO-LOAM

7) Stevens-VLP16-Dataset,
https://github.com/TixiaoShan/Stevens-VLP16-Dataset

図 2 仮想環境と gmapping で構築した地図
発行日 2024 年 4 月 1 日
作成者 電子・機械システム研究部 知能機械研究室
Phone: 0725-51-2677、0725-51-2678
E-mail: akairyo@orist.jp、miyajima@orist.jp

赤井亮太、宮島健