ROS2アクション(ろすにあくしょん)
最終更新:2026/4/27
ROS2における非同期なリクエスト・レスポンス型の通信メカニズムであり、ゴールを設定し、フィードバックを受け取りながらタスクを実行する。
別名・同義語 ROS2非同期通信ROS2ゴール指向行動
ポイント
ROS2アクションは、長時間の処理や中断可能なタスクに適しており、ロボットの制御や複雑な操作に利用される。従来のROSのActionとはAPIが大きく異なる。
ROS2アクションとは
ROS2アクションは、ロボットの制御において、目標を設定し、その目標達成までのフィードバックを受け取りながらタスクを実行するための通信メカニズムです。従来のROSのActionシステムを改良し、より柔軟性と信頼性の高い通信を実現しています。
アクションの構成要素
ROS2アクションは、以下の3つの主要な要素で構成されます。
- ゴール (Goal): 実行したいタスクの目標を定義します。例えば、「指定された位置まで移動する」といった目標を設定できます。
- フィードバック (Feedback): タスクの実行状況に関する情報を定期的に送信します。例えば、「現在の位置」や「進捗率」といった情報をフィードバックできます。
- 結果 (Result): タスクの実行結果を送信します。例えば、「目標位置に到達した」または「エラーが発生した」といった結果を送信します。
アクションクライアントとアクションサーバー
ROS2アクションは、アクションクライアントとアクションサーバーという2つのノード間で通信を行います。
- アクションクライアント: ゴールを設定し、フィードバックを受け取り、結果を受け取るノードです。
- アクションサーバー: ゴールを受け取り、タスクを実行し、フィードバックを送信し、結果を送信するノードです。
ROS1のActionとの違い
ROS2のアクションは、ROS1のActionシステムと比較して、いくつかの重要な違いがあります。
- 非同期通信: ROS2アクションは、非同期通信を採用しており、アクションクライアントはアクションサーバーからの応答を待たずに他の処理を実行できます。
- 柔軟な通信パターン: ROS2アクションは、様々な通信パターンをサポートしており、より柔軟なシステムを構築できます。
- DDSによる通信: ROS2アクションは、DDS (Data Distribution Service) を使用して通信を行うため、より信頼性の高い通信を実現できます。
利用例
ROS2アクションは、以下のような様々な用途で利用できます。
- ロボットアームの制御
- 自律走行ロボットのナビゲーション
- 複雑なタスクの実行