Skip to content

アクションの作成

目標: ROS 2パッケージ内でアクションを定義する。

チュートリアルレベル: 中級

所要時間: 5分

背景

あなたは以前のアクションの理解チュートリアルでアクションについて学びました。 他の通信タイプとそれぞれのインターフェース(トピック/msgとサービス/srv)のように、 パッケージ内でアクションをカスタム定義することもできます。 このチュートリアルでは、次のチュートリアルで作成するアクションサーバーとアクションクライアントで使用できるアクションを定義し、ビルドする方法を示します。

前提条件

ROS 2colconがインストールされている必要があります。

ワークスペースをセットアップし、action_tutorials_interfacesという名前のパッケージを作成します:

(まずROS 2インストールをソースすることを忘れないでください。)

Linux/macOS:

bash
mkdir -p ros2_ws/src  # この命名規則で既存のワークスペースを再利用できます
cd ros2_ws/src
ros2 pkg create action_tutorials_interfaces

Windows:

bash
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:

bash
cd action_tutorials_interfaces
mkdir action

Windows:

bash
cd action_tutorials_interfaces
mkdir action

actionディレクトリ内に、以下の内容でFibonacci.actionというファイルを作成します:

int32 order
---
int32[] sequence
---
int32[] partial_sequence

ゴールリクエストは計算したいフィボナッチ数列のorder(項数)、結果は最終的なsequence(数列)、フィードバックはこれまでに計算されたpartial_sequence(部分数列)です。

2 アクションのビルド

コード内で新しいFibonacciアクションタイプを使用する前に、定義をrosidlコード生成パイプラインに渡す必要があります。

これは、action_tutorials_interfacesCMakeLists.txtament_package()行の前に以下の行を追加することで実現されます:

cmake
find_package(rosidl_default_generators REQUIRED)

rosidl_generate_interfaces(${PROJECT_NAME}
  "action/Fibonacci.action"
)

また、package.xmlに必要な依存関係を追加する必要があります:

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アクション定義を含むパッケージをビルドできるはずです:

bash
cd ~/ros2_ws  # ワークスペースのルートに移動
colcon build  # ビルド

完了です!

慣例により、アクションタイプには、そのパッケージ名とactionという単語がプレフィックスとして付けられます。 したがって、新しいアクションを参照する場合、完全名はaction_tutorials_interfaces/action/Fibonacciになります。

コマンドラインツールを使用して、アクションが正常にビルドされたことを確認できます:

Linux/macOS:

bash
. install/setup.bash  # ワークスペースをソース
ros2 interface show action_tutorials_interfaces/action/Fibonacci  # アクション定義が存在することを確認

Windows:

bash
call install/setup.bat  # ワークスペースをソース
ros2 interface show action_tutorials_interfaces/action/Fibonacci  # アクション定義が存在することを確認

Fibonacciアクション定義が画面に印刷されるのが確認できるはずです。

概要

このチュートリアルでは、アクション定義の構造を学習しました。 また、CMakeLists.txtpackage.xmlを使用して新しいアクションインターフェースを正しくビルドする方法と、ビルドが成功したことを確認する方法も学習しました。

次のステップ

次に、アクションサービスとクライアント(PythonまたはC++)を作成して、新しく定義したアクションインターフェースを活用しましょう。

関連コンテンツ

ROS アクションについてのより詳細な情報については、設計記事を参照してください。

関連リンク

Released under the MIT License.