创建动作
背景
您以前在了解动作教程中理解了动作。
与其他通信类型及其各自的接口(topics/msg和services/srv)一样,您也可以在包中自定义定义动作。
本教程将向您展示如何定义和构建一个可以与下一教程中编写的动作服务器和动作客户端一起使用的动作。
前置条件
您应该安装了ROS 2和colcon。
设置工作区并创建名为action_tutorials_interfaces的包:
(请记住先获取ROS 2安装的源代码。)
cd ros2_ws/src
ros2 pkg create action_tutorials_interfaces
任务
- 定义一个动作
动作的实例通常称为目标。
假设我们想定义一个新的动作“Fibonacci”来计算斐波那契序列。
在我们的ROS 2包action_tutorials_interfaces中创建一个动作目录:
cd action_tutorials_interfaces
mkdir action
在action目录中,创建一个名为Fibonacci.action的文件,其中包含以下内容:
int32 order
---
int32[] sequence
---
int32[] partial_sequence
动作在以下格式的.action文件中定义:
动作定义由三个消息定义组成,由---
分隔。- 请求消息从动作客户端发送到启动新目标的动作服务器。
- 当目标完成时,结果消息从动作服务器发送到动作客户端。
- 反馈消息定期从动作服务器发送到动作客户端,其中包含有关目标的更新。