Skip to content

Latest commit

 

History

History
462 lines (309 loc) · 22.1 KB

File metadata and controls

462 lines (309 loc) · 22.1 KB

6. ROS2 コマンドの使い方

コマンド 概要
ros2 topic list 現在利用可能な全トピックを一覧表示する。
例:ros2 topic list
ノードが公開・購読しているトピックの確認に使用。
参考:ROS2 CLI - topic list
ros2 topic echo 指定したトピックの内容をリアルタイムで表示する。
例:ros2 topic echo /example_topic
センサデータやノード間通信の中身を確認するのに便利。
参考:ROS2 CLI - topic echo
ros2 topic pub 指定したトピックに任意のメッセージを手動で送信する。
例:ros2 topic pub /led_toggle std_msgs/Bool "data: true"
デバッグや動作テストに使われる。-rで繰り返し送信可能。
参考:ROS2 CLI - topic pub
ros2 topic info 指定したトピックに関する詳細情報(型、Publisher数など)を表示。
例:ros2 topic info /cmd_vel
トピックのデバッグや通信確認に有効。
参考:ROS2 CLI - topic info
ros2 node list 現在実行中のノード一覧を表示。
例:ros2 node list
ノードの起動状態を確認できる。
参考:ROS2 CLI - node list
ros2 node info 指定したノードが提供/使用しているトピックやサービスを表示。
例:ros2 node info /my_node
ノードの入出力や役割を把握するのに役立つ。
参考:ROS2 CLI - node info

ros2 topic list

ros2 topic list は、現在アクティブなすべてのトピック名を表示するためのコマンドです。ノードがパブリッシュまたはサブスクライブしているトピックの一覧を確認することで、ROS2システムの状態を把握するのに役立ちます。


🔧 基本構文

ros2 topic list [オプション]

🧪 使用例

ros2 topic list

出力例:

/camera/image_raw
/cmd_vel
/parameter_events
/rosout
/scan

⚙️ よく使うオプション

オプション名 説明
-t , --show-types 各トピックのメッセージ型も一緒に表示します。
-h , --help コマンドの使い方を表示します。

例:

ros2 topic list --show-types

出力例:

/camera/image_raw        sensor_msgs/msg/Image
/cmd_vel                 geometry_msgs/msg/Twist
/parameter_events        rcl_interfaces/msg/ParameterEvent
/rosout                  rcl_interfaces/msg/Log
/scan                    sensor_msgs/msg/LaserScan

🔍 出力結果の見方

このコマンドの出力は、「トピック名」と「そのトピックが扱うメッセージ型」 の組み合わせを表しています。各行の内容は次のように解釈します:

出力例 意味
/camera/image_raw sensor_msgs/msg/Image sensor_msgs/msg/Image 型の画像データを流すトピック。主にカメラノードからの画像出力に使用されます。
/cmd_vel geometry_msgs/msg/Twist ロボットの速度指令を表すトピック。多くの移動ロボットで使われる「速度指令(線形・角速度)」をパブリッシュします。
/parameter_events rcl_interfaces/msg/ParameterEvent ノード内のパラメータの変更イベントを通知するトピック。ROS2が自動で生成します。
/rosout rcl_interfaces/msg/Log ROS2システムのログ出力が流れるトピック。標準的なログ可視化に使用されます。
/scan sensor_msgs/msg/LaserScan LiDAR(レーザースキャナ)のスキャンデータが流れるトピック。障害物検知や自己位置推定に使われます。

この情報を元に、「どのノードがどんなデータをやりとりしているか」を把握することができます。

よく使うメッセージ一覧

