ROS通信の仕組み

Topic, Service, Actionの違いを理解しよう

1. Topic (トピック)

「出版-購読」モデルの非同期通信。一方向のデータストリームを配信します。ラジオ放送のように、送信者(Publisher)は受信者(Subscriber)を意識せず、ただ情報を発信し続けます。

動作イメージ

Publisher
送信者
/topic
Subscriber 1
受信者1
Subscriber 2
受信者2

特徴

  • 一対多 / 多対多: 複数の送受信が可能
  • 非同期: 送信者は応答を待たない
  • 継続的なデータ: センサーデータなど、流れ続ける情報に最適

2. Service (サービス)

「要求-応答」モデルの同期通信。クライアントがサーバーに処理を要求し、完了するまで待機します。関数の呼び出しのように、明確な結果が1回だけ返ってきます。

動作イメージ

Client
要求側
Server
提供側
Request
Response

特徴

  • 一対一: 要求と応答はペア
  • 同期: クライアントは応答が来るまで処理が止まる
  • 単発の処理: 特定の計算や設定変更などに最適

3. Action (アクション)

長時間かかるタスクのための非同期通信。Serviceに似ていますが、途中の経過(フィードバック)を受け取ったり、タスクをキャンセルしたりできます。

動作イメージ

Action Client
要求側
Action Server
実行側
Goal
Feedback
Result

特徴

  • 一対一: GoalとResult/Feedbackはペア
  • 非同期: Goalを投げた後、クライアントは他の処理を続けられる
  • フィードバックとキャンセル: ナビゲーションなど時間のかかるタスクに最適