Skip to content

パラメータの理解

目標: ROS 2でパラメータの取得、設定、保存、再読み込みの方法を学習します。

チュートリアルレベル: 初心者

所要時間: 5分

背景

パラメータは、ノードの設定値です。パラメータはノードの設定と考えることができます。ノードは、パラメータを整数、浮動小数点数、ブール値、文字列、リストとして格納できます。ROS 2では、各ノードが独自のパラメータを維持します。パラメータの背景については、概念ドキュメントを参照してください。

前提条件

このチュートリアルではturtlesimパッケージを使用します。

いつものように、開く新しいターミナルごとにROS 2をソースすることを忘れないでください。

タスク

1 セットアップ

2つのturtlesimノード、/turtlesim/teleop_turtleを起動します。

新しいターミナルを開いて実行します:

bash
$ ros2 run turtlesim turtlesim_node

別のターミナルを開いて実行します:

bash
$ ros2 run turtlesim turtle_teleop_key

2 ros2 param list

ノードに属するパラメータを確認するには、新しいターミナルを開いて次のコマンドを入力します:

bash
$ ros2 param list
/teleop_turtle:
  qos_overrides./parameter_events.publisher.depth
  qos_overrides./parameter_events.publisher.durability
  qos_overrides./parameter_events.publisher.history
  qos_overrides./parameter_events.publisher.reliability
  scale_angular
  scale_linear
  use_sim_time
/turtlesim:
  background_b
  background_g
  background_r
  qos_overrides./parameter_events.publisher.depth
  qos_overrides./parameter_events.publisher.durability
  qos_overrides./parameter_events.publisher.history
  qos_overrides./parameter_events.publisher.reliability
  use_sim_time

すべてのノードにはuse_sim_timeパラメータがあります。これはturtlesim固有のものではありません。

名前から、/turtlesimのパラメータはRGBカラー値を使用してturtlesimウィンドウの背景色を決定しているようです。

パラメータのタイプを決定するには、ros2 param getを使用できます。

3 ros2 param get

パラメータのタイプと現在の値を表示するには、次のコマンドを使用します:

bash
$ ros2 param get <node_name> <parameter_name>

/turtlesimのパラメータbackground_gの現在の値を調べてみましょう:

bash
$ ros2 param get /turtlesim background_g
Integer value is: 86

これで、background_gが整数値を保持していることがわかります。

background_rbackground_bで同じコマンドを実行すると、それぞれ値69255が取得されます。

4 ros2 param set

実行時にパラメータの値を変更するには、次のコマンドを使用します:

bash
$ ros2 param set <node_name> <parameter_name> <value>

/turtlesimの背景色を変更してみましょう:

bash
$ ros2 param set /turtlesim background_r 150
Set parameter successful

turtlesimウィンドウの背景が色を変更するはずです:

set

setコマンドでパラメータを設定すると、現在のセッションでのみ変更され、永続的ではありません。ただし、設定を保存して、次回ノードを開始するときに再読み込みできます。

5 ros2 param dump

次のコマンドを使用して、ノードの現在のパラメータ値をすべて表示できます:

bash
$ ros2 param dump <node_name>

このコマンドはデフォルトで標準出力(stdout)に印刷しますが、パラメータ値をファイルにリダイレクトして後で保存することもできます。/turtlesimのパラメータの現在の設定をファイルturtlesim.yamlに保存するには、次のコマンドを入力します:

bash
$ ros2 param dump /turtlesim > turtlesim.yaml

シェルが実行されている現在の作業ディレクトリに新しいファイルが見つかります。このファイルを開くと、次の内容が表示されます:

yaml
/turtlesim:
  ros__parameters:
    background_b: 255
    background_g: 86
    background_r: 150
    qos_overrides:
      /parameter_events:
        publisher:
          depth: 1000
          durability: volatile
          history: keep_last
          reliability: reliable
    use_sim_time: false

パラメータのダンプは、将来同じパラメータでノードを再読み込みしたい場合に便利です。

6 ros2 param load

次のコマンドを使用して、ファイルから現在実行中のノードにパラメータを読み込むことができます:

bash
$ ros2 param load <node_name> <parameter_file>

ros2 param dumpで生成されたturtlesim.yamlファイルを/turtlesimノードのパラメータに読み込むには、次のコマンドを入力します:

bash
$ ros2 param load /turtlesim turtlesim.yaml
Set parameter background_b successful
Set parameter background_g successful
Set parameter background_r successful
Set parameter qos_overrides./parameter_events.publisher.depth failed: parameter 'qos_overrides./parameter_events.publisher.depth' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.durability failed: parameter 'qos_overrides./parameter_events.publisher.durability' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.history failed: parameter 'qos_overrides./parameter_events.publisher.history' cannot be set because it is read-only
Set parameter qos_overrides./parameter_events.publisher.reliability failed: parameter 'qos_overrides./parameter_events.publisher.reliability' cannot be set because it is read-only
Set parameter use_sim_time successful

注意

読み取り専用パラメータは起動時にのみ変更でき、その後は変更できません。そのため、「qos_overrides」パラメータにいくつかの警告があります。

7 ノード起動時のパラメータファイルの読み込み

保存されたパラメータ値を使用して同じノードを開始するには、次を使用します:

bash
$ ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>

これは、turtlesimを開始するために常に使用するのと同じコマンドですが、--ros-args--params-fileフラグが追加され、その後に読み込みたいファイルが続きます。

実行中のturtlesimノードを停止し、保存されたパラメータで再読み込みを試してみてください:

bash
$ ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yaml

turtlesimウィンドウは通常どおりに表示されますが、以前に設定した紫色の背景になります。

注意

ノード起動時にパラメータファイルが使用される場合、読み取り専用のものを含むすべてのパラメータが更新されます。

まとめ

ノードには、デフォルトの設定値を定義するパラメータがあります。コマンドラインからパラメータ値を取得および設定できます。また、パラメータ設定をファイルに保存して、将来のセッションで再読み込みすることもできます。

次のステップ

ROS 2通信方法に戻って、次のチュートリアルではアクションについて学習します。

Released under the MIT License.