メッセージ型 型名 主な用途
文字列 std_msgs/msg/String 単純なテキストの送受信(例:ロボットの発話、状態表示など)
ブール値 std_msgs/msg/Bool ON/OFFやTrue/Falseなどの単純な状態表現
数値(整数/浮動小数) std_msgs/msg/Int32, Float64 など カウンターやセンサーの数値データの送受信に利用
座標位置 geometry_msgs/msg/Point x, y, z の位置情報(例:ターゲット座標など)
姿勢・向き geometry_msgs/msg/Quaternion 3次元空間での向きの表現。SLAMやナビゲーションなどで利用
速度指令 geometry_msgs/msg/Twist ロボットの線形・角速度の制御指令(例:/cmd_vel)
ポーズ(位置+姿勢) geometry_msgs/msg/Pose ロボットや物体の「位置と向き」のセット
レーザースキャン sensor_msgs/msg/LaserScan LiDARなどからの障害物検出・距離センサーデータ
画像データ sensor_msgs/msg/Image カメラからの画像フレームを扱うメッセージ
IMU(慣性センサ) sensor_msgs/msg/Imu 加速度・角速度・姿勢などを含むセンサーデータ
パラメータ変更通知 rcl_interfaces/msg/ParameterEvent パラメータが動的に変更されたときの通知(内部的に使用)
ログ出力 rcl_interfaces/msg/Log ノードからのログ情報を記録・表示するためのトピック用

💡 使用シーンとポイント

  • 新たに起動したノードがどのトピックを使っているか確認する
  • 期待するトピックが生成されているかを確認する(起動確認)
  • 他の ros2 topic サブコマンド(例:echo, info)で使うトピック名を調べるための下準備

ros2 topic echo

ROS2 において、特定のトピックに流れているメッセージの内容をリアルタイムで確認するためのコマンドです。デバッグや開発中の確認作業において最もよく使われるコマンドのひとつです。


🧪 使用例

ros2 topic echo /cmd_vel

このコマンドは、/cmd_vel トピックに送信されるメッセージの中身を標準出力に表示します。


💡 よく使うオプション

オプション 説明
--once メッセージを1件だけ表示して終了
`--qos-reliability <reliable best_effort>` 通信品質を指定して受信(特定のセンサートピックなどで有効)
`--qos-durability <volatile transient_local>` 永続性のあるトピックに対応(たとえば latched topic を再取得)

📥 出力例

$ ros2 topic echo /cmd_vel
linear:
  x: 0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.3
---
linear:
  x: 0.5
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.0

🔍 出力結果の見方

この例では、/cmd_vel トピックのメッセージ型が geometry_msgs/msg/Twist であることを示しています。

フィールド 意味
linear.x 前後方向の速度(+で前進)
linear.y 左右方向の速度(多くのロボットでは使われない)
linear.z 上下方向の速度(ドローンなどで使用)
angular.z 回転速度(+で左回転)

メッセージは送信されるたびに --- 区切りで表示されます。


ros2 topic pub

ROS2 において、特定のトピックにメッセージをパブリッシュするためのコマンドです。主にトピックへのテストメッセージの送信や、他のノードに指示を出すために使用されます。


🧪 使用例

ros2 topic pub /cmd_vel geometry_msgs/msg/Twist "linear: {x: 0.1, y: 0.0, z: 0.0} angular: {x: 0.0, y: 0.0, z: 0.5}"

このコマンドは、/cmd_vel トピックに geometry_msgs/msg/Twist 型のメッセージをパブリッシュします。ここでは、ロボットに前進と回転の動作を指示するために次の情報を送信しています。このコマンドを実行すると終了コマンド「Controlキー + Cキー」を押すまで指定されたトピックにメッセージがパブリッシュされます。

  • linear: {x: 0.1, y: 0.0, z: 0.0}:

    • x: 0.1 はロボットを前進させるための速度指令です。ここでは前進速度が 0.1 m/s に設定されています。
    • y: 0.0z: 0.0 は左右方向(横)および上下方向(垂直)の速度であり、どちらも 0.0 に設定されています。これによりロボットは横や縦方向には動かず、直進だけを行います。
  • angular: {x: 0.0, y: 0.0, z: 0.5}:

    • z: 0.5 はロボットの回転速度です。z 軸周りに 0.5 rad/s の速度で回転するよう指示しています。この値を正にすると右回転、負にすると左回転します。
    • x: 0.0y: 0.0 は、ロボットが上下や左右に回転する速度を制御しますが、今回は回転は z 軸のみで行うため、両方とも 0.0 です。

解説

