よく使う ROS コマンド

ロボットシステムでは、数個から数十個のノードが同時に動作することがあります。各ノードには一意の名前があり、トピック、サービス、メッセージ、パラメータなどを使って通信します。よくある課題として、ある既存ノードと通信するノードをカスタマイズする際に、相手ノードが使用しているトピックやメッセージ形式をどのように取得すればよいかという問題があります。

ROS はさまざまなノードに関する情報を取得するための便利なコマンドラインツールを提供しています。よく使われるコマンドは次の通りです。

  • rosnode: ノードを管理
  • rostopic: トピックを管理
  • rosservice: サービスを管理
  • rosmsg: メッセージ型 (msg) を管理
  • rossrv: サービスメッセージ型 (srv) を管理
  • rosparam: パラメータを管理

これらのコマンドは動的で、静的なファイルシステムコマンドとは異なります。ROS プログラムが起動した後、これらのコマンドを使って実行中のノードやパラメータの情報を動的に取得できます。

rosnode

rosnode は ROS ノードに関する情報を取得するために使用されます。

  • rosnode ping: ノードへの接続状態をテスト
  • rosnode list: アクティブな全ノードを一覧表示
  • rosnode info: ノードに関する情報を表示
  • rosnode machine: 指定したマシン上で動作しているノードを一覧表示
  • rosnode kill: ノードを終了
  • rosnode cleanup: 到達不能なノードをクリーンアップ

rostopic

rostopic は ROS トピックに関するデバッグ情報(publisher、subscriber、配信頻度、ROS メッセージなど)を表示するコマンドラインツールを含みます。また、トピック情報を動的に取得しトピックとやり取りする実験的な Python ライブラリも含まれます。

  • rostopic bw: トピックの帯域幅使用量を表示
  • rostopic delay: ヘッダ付きトピックの遅延を表示
  • rostopic echo: メッセージを画面に表示
  • rostopic find: 型でトピックを検索
  • rostopic hz: トピックの配信頻度を表示
  • rostopic info: トピックの情報を表示
  • rostopic list: アクティブな全トピックを一覧表示
  • rostopic pub: トピックにデータを配信
  • rostopic type: トピックの型を表示

例:

  • rostopic list(-v): 現在動作しているトピック名を表示します(-v を付けると publisher と subscriber 数などの詳細情報を表示)。
  • rostopic pub /topic_name msg_type "msg_content": トピックにメッセージを配信。
  • rostopic echo /topic_name: トピックで現在配信されているメッセージを取得して表示。
  • rostopic info /topic_name: メッセージ型、publisher、subscriber 情報など、トピックの詳細情報を取得。
  • rostopic hz /topic_name: トピックの配信頻度を表示。
  • rostopic bw /topic_name: トピックの帯域幅使用量を表示。

2.4.3 rosmsg

rosmsg は ROS メッセージ型に関する情報を表示するためのコマンドラインツールです。

  • rosmsg show: メッセージの説明を表示
  • rosmsg info: メッセージに関する詳細情報を表示
  • rosmsg list: 全メッセージ型を一覧表示
  • rosmsg md5: メッセージの MD5 チェックサムを表示
  • rosmsg package: パッケージ内の全メッセージを一覧表示
  • rosmsg packages: メッセージを含む全パッケージを一覧表示

例:

  • rosmsg list: 現在の ROS 環境にある全メッセージ型を一覧表示。
  • rosmsg packages: メッセージ型を含む全パッケージを一覧表示。
  • rosmsg package <package_name>: 特定パッケージ内の全メッセージを一覧表示。
  • rosmsg show <msg_name>: 特定メッセージの説明を表示。
  • rosmsg info <msg_name>: rosmsg show と同様で、メッセージ型に関する情報を提供。
  • rosmsg md5 <msg_name>: データ整合性チェック用にメッセージの MD5 チェックサムを生成。

2.4.4 rosservice

rosservice には ROS サービスを一覧表示・問い合わせるためのコマンドラインツールが含まれます。

  • rosservice args: サービスに必要な引数を表示
  • rosservice call: 指定の引数でサービスを呼び出し
  • rosservice find: 型でサービスを検索
  • rosservice info: サービスの情報を表示
  • rosservice list: アクティブな全サービスを一覧表示
  • rosservice type: サービスの型を表示
  • rosservice uri: サービスの ROSRPC URI を表示

例:

  • rosservice list: アクティブな全サービスを一覧表示。
  • rosservice args /service_name: 特定サービスに必要な引数を表示。
  • rosservice call /service_name "args": 指定の引数でサービスを呼び出し。
  • rosservice find <service_type>: メッセージ型でサービスを検索。
  • rosservice info /service_name: サービスの詳細情報を取得。
  • rosservice type /service_name: サービスの型を取得。
  • rosservice uri /service_name: サービスの URI を取得。

2.4.5 rossrv

rossrv は ROS サービス型に関する情報を表示するコマンドラインツールで、構文は rosmsg に非常に近いです。

  • rossrv show: サービスメッセージの説明を表示
  • rossrv info: サービスメッセージに関する詳細情報を表示
  • rossrv list: 全サービスメッセージ型を一覧表示
  • rossrv md5: サービスメッセージの MD5 チェックサムを表示
  • rossrv package: パッケージ内の全サービスメッセージを一覧表示
  • rossrv packages: サービスメッセージを含む全パッケージを一覧表示

例:

  • rossrv list: 現在の ROS 環境にある全サービスメッセージ型を一覧表示。
  • rossrv packages: サービスメッセージを含む全パッケージを一覧表示。
  • rossrv package <package_name>: 特定パッケージ内の全サービスメッセージを一覧表示。
  • rossrv show <srv_name>: 特定サービスメッセージの説明を表示。
  • rossrv info <srv_name>: rossrv show と同様で、サービスメッセージ型に関する情報を提供。
  • rossrv md5 <srv_name>: データ整合性チェック用にサービスメッセージの MD5 チェックサムを生成。

2.4.6 rosparam

rosparam には、YAML エンコードされたファイルを介してパラメータサーバ上の ROS パラメータを取得・設定するためのコマンドラインツールが含まれます。

  • rosparam set: パラメータを設定
  • rosparam get: パラメータを取得
  • rosparam load: 外部ファイルからパラメータをロード
  • rosparam dump: 外部ファイルにパラメータをダンプ
  • rosparam delete: パラメータを削除
  • rosparam list: 全パラメータを一覧表示

例:

  • rosparam list: パラメータサーバ上の全パラメータを一覧表示。
  • rosparam set <param_name> <value>: 指定の値でパラメータを設定。
  • rosparam get <param_name>: 特定パラメータの値を取得。
  • rosparam delete <param_name>: 特定パラメータを削除。
  • rosparam load <file_name.yaml>: YAML ファイルからパラメータをロード。
  • rosparam dump <file_name.yaml>: 現在のパラメータを YAML ファイルにダンプ。

これらのコマンドにより、ROS エコシステムの様々なコンポーネントと動的にやり取りでき、ROS ベースのロボットシステムを管理・監視する強力な方法を提供します。