MoriKen's Journal

MoriKen's Journal

アラサー社会人博士による徒然日記。技術についてつらつら。だけだとコンテンツが貧弱なので、会社公認で大学院博士課程に進学した経緯や、独学でTOEICを475→910にしたノウハウを共有します。

【ROS 2】コマンドラインを介して ROS 引数をノードに渡す(公式文書和訳)

Sponsored Link

ROS 2 公式文書(英語) 日本語訳シリーズです。

本ブログの日本語翻訳版のトップページは以下のリンクを参照下さい。

www.moriken254.com

すべての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

翻訳元文書

index.ros.org

関連記事

www.moriken254.com

www.moriken254.com

www.moriken254.com