创建行动
目标 在 ROS 2 软件包中定义一个操作。
辅导水平: 中级
时间 5 分钟
背景介绍
您之前在 了解行动 教程。与其他通信类型及其各自的接口(主题/msg 和服务/srv)一样,您也可以在软件包中自定义动作。本教程将向您展示如何定义和构建一个动作,以便与下一教程中编写的动作服务器和动作客户端配合使用。
先决条件
您应该知道如何设置 工作区 并创建软件包。
记住 为您的 ROS 2 安装提供源代码 首先
任务
1 创建接口包
mkdir -p ~/ros2_ws/src # 您可以使用此命名规范重复使用现有工作区
CD ~/ros2_ws/src ros2 包 创建 --许可证 Apache-2.0 自定义动作接口
mkdir -p ~/ros2_ws/src
CD ~/ros2_ws/src ros2 包 创建 --许可证 Apache-2.0 自定义动作接口
医学博士 \ros2_ws\src
CD \ros2_ws\src ros2 包 创建 --许可证 Apache-2.0 自定义动作接口
2 确定行动
行动在 .行动
形式的文件:
# 请求
---
# 结果
---
# 反馈
一个操作定义由三个报文定义组成,中间用 ---
.
A 要求 消息从行动客户端发送到行动服务器,启动一个新目标。
A 结果 消息会在目标完成时从行动服务器发送到行动客户端。
反馈意见 消息会定期从行动服务器发送到行动客户端,提供有关目标的更新信息。
一个动作的实例通常被称为 目标.
假设我们要定义一个新的操作 "斐波那契",用于计算 斐波那契数列.
创建一个 行动
目录中的 自定义动作接口
:
CD custom_action_interfaces mkdir 行动
CD custom_action_interfaces mkdir 行动
CD custom_action_interfaces md 行动
在 行动
目录下,创建一个名为 Fibonacci.action
内容如下
int32 命令
---
int32[] sequence
---
int32[] 部分序列
目标要求是 订单
的斐波那契数列,结果就是最终的 顺序
反馈是 部分序列
到目前为止的计算结果。
3 建立行动
在代码中使用新的 Fibonacci 操作类型之前,我们必须将定义传递给 rosidl 代码生成管道。
在我们的 CMakeLists.txt
之前 ament_package()
线:
查找软件包(默认生成器 要求)
生成接口(${项目名称}
"action/Fibonacci.action";
)
我们还应将所需的依赖项添加到我们的 package.xml
:
构建工具的依赖关系<buildtool_depend>;默认生成器</buildtool_depend>;
<member_of_group>;接口包</member_of_group>;
现在我们应该可以构建包含 斐波那契
行动定义:
# 更改到工作区的根目录
CD ~/ros2_ws
# 建立
胶管 构建
我们完了
按照惯例,操作类型的前缀是软件包名称和 行动
.因此,当我们要引用我们的新操作时,它的全名将是 custom_action_interfaces/action/Fibonacci
.
我们可以使用命令行工具检查我们的操作是否成功创建。首先获取工作区的源代码:
消息来源 install/local_setup.bash
消息来源 install/local_setup.bash
致电 安装\local_setup.bat
现在检查我们的操作定义是否存在:
玫瑰2 界面 展览 custom_action_interfaces/action/Fibonacci
你会看到斐波那契动作定义打印在屏幕上。
摘要
在本教程中,您了解了动作定义的结构。您还学会了如何使用 CMakeLists.txt
和 package.xml
以及如何验证构建成功。