マッピングでは、自律移動ロボットの実機を動かして、実在する部屋の地図を作成します。
ナビゲーションでは、自律移動ロボットの実機が、作成した地図に基づき、自己位置を認識し、目標位置への経路を計画し移動します。

自律移動ロボット(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使用)