LoginSignup
0
0

More than 1 year has passed since last update.

ROS2におけるパラメータのdeclareとundeclareに関わる諸事

Posted at

ROS2導入&レクチャー

概要

パラメータはyamlファイルで初期値を設定できる.さて,パラメータを

  1. declare_parameterで宣言
  2. undeclare_parameterで削除
  3. declare_parameterで宣言

など繰り返し,二回目以降の宣言の時にyamlファイルよる初期値設定はどうなるのか?と思ったのでやってみた.

実験

  • ROS2バージョン
    • foxy
    • 2021/08/06
  • やり方
    • あるパラメータparamを宣言,関数としての初期値は0,yamlファイルでは1
      • declare_parameter("param", 0)を使用
      • yamlファイルでは以下と設定
        • param: 1

基本の確認

まずはyamlファイルの有無で変わるか確認.当たり前の結果をちゃんと見てみよう!ってところ.

  1. yamlファイルなしで対象を実行
    • ros2 run
    • 結果は0
  2. yamlファイルありで対象を実行
    • ros2 run --ros-args --params-file
    • 結果は1

複数回の宣言とyamlファイルの確認

複数回の宣言とyamlファイルの設定との関係を見るために,declare/undeclareを実行中に変えられるようにプログラムした(サービスで指令を送信してdeclare/undeclareさせた).

  1. yamlファイルありで対象を実行
    1. パラメータを宣言(declare)
    2. ros2 param getでparamの値を取得
      • 結果は1
    3. パラメータを削除(undeclare)
    4. ros2 param getでparamの値を取得
      • 結果は「そんなパラメータないよ」みたいなメッセージ
    5. ros2 param getでparamの値を取得
      • 結果は1

結果

というわけで,declareしたときにyamlファイルの値が設定される.

途中でyamlファイルの中身を書き換えたら?

  1. yamlファイルありで対象を実行
    1. パラメータを宣言(declare)
    2. ros2 param getでparamの値を取得
      • 結果は1
    3. パラメータを削除(undeclare)
    4. ros2 param getでparamの値を取得
      • 結果は「そんなパラメータないよ」みたいなメッセージ
    5. yamlファイルの中身をparam: 2に書き換え
    6. ros2 param getでparamの値を取得
      • 結果は1

結果

つまり,declareしたときにyamlファイルが読み込まれるのではなく,起動時にyamlファイルの中身が読み込まれ,保存されていて,それが使用されるっぽい.

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