LoginSignup
0
0

More than 1 year has passed since last update.

ROS2チュートリアルの翻訳(Actionの定義)

Last updated at Posted at 2022-05-20

はじめに

チュートリアルが一番わかり易いので翻訳します。
https://docs.ros.org/en/galactic/Tutorials/Actions/Creating-an-Action.html

Action定義の作成方法

目標: Ros2 Packageの中にAction定義を追加できるようになる

難易度:

時間: 5 分

背景

先のチュートリアル
(https://docs.ros.org/en/galactic/Tutorials/Understanding-ROS2-Actions.html)
ですでにActionについては学んだかと思います。
メッセージ定義(topics/msg)やサービス定義(services/srv)がカスタマイズできたように、
Action定義についても、カスタマイズすることができます。
このチュートリアルでは、どのように定義し、どのようにBuildするかについて、説明します。
Action ServerとAction Client の作成方法については、次のチュートリアルで解説します。

前提条件

  1. ros2とcolconをインストールしていること
  2. action_tutorials_interfacesという名前でパッケージを作成していること
mkdir -p action_ws\src
cd action_ws\src
ros2 pkg create action_tutorials_interfaces

やり方

1 actionの定義。

actionは .action という拡張子で下記のように定義していきます:

# Request
---
# Result
---
# Feedback

3つのメッセージを --- で分けて定義します。

  • Request:Action ClientからAction Server に送信され、Serverの応答が開始されます。
  • Result:応答が終了するとがAction ServerからAction Clientに送信されます。
  • Feedback:定期的にAction ServerからAction Clientに対して、応答が今どうなっているかについてのメッセージが送られます。

ここからフィボナッチ数列 を計算するAction定義を作成してみます。

action_tutorials_interfacesのパッケージ直下に
actionフォルダを作成します。:

  cd action_tutorials_interfaces
  mkdir action

action フォルダの中に 
Fibonacci.action というファイルを作成し、
下記のように定義情報を書きます。:

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

Requestは、フィボナッチ数列の項数とします。
Resultは、フィボナッチ数列
Feedbackは、計算途中のフィボナッチ数列とします。

2 action定義のビルド

ここからはビルドする方法について説明します。

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>

Actionの定義の中にはメタデータが(例えば goal IDs)が含まれているため、
action_msgsに依存する必要があることに注意してください。

これでPackage内に Fibonacci actionの定義ビルドできる状態となりました。

# Change to the root of the workspace
cd ~/action_ws
# Build
colcon build

慣習として、actionという文言がパッケージ名の前につけることが多く、
Fibonacci actionを参照したい場合は、下記のように書きます。

action_tutorials_interfaces/action/Fibonacci.

ちゃんと使える状態になっているかを確認するために、下記のようなコマンドが利用できます。

ros2 interface show action_tutorials_interfaces/action/Fibonacci

Fibonacci action の定義を確認できます。

まとめ

このチュートリアルでは、Action定義の構造について学びました。
また、この定義を利用できる状態にするために
CMakeLists.txtpackage.xml を変更する必要があることを学びました。
うまくできたかを確認する方法について学びました。

次のステップ

次は、この定義を使って、ServerとClientをどのように作るかを学びます。

関連の資料

ROS Actionの詳細が知りたい場合は、
http://design.ros2.org/articles/actions.html
を見てください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0