ROS 2 公式文書(英語) 日本語訳シリーズです。
本ブログの日本語翻訳版のトップページは以下のリンクを参照下さい。
すべてのROSノードは、さまざまなプロパティの再設定を可能にする一連の引数を取ります。例としては、ノードの名前/名前空間、使用されているトピック/サービス名、およびノード上のパラメーターの構成があります。
注:このページのすべての機能は ROS 2 Bouncy リリースの時点でのみ利用可能です。
名前のリマップ
ノード内の名前(例:トピック/サービスなど)は、<old name>:=<new name>
という構文を使用してリマップできます。ノード自体の名前は__node:=<new node name>
_で、名前空間は__ns:=<new node namespace>
でリマップできます。
これらのリマップは、ノードの実行時に指定できる「静的な」リマップであり、ノードのライフタイム(生存期間)中にのみ適用されるという点に注意してください。ノードが開始された後の「動的な」リマップはまだサポートされていません。
リマップの引数の詳細については、こちらの設計ドキュメントを参照してください(まだ全ての機能が利用可能にはなっていません)。
例
次のコマンドでは、talker
ノードをノード名my_talker
で起動し、トピックをデフォルトのchatter
ではなく、my_topic
という名前でパブリッシュします。名前空間は/demo
(頭にスラッシュをつけること)に設定され、トピックはそのネームスペース(/demo/my_topic
)に作成されます(グローバルに(/my_topic
)とはなりません)。
ros2 run demo_nodes_cpp talker __ns:=/demo __node:=my_talker chatter:=my_topic
特定のノードにリマップ引数を渡す
単一のプロセス内で複数のノードが実行されている場合(例えば Composition の場合)、そのノード名をプレフィックスにすることで、それぞれのノードに対するリマップ引数を個別に渡すことができます。たとえば、次の例では、指定したノードリマップ引数を渡します。
ros2 run composition manual_composition talker:__node:=my_talker listener:__node:=my_listener
ロガー設定
ロギングページの__log_level
引数の使用法を参照してください。
パラメーター
注:Python ノードのパラメータサポートは Crystal から追加されました。 Bouncy では C++ ノードのみがサポートされています。
コマンドラインからパラメータを設定することは現在 yaml ファイルの形式でサポートされています。
yaml ファイルの文法の例についてはこちらのページを見てください。例として、demo_params.yaml
として以下のパラメータを保存します。
talker: ros__parameters: some_int: 42 a_string: "Hello world" some_lists: some_integers: [1, 2, 3, 4] some_doubles : [3.14, 2.718]
その後、次のコマンドを実行してください。
ros2 run demo_nodes_cpp talker __params:=demo_params.yaml
他のノードからでも、このパラメータ値を取得することができます。
$ ros2 param list talker a_string some_int some_lists.some_doubles some_lists.some_integers