はじめに
Navigation2を使って開発をしていくうえでパラメータ(コストマップやロボットの大きさ、速度・加速度の最大値・最小値などなど)を設定する方法について紹介する小ネタ記事です。
前提として。
自前のパラメタファイルを設定せずにブリングアップする基本的な部分のおさらいをします。
ターミナルを3つ立ち上げてそれぞれに以下のコマンドを打ちます。
まずは、Gazeboのブリングアップ。
ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py
続いて、Nav2のブリングアップ。
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=True map:=/opt/ros/foxy/share/nav2_bringup/maps/turtlebot3_world.yaml
最後に、Rvizを立ち上げましょう。
ros2 run rviz2 rviz2 -d $(ros2 pkg prefix nav2_bringup)/share/nav2_bringup/rviz/nav2_default_view.rviz
すると以下のような描画になります。
ちなみに、今回指定しなかったパラメタファイルはデフォルトで、Navigation2のBringupのパッケージのディレクトリにこっそり提供されています。私の場合、以下のような階層です。
/opt/ros/foxy/share/nav2_bringup/params/nav2_params.yaml
公式。。。?
公式ドキュメント曰く、「ブリングアップのコマンドのオプションとしてparam_file:=(your directory)/~.yaml
みたいに指定すれば自前のデフォルトじゃないパラメタファイルを呼び出せるよ」とのこと。
素直に、デフォルトで提供されているyamlファイルの中身をコピーして、local_castmapのinflation_radiusとcost_scaling_factorをいじります(これをいじれば分かりやすくRvizでCostmapの色が変化するので)。
cost_scaling_factor: 10.0 #default=3.0
inflation_radius: 0.15 #default=0.55
そしてコマンドを打ちました(RvizとGazeboのブリングアップは省略)
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=True map:=/opt/ros/foxy/share/nav2_bringup/maps/turtlebot3_world.yaml param_file:=$HOME/my_param/test01_param.yaml
param_file:=
で指定したパスに置いてあるパラメタファイルを呼び出しているのですが、
ご覧の通り、inflation_radius、つまり、障害物から膨張する分のコストマップをかなり小さくしたにも関わらず、変化がないです。。。公式の言うとおりにしたのに。。。?
ローンチのソースコードを見に行くと。。。
よく目を凝らしていくと、なんとparam_file
と思っていたものは、params_file
でした。。。
改めてコマンドを打ちまして(なお、こちらもRvizとGazeboは省略)、
ros2 launch nav2_bringup bringup_launch.py use_sim_time:=True map:=/opt/ros/foxy/share/nav2_bringup/maps/turtlebot3_world.yaml params_file:=$HOME/my_param/test01_param.yaml
以下のように、障害物の判定によるコストマップの膨張の描画が先ほどより小さくなっているのがわかると思います。
ローンチする際の細かな変数の意味に関しては公式のサイトで確認できます。
AMCLに関するパラメタ以外も公式に載っているのでぜひ確認してみてください。
結論
パラメタファイルを使いたければ、s
を忘れないようにすること!です。
参考