ROS演習8-2019:地図作成・自己位置推定 (gmapping, amcl)

この記事は私が金沢工業大学ロボティクス学科で担当している2019年度後学期開講の講義ロボットプログラミングⅡ用です。今回は地図作成にgmappingパッケージと自己位置推定にamclパッケージを使いロボットにナビゲーションをさせましょう! 本記事を以下の記事を参考にしています。

なお、gmappingは占有格子地図をベースとしたFastSLAMのパッケージで、amclはモンテカルロ位置同定の一種であるAdaptive Monte Carlo Localizationのパッケージとなっています。

1. 地図生成

(1) 端末を3つ開き以下のコマンドを実行する。

gazeboシミュレータを起動。ROS演習7-2019の演習準備を実行し、事前に建物の3Dファイルfmt_world.tarをダウンロードして指定場所に保存する必要あり。

  • $ export TURTLEBOT3_MODEL=burger
  • $ roslaunch turtlebot3_gazebo turtlebot3_fmt_world.launch

地図生成のgmappingを起動

  • $ export TURTLEBOT3_MODEL=burger
  • $ roslaunch turtlebot3_slam turtlebot3_slam.launch slam_methods:=gmapping
  • 注1:rvizがOpenGL関係のエラーで落ちる場合は、以下の1行を.bashrcの最後に付け加える
    • export LIBGL_ALWAYS_SOFTWARE=1
  • 注2:エラーがでる場合はgmappingのパッケージが入っていない可能性がありますので、以下のコマンドでインストールしてください。
    • sudo apt install ros-melodic-gmapping

(2) 端末を開き、以下のコマンドでロボットを動かし、地図を作る。

  • $ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch

(3)  端末を開き、以下のコマンドで地図を保存する。mymapは保存する地図名なので適宜変更する。

  • $ mkdir  ~/maps
  • $ rosrun map_server map_saver -f  ~/maps/mymap

 

2. ナビゲーション

一度開いている端末を全部閉じ、ノードを落とす。

(1)  gazeboシミュレータを起動

  • $ export TURTLEBOT3_MODEL=burger
  • $ roslaunch turtlebot3_gazebo turtlebot3_world.launch

(2) 自己位置推定ノードの起動
上で作成した地図を使ってナビゲーションをする。

  • $ export TURTLEBOT3_MODEL=burger
  • $ roslaunch turtlebot3_navigation turtlebot3_navigation.launch map_file:=$HOME/maps/mymap.yaml

(3) (2)のコマンドで rvizも起動するが、rvizを別に起動したい場合は以下のコマンドを使う。

  • $ rviz -d `rospack find turtlebot3_slam`/rviz/turtlebot3_navigation.rviz

(4) ロボット初期位置の設定
上で起動したrviz(上図)の”2D Pose Estimation”をクリックして選択し、下図シミュレータのロボットの向きと位置が合うように、rviz上でロボットの位置と向きを設定する。ロボットの位置にマウスのカーソールを持って行き、ロボットの向きにドラッグすると設定終わり。

(5) ゴールの設定
次にrvizの”2D Nav Goal”をクリックして、初期位置を設定したのと同様に、ゴールの位置と向きを設定する。設定するとロボットが自動で動き出す。

3.演習

  • 上の説明に従って建物の地図を作り、スタート地点からゴールまでロボットをナビゲーションさせてみよう。スタート地点は上図で上空に伸びている青い線、初期位置(0, 0)、ゴールは上図の右上にあるポールです。なお、地図上の格子は一辺が1[m]です。どうなるかな?

終わり

コメント

タイトルとURLをコピーしました