ロボットプログラミングⅡ-2021:ROS2演習10 – ナビゲーション

この記事は金沢工業大学 ロボティクス学科で2021年後学期開講中のロボットプログラミングⅡ用です.
今回はシミュレータを使ったSLAMについて学びます.
なお,この記事は次のサイトを参考にしました.

準 備

  • happy_miniを使う場合は,次のGithubのサイトからHappy Mini TurtleBot3 Simulationsパッケージを次のコマンドでクローンしておく必要があります.turtlebot3  burger,  waffle,waffle_piを使う場合は必要ありません.
    • $ cd ~/colcon_ws/src
    • $ git clone https://github.com/demulab/happy_mini_turtlebot3_sim.git
    • $ cd ~/colcon_ws
    • $ colcon build --symlink-install

ナビゲーションシミュレーションの起動

  • 前回の演習で地図を作成しました.今回はこの地図を使ってナビゲーションを行います.
    • $ export TURTLEBOT3_MODEL=happy_mini
    • $ ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

ナビゲーションノードの実行

  • $ export TURTLEBOT3_MODEL=happy_mini
  • $ ros2 launch turtlebot3_navigation2 navigation2.launch.py use_sim_time:=True map:=$HOME/map.yaml

初期姿勢の推定

  • ナビゲーションを行う前に,まず,初期姿勢を設定する必要があります.次の要領でLIDARのデータと地図を一致させます.
  • RViz2のメニューにある 2D Pose Estimate ボタンをクリックします.
  • 地図上でロボットがいる地点をクリックして,ロボットの進行方向に緑色の矢印をドラッグします.
  • 保存した地図とLIDARのデータが一致するようにステップ1と2を繰り返します.
  • teleop_keyboardノードを次のコマンドで起動します.
    • $ ros2 run turtlebot3_teleop teleop_keyboard
  • 遠隔操作でロボットを少し前後して,下図の左下に見える小さな矢印が一か所に集まるようにします.
     
  • ナビゲーションがうまく実行されるように, Ctrl + C を押してteleop_keyboardノードを落とします.

目標地点の設定

  1. RViz2のNavigation2 Goal ボタンをクリック
  2. 地図上でナビゲーションの目標地点をクリックして,その地点でのロボットの向きをドラッグします.
    • この緑の矢印がロボットの目標地点での姿勢(位置と向き)を表します.
    • 矢印の根本の座標 xy が目標地点の座標で,矢印の向きがロボットの姿勢 θ になります.
    • 位置 x, y, と姿勢θ が設定されたら,ロボットが目標に向けて動き出します.

終わり

コメント

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