LoginSignup
7
1

はじめに

Nav2 ドキュメントのセットアップガイドによると TFツリーをREP 105に従って図1のように /map/odom/base_link の変換を公開する必要がある とあるが、図2のように /odom フレームなしで /map/base_link の構成で動かすことができる。

この記事では/odom フレームなしでNav2を動かす手順についてTurtleBot3とGazebo Classic環境を用いて説明する。

なおこの記事では/odomフレームの存在理由については解説しないものとする。

             図1

             図2

環境

OS : ubuntu22.04LTS
ROS : ROS2 Iron (Humbleでも可)

ドキュメント通りNav2がインストールされており以下のサンプルが実行できる環境であること

 ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False

手順

おおまかな手順

  1. Gazebo のdiff driveから出るodometryのframe_idをmapに変更する。
  2. nav2 parameter ファイルのglobal_frameのodomの部分をすべてmapに変更する。
  3. 通常通り起動する

必要なパッケージのインストール

sudo apt install ros-$ROS_DISTRO-navigation2
sudo apt install ros-$ROS_DISTRO-nav2-bringup
sudo apt install ros-$ROS_DISTRO-turtlebot3-gazebo
source /opt/ros/$ROS_DISTRO/setup.bash
export TURTLEBOT3_MODEL=waffle
export GAZEBO_MODEL_PATH=$GAZEBO_MODEL_PATH:/opt/ros/$ROS_DISTRO/share/turtlebot3_gazebo/models

turtlebot3のsdfファイル編集

odometry_frameのodomをmapに変更する。
(直接編集するのがいやな場合はコピーして別の場所にうつす)

/opt/ros/iron/share/nav2_bringup/worlds/waffle.model
<         <odometry_frame>map</odometry_frame>
---
>         <odometry_frame>odom</odometry_frame>

nav2 parameterのyamlファイル編集

Local costmapなどframeがodomになっている箇所をすべてmapに変更。

/opt/ros/iron/share/nav2_bringup/params/nav2_params.yaml
190c190
<       global_frame: map
---
>       global_frame: odom
312c312
<     local_frame: map
---
>     local_frame: odom

実行

sdf, yamlファイルをコピーして編集した場合、引数でファイルの絶対パスを指定。
(amclも起動しているがあってもなくても変わらないので無視)

ros2 launch nav2_bringup tb3_simulation_launch.py headless:=False robot_sdf:='/home/user/waffle.model' params_file:='/home/user/nav2_params.yaml'

TF 構成 (/odomがない)

frames.png

おわりに

odom フレームなしでmap → base_linkの構成でNav2を動かす方法について解説した。
応用事例としてはAutowareのTF構成がmap → base_linkとなっているので、AutowareのLocalizationモジュールで自己位置推定した結果を直接入力してNav2を動かしたりできる。

そもそもodomフレームとは何か?何故odomフレームが必要なのか?については以下の記事を読んで下さい。

参考

7
1
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
7
1