アクションの作成
目標: ROS 2パッケージ内でアクションを定義する。
チュートリアルレベル: 中級
所要時間: 5分
背景
あなたは以前のアクションの理解チュートリアルでアクションについて学びました。 他の通信タイプとそれぞれのインターフェース(トピック/msgとサービス/srv)のように、 パッケージ内でアクションをカスタム定義することもできます。 このチュートリアルでは、次のチュートリアルで作成するアクションサーバーとアクションクライアントで使用できるアクションを定義し、ビルドする方法を示します。
前提条件
ROS 2とcolconがインストールされている必要があります。
ワークスペースをセットアップし、action_tutorials_interfacesという名前のパッケージを作成します:
(まずROS 2インストールをソースすることを忘れないでください。)
Linux/macOS:
mkdir -p ros2_ws/src # この命名規則で既存のワークスペースを再利用できます
cd ros2_ws/src
ros2 pkg create action_tutorials_interfacesWindows:
mkdir ros2_ws\src # この命名規則で既存のワークスペースを再利用できます
cd ros2_ws\src
ros2 pkg create action_tutorials_interfacesタスク
1 アクションの定義
アクションは以下の形式の.actionファイルで定義されます:
# Request
---
# Result
---
# Feedbackアクション定義は、---で区切られた3つのメッセージ定義で構成されます。
リクエストメッセージは、新しいゴールを開始するためにアクションクライアントからアクションサーバーに送信されます。
結果メッセージは、ゴールが完了したときにアクションサーバーからアクションクライアントに送信されます。
フィードバックメッセージは、ゴールについての更新情報とともにアクションサーバーからアクションクライアントに定期的に送信されます。
アクションのインスタンスは通常ゴールと呼ばれます。
フィボナッチ数列を計算するための新しいアクション「Fibonacci」を定義したいとします。
ROS 2パッケージaction_tutorials_interfaces内にactionディレクトリを作成します:
Linux/macOS:
cd action_tutorials_interfaces
mkdir actionWindows:
cd action_tutorials_interfaces
mkdir actionactionディレクトリ内に、以下の内容でFibonacci.actionというファイルを作成します:
int32 order
---
int32[] sequence
---
int32[] partial_sequenceゴールリクエストは計算したいフィボナッチ数列のorder(項数)、結果は最終的なsequence(数列)、フィードバックはこれまでに計算されたpartial_sequence(部分数列)です。
2 アクションのビルド
コード内で新しいFibonacciアクションタイプを使用する前に、定義をrosidlコード生成パイプラインに渡す必要があります。
これは、action_tutorials_interfacesのCMakeLists.txtのament_package()行の前に以下の行を追加することで実現されます:
find_package(rosidl_default_generators REQUIRED)
rosidl_generate_interfaces(${PROJECT_NAME}
"action/Fibonacci.action"
)また、package.xmlに必要な依存関係を追加する必要があります:
<buildtool_depend>rosidl_default_generators</buildtool_depend>
<depend>action_msgs</depend>
<member_of_group>rosidl_interface_packages</member_of_group>注意:アクション定義には追加のメタデータ(例:ゴールID)が含まれるため、action_msgsに依存する必要があります。
これで、Fibonacciアクション定義を含むパッケージをビルドできるはずです:
cd ~/ros2_ws # ワークスペースのルートに移動
colcon build # ビルド完了です!
慣例により、アクションタイプには、そのパッケージ名とactionという単語がプレフィックスとして付けられます。 したがって、新しいアクションを参照する場合、完全名はaction_tutorials_interfaces/action/Fibonacciになります。
コマンドラインツールを使用して、アクションが正常にビルドされたことを確認できます:
Linux/macOS:
. install/setup.bash # ワークスペースをソース
ros2 interface show action_tutorials_interfaces/action/Fibonacci # アクション定義が存在することを確認Windows:
call install/setup.bat # ワークスペースをソース
ros2 interface show action_tutorials_interfaces/action/Fibonacci # アクション定義が存在することを確認Fibonacciアクション定義が画面に印刷されるのが確認できるはずです。
概要
このチュートリアルでは、アクション定義の構造を学習しました。 また、CMakeLists.txtとpackage.xmlを使用して新しいアクションインターフェースを正しくビルドする方法と、ビルドが成功したことを確認する方法も学習しました。
次のステップ
次に、アクションサービスとクライアント(PythonまたはC++)を作成して、新しく定義したアクションインターフェースを活用しましょう。
関連コンテンツ
ROS アクションについてのより詳細な情報については、設計記事を参照してください。