ナビゲーションでは、自律移動ロボットの実機が、作成した地図に基づき、自己位置を認識し、目標位置への経路を計画し移動します。
自律移動ロボット(AMR)のマッピング
上の画像は、自律移動ロボットの様子(左下)と、地図生成中のPC画面(右)
自律移動ロボット(AMR)実機で地図作成の準備
ロボットのモデル、モータドライバと通信するプログラム(zlac_driver)、オドメトリを配信するプログラム( odometry_publisher)(新規作成)を起動します。
オドメトリとは車輪の回転角度センサ(エンコーダ)から計算した自律移動ロボットの現在位置と向きのことです。
これらのプログラムを以下のlaunchファイルでまとめて起動します。
ros2 launch hajimecart_bringup robot.launch.py
LiDARを起動します。
ros2 launch rplidar_ros rplidar.launch.py
地図作成プログラムを起動します。
ros2 launch hajimecart_navigation online_async_launch.py use_sim_time:=False
地図作成の様子を画面に表示するために、RViz2を起動します。
ros2 launch hajimecart_description display_nav.launch.py use_sim_time:=False
ロボット実機で地図作成
ジョイパッドで自律移動ロボットを操縦し、部屋を周ります。
ros2 launch teleop_joy teleop_joy.launch.py
RViz2の画面上に生成されている地図が表示されます。
自律移動ロボットが動いていくと地図が生成されていきます。画面を見ながら地図の出来具合を確認します。
作成した地図を保存
地図がよい具合に出来上がったら、地図を保存します。この例では、ファイル名 my_mapに地図を出力します。
ros2 run nav2_map_server map_saver_cli -f my_map
動画
地図作成の様子を動画にしました。
自律移動ロボットでセンサ(LiDAR)を使用して部屋の地図を作成する(ROS2 Humble使用)
自律移動ロボット(AMR)のナビゲーション
上の画像は、自律移動ロボットの移動中の様子(左下)と、ナビゲーション中のPC画面(右)
ナビゲーションでは、自律移動ロボット(AMR)が、自己位置を認識し、目標位置への経路を計画し移動します。
自律移動ロボット(AMR)実機でナビゲーションの準備
ロボットのモデル、モータドライバと通信するプログラム(zlac_driver)、オドメトリを配信するプログラム( odometry_publisher)を、まとめて起動します。
ros2 launch hajimecart_bringup robot.launch.py
LiDARを起動します。
ros2 launch rplidar_ros rplidar.launch.py
ナビゲーションプログラムを起動します。地図は上で作成した地図を指定します。
ros2 launch hajimecart_navigation navigation2.launch.py use_sim_time:=False map:=${HOME}/hajimecart_ws/src/hajimecart_navigation/maps/my_map.yaml
画面表示および操作用にRViz2を起動します。
ros2 launch hajimecart_description display_nav.launch.py use_sim_time:=False
RViz2を起動すると、画面上に地図が現れます。
自律移動ロボットの現在位置と向きを設定
自律移動ロボットの現在位置と向きを設定します。
RViz2の上のメニューから「2D Pose Estimate」をクリックします。
表示された緑色の矢印で、矢印の起点がロボットの位置、矢印の先がロボットの向きになるように設定します。
設定したロボットの現在位置の周りに、緑色の点群が表示されます。
<自己位置の推定>
車輪の回転量から計算した位置(オドメトリ)と、LiDARの情報と地図を照らし合わせて、確率な方法で求めます。
地図の黒線の周囲が水色とピンク色で表示されます。
<グローバル・コストマップ>
地図にある障害物の情報を管理します。
ロボット近辺ではコストマップの色が濃くなります。
<ローカル・コストマップ>
センサ(LiDAR)による障害物の情報を管理します。
自律移動ロボットの目標位置と向きを設定
目標地点を設定します。
RViz2の上のメニューから「Nav2 Goal」をクリックします。
表示された緑色の矢印で、ロボットの目標位置と向きを設定します。
現在位置と目標位置の間に、赤い線が引かれます。
<グローバル・パス(経路)>
地図に基づき、障害物を避けて(グローバル・コストマップ)、目標位置までの経路です。
ロボットはおおむね赤い線に沿って進みます。
<ローカル・パス(経路)>
円弧状の青い線はグローバルの経路に沿うように、障害物を避けて(ローカル・コストマップ) 、ロボットの加速度を考慮した経路です。
自律移動ロボットの移動
径路が計算されると、自律移動ロボットは移動を始めます。
ロボットには、移動機構による移動方向の制限、速度や加速度の制限があります。それらを考慮し、さらに、LiDARにより検出された地図にない新たな障害物を避けて進みます。
目標位置と向きに到達するとロボットは停止します。
動画
自律移動ロボットでセンサ(LiDAR)を使用してナビゲーションにより部屋を移動する(ROS2 Humble使用)