ROSの勉強 第19弾:環境の地図作成に向けて


#プログラミング ROS< 環境の地図作成に向けて >

はじめに

1つの参考書に沿って,ROS(Robot Operating System)を難なく扱えるようになることが目的である.その第19弾として,「環境の地図作成に向けて」を扱う.

環境の地図作成に向けて

ここでは,環境の地図を作成するにあたって必要な前知識を獲得する.主に,ROSにおける地図とrosbagについてである.

ROSにおける地図


以下にYAMLファイルの一例を示す.

map.yaml
image: map.pgm  #mapという名前で拡張子がPGMの画像データ名 ほかにもPNG, JPGなどもサポートされている
resolution: 0.1  #解像度:0.1[m]の正方形セル
origin: [0.0, 0.0, 0.0]  #原点の位置
occupied_thresh: 0.65  #障害物が占有しているとする閾値
free_thresh: 0.65  #障害物が占有していないとする閾値
negate: 1  #ROSで処理する前にセルの値を反転

それぞれの説明は上記に示すとおりである.最下行のnegateを行う理由は,はじめに示したとおり,障害物が占有していないところを明るく(白),占有していないところを暗く(黒)としたいためである.デフォルトでは,逆になっている.

rosbag

次にデータを記録する方法について学ぶ.ここで,使うのはrosbagである.以下に簡単な説明を示す.

上の説明で,-aをつけると,配信しているトピックをすべて記録できると示したが,特にPR2のように多くのセンサを搭載したロボットでは,大量のデータを記録してしまうことになる.また,rosbagはCtrl-Cで止められるまで記録し続ける.

さらに,rosbagのファイルについては,rosbag infoで見ることができる.
以下に一例を示す.

~$ rosbag info laser.bag

#以下,表示結果
path:          laser.bag  #対象ファイル
version:       2.0
duration:      1:44s (104s)
start:         Mar 04 2021 10:04:13.44 (1310058253.44)
end:           Mar 04 2021 10:05:58.04 (1310058358.04)
size:          8.2 MB
messages:      2004
compression:   none [11/11 chunks]
types:         sensor_msgs/LaserScan [90c7ef2dc6895d81024acba2ac42f369]
topics:        base_scan   2004 msgs    : sensor_msgs/LaserScan

これにより,bagファイルに記録されている時間,記録の開始時刻と終了時刻,ファイルの大きさ,メッセージ数,メッセージ(とトピック)の内容などを知ることができる.これは,記録したbagファイルに,期待した情報が記録されているかを確認するのに便利である.

また,rosbagは,ロボットの新しいアルゴリズムのデバッグをするときに非常に便利なツールである.例えば,アルゴリズムのデバッグのとき,生のセンサデータを使う代わりに,rosbagで記録しておいた代表的なデータセットを再生することでアルゴリズムにセンサデータを与えるようにする.こうすることで,アルゴリズムは毎回,まったく同じデータを処理することができるようになる.この再現性は,デバッグの効率を上げてくれる.ロボットの動作の変化は,新しく観測された未知のセンサデータ入力によるものではなく,すべてコードを変えたことによるものであることが保証される

感想

今回は,まだ地図作成に入っていないが,ROSの地図について知り,rosbagという強力なツールについて学ぶことができた.地図の作成については今までに経験がないため,より慎重に理解していきたいと思う.

参考文献

プログラミングROS Pythonによるロボットアプリケーション開発
        Morgan Quigley, Brian Gerkey, William D.Smart 著
                       河田 卓志 監訳
            松田 晃一,福地 正樹,由谷 哲夫 訳
                  オイラリー・ジャパン 発行