パラメータの理解
目標: ROS 2でパラメータの取得、設定、保存、再読み込みの方法を学習します。
チュートリアルレベル: 初心者
所要時間: 5分
背景
パラメータは、ノードの設定値です。パラメータはノードの設定と考えることができます。ノードは、パラメータを整数、浮動小数点数、ブール値、文字列、リストとして格納できます。ROS 2では、各ノードが独自のパラメータを維持します。パラメータの背景については、概念ドキュメントを参照してください。
前提条件
このチュートリアルではturtlesimパッケージを使用します。
いつものように、開く新しいターミナルごとにROS 2をソースすることを忘れないでください。
タスク
1 セットアップ
2つのturtlesimノード、/turtlesimと/teleop_turtleを起動します。
新しいターミナルを開いて実行します:
$ ros2 run turtlesim turtlesim_node別のターミナルを開いて実行します:
$ ros2 run turtlesim turtle_teleop_key2 ros2 param list
ノードに属するパラメータを確認するには、新しいターミナルを開いて次のコマンドを入力します:
$ 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
パラメータのタイプと現在の値を表示するには、次のコマンドを使用します:
$ ros2 param get <node_name> <parameter_name>/turtlesimのパラメータbackground_gの現在の値を調べてみましょう:
$ ros2 param get /turtlesim background_g
Integer value is: 86これで、background_gが整数値を保持していることがわかります。
background_rとbackground_bで同じコマンドを実行すると、それぞれ値69と255が取得されます。
4 ros2 param set
実行時にパラメータの値を変更するには、次のコマンドを使用します:
$ ros2 param set <node_name> <parameter_name> <value>/turtlesimの背景色を変更してみましょう:
$ ros2 param set /turtlesim background_r 150
Set parameter successfulturtlesimウィンドウの背景が色を変更するはずです:

setコマンドでパラメータを設定すると、現在のセッションでのみ変更され、永続的ではありません。ただし、設定を保存して、次回ノードを開始するときに再読み込みできます。
5 ros2 param dump
次のコマンドを使用して、ノードの現在のパラメータ値をすべて表示できます:
$ ros2 param dump <node_name>このコマンドはデフォルトで標準出力(stdout)に印刷しますが、パラメータ値をファイルにリダイレクトして後で保存することもできます。/turtlesimのパラメータの現在の設定をファイルturtlesim.yamlに保存するには、次のコマンドを入力します:
$ ros2 param dump /turtlesim > turtlesim.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
次のコマンドを使用して、ファイルから現在実行中のノードにパラメータを読み込むことができます:
$ ros2 param load <node_name> <parameter_file>ros2 param dumpで生成されたturtlesim.yamlファイルを/turtlesimノードのパラメータに読み込むには、次のコマンドを入力します:
$ 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 ノード起動時のパラメータファイルの読み込み
保存されたパラメータ値を使用して同じノードを開始するには、次を使用します:
$ ros2 run <package_name> <executable_name> --ros-args --params-file <file_name>これは、turtlesimを開始するために常に使用するのと同じコマンドですが、--ros-argsと--params-fileフラグが追加され、その後に読み込みたいファイルが続きます。
実行中のturtlesimノードを停止し、保存されたパラメータで再読み込みを試してみてください:
$ ros2 run turtlesim turtlesim_node --ros-args --params-file turtlesim.yamlturtlesimウィンドウは通常どおりに表示されますが、以前に設定した紫色の背景になります。
注意
ノード起動時にパラメータファイルが使用される場合、読み取り専用のものを含むすべてのパラメータが更新されます。
まとめ
ノードには、デフォルトの設定値を定義するパラメータがあります。コマンドラインからパラメータ値を取得および設定できます。また、パラメータ設定をファイルに保存して、将来のセッションで再読み込みすることもできます。
次のステップ
ROS 2通信方法に戻って、次のチュートリアルではアクションについて学習します。