LoginSignup
14
11

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-07-24

目次

  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.
14
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
11