#プログラミング ROS< 地図サーバ >
##はじめに
1つの参考書に沿って,ROS(Robot Operating System)を難なく扱えるようになることが目的である.その第21弾として,「地図サーバ」を扱う.
##環境
#####仮想環境
ソフト | VMware Workstation 15 |
実装RAM | 2 GB |
OS | Ubuntu 64 ビット |
isoファイル | ubuntu-mate-20.04.1-desktop-amd64.iso |
#####コンピュータ
デバイス | MSI |
プロセッサ | Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz 2.50GHz |
実装RAM | 8.00 GB (7.89 GB 使用可能) |
OS | Windows (Windows 10 Home, バージョン:1909) |
#####ROS
Distribution | noetic |
プログラミング言語 | Python 3.8.5 |
シミュレーション | gazebo |
##地図サーバ
ここでは,前回(https://qiita.com/Yuya-Shimizu/items/515d76ba83d3ce8b208e )作成した地図データをROSで使えるようにmap_server
パッケージのmap_server
ノードを使う.YAMLファイルに適用し,その後rvizでの地図表示についても学習する.
##map_server
以下に,画像を適宜示しながら,地図についてのトピックを配信する様子を示す.
map_serverにmap.yamlを適用して実行
これにより,2つのトピックが配信される.
トピックの確認
上から2つが先ほどの操作により配信されたトピックである.
mapトピック
mapトピックはnav_msgs/OccupancyGrid
型のメッセージで地図そのものに対応する.
map_metaトピック
map_metaトピックはnav_msgs/MapMetaData
型のメッセージでYAMLファイルのデータに対応する.
次に示すのは,map_metaトピックが配信している内容である.
確かにYAMLファイルあったデータと一致している部分があることが分かる.
なお,ここでは見にくかったため示していないが,mapトピックが配信している内容をecho
により確認したところ,-1,0,1の数字で構成された画像データであった.地図そのものということで,たくさんの数字の羅列でうまく画像を切り取れなかったが,地図そのものに対応していることが文字通りであったと確認できた.
##rvizでの表示
以下では,地図をrvizで表示させる様子を,適宜画像を示しながら説明している.
rvizの準備
ここに,画像トピックを呼び込む.
画像の表示
確かに画像が表示された.rviz空間は観る方向を自在に変えられるので,次に示すような俯瞰的な視点にもできる.
##地図の編集
画像編集ファイルを使って,地図を編集することもできる.例えば,ロボットに通ってほしくない場所があった場合,そこを黒で塗りつぶしたり,通路をふさぐようにすると,擬似的な障害物としてロボットは判断してくれる.実際に障害物が無くても地図上ではあるということとできる.ここでは示さないが,本当にお絵かき感覚で黒や白で描けばいいらしい.
##感想
地図サーバを構築し,rvizでも表示できるようになり,いよいよロボットに地図を使わせる準備に入っており,これからの学習がますます楽しみである.また,最後に地図の編集について示したが,これもまたやってみたい.
##参考文献
プログラミングROS Pythonによるロボットアプリケーション開発
Morgan Quigley, Brian Gerkey, William D.Smart 著
河田 卓志 監訳
松田 晃一,福地 正樹,由谷 哲夫 訳
オイラリー・ジャパン 発行