2016年10月23日日曜日

g_mappingを使用した地図の作り方(後半 最後まで)

こんにちは。

ちょっと放置してしまってた分のメモになります。
Starting a Map Server and Looking at a MapとSummary部分のまとめです。


Starting a Map Server and Looking at a Map

この前の回で取得した YAMLファイルを使用して、ROSで地図を使います。
YAMLファイルは、resolution(map per pixel), 原点の場所、threshold(通行可能か)などの情報を含みます。

roscoreが実行される状態で、以下のコマンドでmap serverをstartします。

$ rosrun map_server map_server map.yaml

このコマンドで、2つのtopicがpublish される。

1. nav_msgs/OccupancyGrid
2. nav_msgs/MapMetaData

[づまメモ]
中身をみたらOccupancyGridはint8[] dataの形なので、各グリッドに対応したOccupancyの値が多分入るんじゃないかな、と思った。
- map_metadataは地図のサイズ(width * height)、resolution(1セルの1辺の長さ)などが書いてある。
- rvizを使うと、実際にYAMLファイルに入っている内容が可視化される。

map_serverの起動は以下のコマンドで行う。

$ roscd mapping/maps
$ rosrun map_server map_server willow.yaml

別のターミナルでrvizを実行する。

$ rosrun rviz rviz

Mapのtypeを追加し、topic名を/mapにし、fixed frameを/mapにすると、地図っぽい図が表示される。

[づまメモ]
この文だとなんのことやらわからんので実際にやってみたほうがよさそう。

今回のサンプルのmapは、PR2ロボット用にレーザーレンジファインダのデータとslam_gmappingを使った地図になります。(以下、作った地図についてのコメントが回てあった。)

1. not axis-aligned
最終的にできたmapがちょっと回転しちゃってるのを修正するのもできるよ、と書いてあった。詳細不明

2. the map is quite messy
データが不十分な部屋とかは自動で入れなかったりする可能性はある。

3. 右下の黒い塗りつぶしについて
gimpとか使ってロボットに入って欲しくない部屋黒く塗りつぶしたりできる、のかな。

Summary

この章ではgmapingの使い方と、rosbagの使い方の説明がありました。

- map作るのは未だに条件によっては結構大変ですよ、と。(安いロボットだったりしょぼいセンサだったり)
- 設定できるパラメータ色々ある、wiki(http://wiki.ros.org/gmapping?distro=indigo)とか論文とか読むとよろしい。
- でもパラメータいじりをやりすぎてもあんま本質的じゃないかも。
- まーとりあえず何回かやってみて感覚をつかみましょう。

みたいなまとめでした。おしまい。

やっとChapter9読み終わった。
次は素直にChapter10のNavigating About the Wolrdに進むのが自然かなぁ。どしよ。
一回色々試しに作ったソースコードやらまとめた方がいいような気もしてきた。

0 件のコメント:

コメントを投稿