Raspberry Pi Catを使った地図作成方法をご紹介します

こんにちは、satoです。
前回のエントリではRaspberry Pi Catの大きな特徴として「走破性能が向上し、屋外走行が可能」なことを挙げました。
今回はその特徴を生かして自己位置推定をしながら地図作成をする様子と具体的な使用方法をご紹介します。

地図作成の様子

まずは、地図作成をした際の動画をご覧ください。屋内での地図作成の様子と屋外での地図作成の様子を簡単に紹介する2分ほどの動画です。

解説

Raspberry Pi Catに測域センサ(UST-10LX)を搭載し、操縦者が家庭用ゲームコントローラを用いてRaspberry Pi Catを操作しています。SLAMにはgmappingを用いています。

Raspberry Pi Mouseでは屋内での地図作成ができていましたので、Raspberry Pi Catでももちろん屋内で地図作成ができます。Raspberry Pi Catでは、それだけではなく、屋外でも地図作成ができています。
屋外は屋内よりも大きな段差があったり、自己位置推定のためのランドマークが屋内よりも少ない場合が多いので、高い走破性能と正確な走行ができることの両方が必要です。Raspberry Pi Catには地図作成に十分な能力が備わっています。

今回のデモンストレーションではRaspberry Pi Mouse用に作成されたソフトウェアを少し改良するだけでRaspberry Pi Catに用いることができました。詳細については制御方法で説明しています。

※ Raspberry Pi Catは屋外を走行できますが、すべての段差が越えられるわけではありません。また、走行場所の舗装状態によっては走行できないような場所も存在します。安全には十分に注意してご利用ください。

作成した地図データ

今回紹介したデモンストレーションではそれなりに広範囲を測定できるセンサを用いていることもあり、比較的綺麗な地図が作成できていることを確認できます。

作成した地図データはGitHub上で公開しています。

制御方法

ROSで制御できるので、オープンソースソフトウェアとして開発されているROSパッケージを用い、Raspberry Pi Catで簡単に地図作成ができます。今回のデモンストレーションでは下記のソフトウェアを用いました。

rt-net/raspicat_ros

Raspberry Pi Catを制御するためのROSパッケージで、ryuichiueda/raspimouse_ros_2をベースに開発しました。
移動速度と旋回速度の指令を送るだけでRaspberry Pi Catを制御することができるようになります。今回のデモンストレーションではRaspberry Piでこのノードを起動しています。

rt-net/raspicat_gamepad_controller

rt-net/raspicat_rosと組み合わせてRaspberry Pi Catを操作するためのROSパッケージです。
zaki0929/raspimouse_game_controllerをベースに開発しました。
家庭用ゲームコントローラを用いてゲーム感覚でRaspberry Pi Catを操作することができます。今回のデモンストレーションではRaspberry Piにコントローラのレシーバ(USB接続)を接続し、このノードを起動しています。

rt-net/raspicat_slam

地図作成をするためにgmappingとrt-net/raspicat_gamepad_controllerをまとめて起動するためのパッケージです。ryuichiueda/raspimouse_slamをベースに開発しました。
もともと計測用と地図作成のための演算用にノードを分けられるよう、起動ファイルが作成されているので、Raspberry Piを計測用に、Raspberry Pi Catに搭載したノートパソコンを地図作成用に使えるようにしました。
さらに、USB接続の測域センサとEther接続の測域センサの両方のセンサからの情報取得に対応しました。今回のデモンストレーションではRaspberry Piで測域センサの情報を取得、配信するためのノードを、ノートパソコンで測域センサの情報受信し、地図作成のためのノードを起動しています。

まとめ

Raspberry Pi CatはRaspberry Pi Mouseをスケールアップしたものなので、ROSで制御できます。Raspberry Pi Mouse等ですでに活用されている既存のソフトウェア資産を生かすことができる事例を紹介しました。
また、Raspberry Pi Catのハードウェアの特徴として、屋内だけでなく屋外でも走行できることがあり、それを地図作成を行うデモンストレーションで紹介しました。その際に制御に用いたソフトウェアについても紹介しました。

次回は上田隆一先生 (千葉工業大学) の「Raspberry Piで学ぶ ROSロボット入門」を読みながらRaspberry Pi Catの制御のためにROSパッケージを作成する方法を紹介します。
[追記]
「Raspberry Pi Catと書籍「Raspberry Piで学ぶ ROSロボット入門」でROS入門」というタイトルで公開しました。

Raspberry Pi Catと書籍「Raspberry Piで学ぶ ROSロボット入門」でROS入門