見出し画像

お届けInfo「複数ロボットによるSLAMシミュレーションの性能評価」

今回のご依頼:
「いろいろなセッションを聴講したいけれど、すべてを網羅できません。自分の知らないところで面白そうなセッションがあるかもしれない。デリバリーをお願いします。」

ご利用ありがとうございます。承りました! カジュアルに、そして素人目線で、というご依頼です。やや専門性の高い内容ですが、解説多めでがんばってみたいと思います。それでは、発表内容を紹介してきましょー。
(解説は最後の部分にまとめてあります。適宜、ご参照ください。)

発表セッション

学生セッション6H「組込み・ロボット・エッジコンピューティング」において、大野雄杜さん(東海大学)が発表しました。

[論文1] 大野雄杜, 福井誠人, 菅谷みどり, 大川猛:複数ロボットによるSLAMシミュレーションの性能評価, 情報処理学会第83回全国大会, 6H-06, 2021.

本セッションでは7件の発表がありました。自律移動ロボットや自動運転技術などを対象に、組込み技術をいかに適用していくか、いかに性能を向上させていくか、という内容の発表が多かった印象です。

何をやったの?

複数のロボットが、エッジコンピューティング環境 [解説1] でSLAM(Simultaneous Localization and Mapping)[解説2] を行う場合に、どのような性能のコンピュータが必要になるのか、指針を明らかにしました。具体的には、2種類のコンピュータを用意し、実際にSLAMシミュレーションを実行してみることで、処理にかかる時間を計測しています。

この研究の目的

SLAMは、ロボットを自律的に移動させるために必須の技術なのですが、ロボットの実機を実際に動かしながら、試行錯誤を繰り返すのはとても大変です。そのため、コンピュータ上に仮想的(擬似的)な環境を構築し、その上でSLAMを実行する「SLAMシミュレーション」がよく行われます。

しかし、SLAMシミュレーションには多くの計算機パワーが必要です(処理時間が長くかかってしまいます)。そのため、どのような条件のときに、どのような性能のコンピュータを用意すると、どのくらいの時間でシミュレーションが終わるのか、指針を明らかにすることが重要です。こういう指針が用意されていると、やりたいことに合わせて、適切なコンピュータを準備できるからです。本研究は、実際にシミュレーションにかかる時間を計測することで、この指針を明らかにすることを目指しています。

どうやったの?

2種類のコンピュータを用意し、3次元ロボットシミュレータを用いたSLAMシミュレーションを実際に実行してみて、その処理時間を計測しました。

用意したコンピュータのスペック [解説3]
・コンピュータA:Intel Core i9 @ 2.80 GHz(10コア、20スレッド)
 個人向けPCを想定。コア数は少なく、コア当りの性能が高い。
・コンピュータB:Intel Xeon Gold @ 2.10 Hz(20コア、40スレッド)× 2基
 データセンタ向けサーバを想定。コア数は多く、コア当りの性能は低い。

SLAMシミュレーション
シミュレータの構成は以下のようになっています。

スクリーンショット 2021-04-12 14.19.24

            [論文1] より引用

ロボット用ソフトウェアプラットフォームである ROS(Robot Operating System)をベースに、3次元ロボットシミュレータ Gazebo を組み合わせることで、SLAM処理を実現しています。ロボットモデルには TurtleBot3 [解説4] を、SLAMアルゴリズムには Gmapping [解説5] を使っています。

実験方法
キーボード操作でロボットを操縦するプログラムを利用し、シミュレータ上のロボットを移動させることで地図作成を行います。ROSのGmappingモジュールには、周辺環境をスキャンするのにかかる時間を計測する関数が用意されています。この関数を利用し、1回ごとのセンシング+マッピングの時間を計測します。以下はマッピングのイメージです。左側がシミュレータ上でロボットを動かす画面、右側がその結果作成された地図です。前方の壁にロボットが到達した時点で測定を終了します。

スクリーンショット 2021-04-12 15.22.22

            [論文1] より引用

何がわかったの?

処理時間を計測した結果は以下のようになりました。

スクリーンショット 2021-04-12 15.22.47

            [論文1] より引用

縦軸が1回のSLAM処理にかかる時間、横軸がシミュレーションの経過時間です。これらの結果から、以下のことがわかりました。
・単一のSLAM処理では、CPUシングルスレッドの性能が重要。
 (コア当りの性能が高いコンピュータAの方が処理時間が短い。)
・複数のSLAM処理を行う場合には、マルチスレッド性能が重要。
 (コア当りの性能は低いが、コンピュータBは並列度を高くできる.)

→ つまり、SLAM処理の規模に応じてCPUを選択することが重要!

今後どうするの?

今回の実験は単一ロボットでの測定だったので、今後は複数ロボットでの実験を行っていく予定です。また、ロボットシミュレーション(Gazebo)を別のコンピュータ上で実行することで、SLAM単体の処理性能も評価します。


[解説1] エッジコンピューティング環境とは、インターネットを介したクラウド上のコンピューティング環境との対比で定義され、今回の場合は、実際にロボットが動いている環境の近くに設置されるPCやサーバを意味します。
[解説2] SLAMは、自己位置推定と環境地図の作成を同時に行う技術のことで、ロボットの自律移動や自動運転を行う際に必須の技術です。大きな森の真ん中で迷子になってしまったとき、皆さんならどうやって出口を見つけようとするでしょうか? ランドマーク(目印)を見つけることで基準点を定めながら、周辺を少しづつ探索してみて自分の頭の中に地図を作成し、その地図の中で自分がどこにいるかを確認しながら、徐々に探索範囲を拡げていくのではないでしょうか? SLAMも同様の仕組みで、自己位置推定をしながら、未知の空間の地図を作っていきます。
[解説3] より詳細なコンピュータのスペックについては、[論文1] をご参照ください。本発表では、主にCPUの違いに着目しているので、ここではCPUの種類のみ記載しました。
[解説4] TurtleBot3 は、自律移動ロボットアプリケーションの研究・開発のために提供されている、低価格ロボットプラットフォームです。大学等の教育・研究機関で広く利用されており、ROSの標準プラットフォームとしてサポートされているので、簡単に利用を開始できる点が特徴です。同名のシミュレーションモデルも提供されています。
[解説5] Gmapping は、センサーとしてLiDARを用いるLiDAR SLAMの一種で、周辺環境を点群データとして計測し、ベイズフィルタを用いて地図の点群を生成するアルゴリズムです。ROSでは、SLAM処理用に同名のモジュールが提供されています。


お届けInfo デリバリー担当:
渡辺知恵美(筑波技術大学)/取材依頼、発表当日デリバリー
加藤由花(東京女子大学)/note記事執筆

お届けInfo メタ担当:
鎌田真由美(日本マイクロソフト)

この記事が気に入ったらサポートをしてみませんか?