Help us understand the problem. What is going on with this article?

Navigation Stack を理解する - 4.1 gmapping: ROSで遊んでみる

More than 3 years have passed since last update.

目次

  1. 導入
  2. move_base (ナビゲーション)
    1. ROSで遊んでみる
    2. ソフトウェア構成をみる
  3. amcl (自己位置推定)
    1. ROSで遊んでみる
    2. ソフトウェア構成をみる
    3. 原理をみる (準備編)
    4. 原理をみる (応用編)
  4. gmapping (地図生成)
    1. ROSで遊んでみる ← いまココ
    2. ソフトウェア構成をみる
    3. 原理をみる(応用編)
    4. 原理をみる(準備編 その1)
    5. 原理をみる(準備編 その2)

はじめに

本節では,これまたNavigation Stack の子分的存在の一つである,gmapping について記述します.いわゆるSLAM 問題の部分で,本投稿記事の中で理解に一番苦しむところです^^;

やりたいことは,地図生成と自己位置推定を同時に実行することです.前節amclでは,地図が天から降ってきたことを前提としてことを進めていましたが,ここでは地図も作っちゃうよ,というお話です.

さて,ソフトウェア構成内の位置づけとしては,下記の図に示すとおりです.

  • ROS Wiki の図中
    01_位置づけ1.png

  • 導入部で示したパッケージの図中
    02_位置づけ2.png

導入でも説明したとおり,gmapping はnavigation stack の中にあるパッケージではありません.slam_gmapping というメタパッケージの配下にあるのです.別にこれである必要性はないのですが,一番広く使われているということでgmapping について記述している,という位置づけです.

環境

Husky Gmapping Demo について

gmapping を使ったSLAMを体感します.こんどは地図がない状態からスタートです.

03_チュートリアル位置づけ.png

ROSで遊んでみる

遊んでみましょう.

インストール

Navigation Stack を理解する - 2.1 move_base: ROSで遊んでみる でインストールしたパッケージで十分です.

各種launch ファイルの起動

i. Husky シミュレータの起動(gazebo)

$ roslaunch husky_gazebo husky_playpen.launch

01.png

ii. ビジュアライザの起動(rviz)

$ roslaunch husky_viz view_robot.launch

iii. gmapping の起動

$ roslaunch husky_navigation gmapping_demo.launch

amcl の時と同様に,ワールド座標系の原点は /map フレームとしておきます.初期状態では,地図が存在しないことが分かります.
03_初期状態.png

vi. 地図の保存
後述するような方法でロボットを色々と動かした後,地図を作成した後,地図を保存します.

$ rosrun map_server map_saver -f <filename>

SLAM を体感する

Navigation Stack を理解する - 2.1 move_base: ROSで遊んでみる と同じ要領で目標を設定すれば,動きます.move_base, amcl とも異なる挙動をするのが見て取れます.

地図が徐々に作成されていく

move_base では地図が作られることはないので,ずっと見通しが悪いままです.一方amcl だと最初から地図があるのでチートだろ!となるわけです.でもgmapping では,少しずつ地図が作られている様子を確認することができます.

04_地図作成過程.png

特性上,一回通っただけで綺麗に地図を作るのは難しいです.隙間ができて気になるときは,何回かそこを通らせれば綺麗な地図ができます.
05_地図作成過程2.png

こんな要領で色々なところをロボットに走らせます.まずは特徴がある狭い範囲でしっかり足固めをして,足固めしたところからじわりじわりと広げていくように探索をすると,うまく地図が繋がります.

いきなり突拍子もないところから探索をすると,どことどこが繋がっているのかよくわからなくなり,地図がずれやすくなってしまいます.

そんなことをひたすら繰り返しているうちに,地図が完成します.いやー,綺麗に作れると安心しますね^^
05.png

おわりに

遊べるのはこんなところです.とっても簡単に遊ぶことができます.もちろん頑張っているのはgmapping なのですが.引き続き次項以降でその辺りを紐解いていきます.

Next: 4.2 gmapping: ソフトウェア構成をみる
Prev: 3.4 amcl: 原理をみる (応用編)

参考文献

  1. S Thrun, et al., "Probabilistic Robotics", the MIT Press, 2005.
  2. ROS Wiki.
  3. "ros-planning/navigation", github.
  4. "husky_navigation", github.
MoriKen
ロボット研究者を目指す社会人博士です。ぶっちゃけ、へっぽこソフトしか書けませんが頑張ります。
http://lab.cntl.kyutech.ac.jp/~nishida/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした