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