TurtleBot3で地図作成からナビゲーションまで

2018年11月27日

はじめに

アルバイトの室岡です。
現在、Fixstars Autonomous Technologiesでロボットの自律走行に向けた課題抽出に取り組んでいます。今回TurtleBot3というロボットを用いて社内の地図作成をし、ナビゲーションまでできたので報告します。

TurtleBotとは

TurtleBotとは低価格なパーソナルロボットキットで、ロボットベンチャー企業であるWillow Garageが最初に作りました。Willow Garageは他にもロボット用フレームワークであるROSやパーソナルロボットであるPR2を作ってきましたが2014年に事業を停止してしまいました。

現在はROBOTISがTurtleBotを引き継ぎ、最新ではTurtleBot3がリリースされています。TurtleBot3はBurger、Waffle、Waffle Piの三種類あります。今回はその内メインコンピュータがRaspberry Pi3 Model Bを採用しているWaffle Piを使用します。

TurtleBotのハードウェア、ソフトウェア

TurtleBot3はRaspberry Pi3 Model BやIntel JouleなどのコンピュータとArduinoベースの制御ボードOpenCRで構成されています。センサ・アクチュエータとしてはLiDARやカメラ、エンコーダなどのセンサに加えて移動用モータを備えています。

もちろんTurtleBotはROSに対応しており、TurtleBotの起動からSLAM、ナビゲーション、遠隔操作など多くのROSのパッケージも公開されています。今回使用したROSのバージョンはKineticです。

ソフトウェア、ハードウェアに関しては基本的にオープンになっているので自分で拡張することも可能です。

使用したパッケージの説明、簡単なアルゴリズム説明

地図作成

地図作成に関わる技術としてはSLAMを用います。ROSのSLAMパッケージを用いるとSLAMの知識が無くても地図作成ができ、またTurtleBot3用のROSのSLAMパッケージマニュアルも公開されています。

TurtleBot3に搭載されているLiDARで環境の2次元スキャンをし、移動しながら地図を作っていきます。SLAMにはいくつか種類があるのですが、今回は最も有名なgmappingを使いました。gmappingの処理内容としては、パーティクルフィルタを用いて自己位置推定すると同時に、その自己位置情報をもとに地図を作成していきます。

ナビゲーション

ナビゲーションに関しても、TurtleBot3用のROSパッケージマニュアルがあります。

ゴール位置までのナビゲーションをするために、地図やセンサ情報をもとにしたコストマップを作成し、そのコスト情報をもとに経路計画をします。これらは大域的な処理と局所的な処理に分けられます。

大域的な処理としては、予め作っておいた地図情報を元に壁や障害物があるところにコストを高くし、コストが閾値を超えないような経路を計画します。局所的な処理としては、走行時に得られたLiDARのセンサ情報から人や以前なかった障害物を検知してリアルタイムで経路を補正します。

実験結果

TurtleBot3のメインコンピュータはRaspberry Pi3 Model Bであり性能はそこまで高くないのでノートパソコンをROSのマスターにします。

ロボットシステムは下記画像のようになっており、緑色のROSノードが互いにROSの規格でプロセス間通信しています。

地図作成

ノートパソコンで roscore を起動したうえで、

TurtleBot上のPCで

$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

ノートパソコンで

$ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping

を実行します。

そのまま遠隔操縦でTurtleBot3を動かすとSLAMにより地図が作成されます。作成された地図は画像形式で保存され、下記画像が今回作成した社内の地図です。

地図情報を格納するデータ構造はOGM(Occupancy Grid Map)を用いており、黒がOccupancy、白がFree、灰色がUnknownです。

ナビゲーション

作成したこの地図をもとにナビゲーションしてみます。

TurtleBot上のPCで

$ roslaunch turtlebot3_bringup turtlebot3_robot.launch

ノートパソコンで

$ roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/map.yaml

起動したRVizでまず、「2D Pose Estimate」でTurtleBot3の自己位置を教えてあげます。次に「2D Nav Goal」でゴール位置を指定すると自動で経路計画をして移動を始めます。下記画像がその様子で、小さい緑の矢印群がパーティクルフィルタによる自己位置、赤い矢印がゴール位置、黒い線が計画された経路です。TurtleBot3の周りは青色や赤色に覆われておりこれがコスト情報で、なるべく青い部分を通るように経路が計画されています。

地図を作成した時にはなかった障害物や人がそばを歩いている状況でも、それらを回避するような経路が計画されており、安全な経路計画が実現できていることが分かりました。

所感

今回地図作成、ナビゲーションで使用したセンサは2万円にも満たないLiDARだったのですが、作成した地図もかなり綺麗でありしっかり経路も計画することができて驚きました。

今後はこの既成品のTurtleBot3にDepthカメラなどを搭載するなどカスタマイズしてより幅広い動きが実現できたらと思います。

Tags

About Author

MurookaTakayuki

Leave a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Recent Comments

Social Media