このコマンドを使うと、/cmd_vel トピックに geometry_msgs/msg/Twist 型のメッセージが流れ、ロボットの動きが制御されます。具体的には、ロボットは以下の動作を行います:

  1. 前進速度が 0.1 m/s で、進行方向にまっすぐ進みます。
  2. angular.z0.5 なので、ロボットは右方向に回転します(+値のため、右回転)。
  3. ロボットは直進しながら、一定の回転を行います。つまり、前進しつつ旋回する動作が実現します。

🚀 使用シナリオ

  • ロボットの自律移動テスト: 上記のコマンドを使用すると、ロボットが指定された速度で直進し、回転する動作をシミュレートできます。ロボットの自律移動の動作確認やデバッグに使用できます。

これにより、ロボットの動作がどのように制御されるかを理解しやすくなります。ros2 topic pub は特定のトピックに対してメッセージをパブリッシュする強力なツールであり、ロボットに実際の指令を送るために頻繁に使用されます。


💡 よく使うオプション

オプション 説明
-r <rate> 指定したレート(Hz)でメッセージを繰り返しパブリッシュ
--once 1回だけメッセージをパブリッシュして終了
`--qos-reliability <reliable best_effort>` 通信品質を指定(特定のセンサートピックで有効)
`--qos-durability <volatile transient_local>` 永続性のあるトピックで有効(たとえば latched topic)

先ほど記述したコマンドでは常にトピックをパブリッシュし続けますが、以下のコマンドのように --once オプションをつけることで一度だけ速度司令をパブリッシュします。これでロボットが突如継続的な移動を行うリスクを回避できます。

ros2 topic pub --once /cmd_vel geometry_msgs/msg/Twist "linear: {x: 0.1, y: 0.0, z: 0.0} angular: {x: 0.0, y: 0.0, z: 0.5}"

📥 出力例

Publishing message:
linear:
  x: 0.1
  y: 0.0
  z: 0.0
angular:
  x: 0.0
  y: 0.0
  z: 0.5

🔍 出力結果の見方

このコマンドの出力は、送信したメッセージの内容がそのまま表示されます。上記の例では、/cmd_vel トピックに geometry_msgs/msg/Twist 型のメッセージがパブリッシュされたことを示しています。

フィールド 意味
linear.x 前後方向の速度(+で前進)
linear.y 左右方向の速度(通常は 0)
linear.z 上下方向の速度(通常は 0)
angular.z 回転速度(+で右回転)

📚 コマンドの活用方法

  • 開発中にロボットの動作をシミュレートするために、/cmd_vel に対して手動で速度指令を送ることができます。
  • センサーデータを擬似的に流して、システムのテストを行う際にも使えます。

このように、ros2 topic pub はトピックに対して直接メッセージを送信するための非常に便利なツールです。ロボットやシミュレーション環境での動作確認に役立ちます。


ros2 topic info

ROS2 において、指定したトピックの詳細情報を取得するためのコマンドです。主に、トピックが使用しているメッセージ型や、パブリッシュしているノード、サブスクライブしているノードなどを確認するために使用されます。


🧪 使用例

ros2 topic info /cmd_vel

このコマンドは、/cmd_vel トピックの詳細情報を表示します。具体的には、トピックに関する以下の情報が得られます。


💡 よく使うオプション

オプション 説明
--verbose トピックに関する詳細な情報を表示。より多くの情報を表示する場合に使用します。

📥 出力例

Type: geometry_msgs/msg/Twist
Publisher count: 1
Subscriber count: 2

🔍 出力結果の見方

  • Type: geometry_msgs/msg/Twist このトピックで使用されているメッセージ型が geometry_msgs/msg/Twist であることを示しています。このメッセージ型は、ロボットの速度情報を表現します。

  • Publisher count: 1 トピックをパブリッシュしているノードが1つであることを示しています。この場合、1つのノードがこのトピックにメッセージを送信しています。

  • Subscriber count: 2 このトピックをサブスクライブしているノードが2つであることを示しています。これらのノードは、/cmd_vel トピックからメッセージを受信していることを意味します。


📚 コマンドの活用方法

  • デバッグ: トピックに関する情報を確認することで、どのノードがそのトピックをパブリッシュしているのか、またどのノードがサブスクライブしているのかを簡単に把握できます。これにより、通信の問題をデバッグする手助けになります。
  • トピックの監視: システム内の特定のトピックに関する詳細な情報を知ることで、トピックの使用状況を監視することができます。

