MoriKen's Journal

MoriKen's Journal

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

【ROS 2】コマンドラインツールの一覧(公式文書和訳)

Sponsored Link

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

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

www.moriken254.com

ROS 2には、ROS 2システムの内部を確認するための一連のコマンドラインツールが含まれています。

使用方法

ツールの主なエントリポイントはコマンドros2です。これには、ノード、トピック、サービスなどの一覧or詳細情報を表示(※introspect: 内省・内観だが、直訳してもしっくり来ないので少し冗長な表現にしている)して操作するための様々なサブコマンドがあります。

利用可能なすべてのサブコマンドを確認するには、次のコマンドを実行します。

ros2 --help

利用可能なサブコマンドの例は次の通りです。

  • daemon: ROS デーモンの一覧or詳細表示・設定を行う
  • launch: launch ファイルを実行する
  • lifecycle: ノード・ライフサイクルの一覧表示・管理を行う
  • msg: msg タイプの一覧or詳細表示を行う
  • node: ROS ノードの一覧or詳細表示を行う
  • param: Introspect/configure あるノード上のパラメータの一覧or詳細表示・設定を行う
  • pkg: ROS パッケージの一覧or詳細表示を行う
  • run: ROS ノードを実行する
  • security: セキュリティ設定を行う
  • service: ROS サービスの一覧or詳細表示・呼び出しを行う
  • srv: srv タイプの一覧or詳細表示・呼び出しを行う
  • topic: ROS トピックの一覧or詳細表示・パブリッシュを行う

サンプル

コマンドラインツールを使用して一般的な talker-listener のサンプルを作成するには、topicサブコマンドを使用してトピックに関するメッセージをパブリッシュおよびエコーすることができます。

次のようにしてターミナルでメッセージをパブリッシュします。

$ ros2 topic pub /chatter std_msgs/String "data: Hello world"
publisher: beginning loop
publishing std_msgs.msg.String(data='Hello world')

publishing std_msgs.msg.String(data='Hello world')

別のターミナルで受信したエコーメッセージは次のとおりです。

$ ros2 topic echo /chatter
data: Hello world

data: Hello world

裏で起きていること

ROS 2 では、分散検出プロセスを使用することでノードの相互接続を実現します。このプロセスは(ROS 1 の ROS Master のように)集中的な検出メカニズムを敢えて使用していないため、ROS ノードが ROS グラフ内の他の全ノードを発見するに時間がかかる可能性があります。このため、バックグラウンドで長時間実行されるデーモンがあり、ROS グラフに関する情報を格納して、クエリ(例:ノード名のリスト)に対する応答を速くします。

関連するコマンドラインツールが初めて使用されるときに、デーモンが自動的に起動されます。デーモンと情報をやりとりするためのその他のオプションについては、ros2 daemon --helpで確認できます。

実装

ros2コマンドのソースコードは https://github.com/ros2/ros2cli から入手できます。

ros2ツールは、プラグインを介して拡張できるフレームワークとして実装されています。例えば、sros2 パッケージは、それががインストールされている場合にros2ツールによって自動的に検出されるセキュリティーサブコマンドを提供します。

翻訳元文書

index.ros.org

関連記事

www.moriken254.com

www.moriken254.com

www.moriken254.com