ros2 topic info コマンドは、システム内で使用されているトピックに関する情報を簡単に取得できる便利なツールです。これを使うことで、トピックの状態やトピックに関連するノードを把握し、システム全体の通信状態を確認することができます。


ros2 node list

ros2 node list コマンドは、現在実行中の ROS2 ノードのリストを表示するためのコマンドです。システム内で稼働しているノードの名前を確認することができ、ノードの管理やデバッグ時に非常に役立ちます。


🧪 使用例

ros2 node list

このコマンドを実行すると、現在動作しているすべてのノードのリストが表示されます。具体的には、以下のような結果が得られます。


💡 よく使うオプション

オプション 説明
--all 実行中のノードをすべて表示します。
--verbose 各ノードに関する追加情報(エンドポイントの数など)を表示します。

📥 出力例

/camera_driver
/sample_publisher

🔍 出力結果の見方

  • /camera_driver このノードは、カメラのドライバとして機能しているノードであり、カメラに関連する処理を担当しています。

  • /sample_publisher このノードは、ロボットの動作を制御するためのノードです。ロボットのモーター制御やセンサーの処理を行っている可能性があります。


📚 コマンドの活用方法

  • システムの確認: システム内でどのノードが稼働しているのかを確認できます。これにより、システムの状態を把握し、必要に応じて特定のノードを監視・管理できます。
  • デバッグ: 特定のノードが動作していない場合、このコマンドを使用してそのノードが実行されていないことを確認できます。また、予期せぬノードが起動していないかどうかもチェックできます。

ros2 node list コマンドは、システム内のノードの状態を確認するために使用する基本的なコマンドです。ノードのトラブルシューティングやシステムの確認作業に非常に役立ちます。


ros2 node info

ros2 node info コマンドは、指定した ROS2 ノードに関する詳細情報を表示するためのコマンドです。このコマンドを使用することで、特定のノードが持つサービス、トピック、アクションなどのエンドポイント情報を確認できます。ノードの内部状態を把握するために非常に役立ちます。


🧪 使用例

ros2 node info /sample_publisher

このコマンドは、/sample_publisher というノードに関する詳細情報を表示します。例えば、以下のような情報が表示されます。


💡 よく使うオプション

オプション 説明
--verbose ノードに関連するすべてのエンドポイント(トピック、サービス、アクションなど)の詳細を表示します。

📥 出力例

Node name: /sample_publisher
Topics: 
  /cmd_vel [geometry_msgs/msg/Twist]
  /odom [nav_msgs/msg/Odometry]
Services: 
  /sample_publisher/set_pose
Actions: 
  /sample_publisher/move

🔍 出力結果の見方

  • Node name: /sample_publisher ノード名は /sample_publisher です。このノードが提供するサービスやトピック、アクションの情報が以下に続きます。

  • Topics: このノードがパブリッシュ(またはサブスクライブ)しているトピックのリストが表示されます。例えば、/cmd_vel はロボットの速度制御に関連するトピックで、geometry_msgs/msg/Twist メッセージ型が使われています。

  • Services: このノードが提供しているサービスのリストが表示されます。サービスは、リクエストとレスポンスの通信を行うエンドポイントです。例では、/sample_publisher/set_pose サービスが提供されています。

  • Actions: このノードが提供しているアクションのリストが表示されます。アクションは長時間実行される操作に使用されるエンドポイントです。ここでは、/sample_publisher/move というアクションがあります。


📚 コマンドの活用方法

  • ノードの内部構造確認: 特定のノードが提供するトピック、サービス、アクションなどを調べ、ノードの機能を把握することができます。これにより、他のノードとどのように連携しているのかを理解するのに役立ちます。
  • デバッグ: ノードのエンドポイントが正しく動作しているか、想定されるトピックやサービスが存在しているかを確認することができます。これにより、通信やサービスの問題を診断できます。

ros2 node info コマンドは、特定のノードがどのようなエンドポイントを持っているのかを詳しく知るための強力なツールです。これを使うことで、ノードの動作を理解し、システム全体の通信を効率よく確認できます。