机器人系统开发ros2-基础实践01-学会自定义一个机器人动作aciton实体类

您之前在了解操作教程中了解了action 。与其他通信类型及其各自的接口(主题/消息和服务/srv)一样,您也可以在包中自定义操作。本教程向您展示如何定义和构建可与您将在下一个教程中编写的action服务器和action 客户端一起使用的操作。

需要理解action 可以回到这篇文章
ros 中的通信接口的定义以及如何创建自定义msg、srv和action文件

1. 创建aciton 前端的先决条件

    已安装ROS 2和colcon

设置工作区并创建一个名为的包action_tutorials_interfaces:

mkdir -p ros2_study/src 
cd ros2_study/src
ros2 pkg create action_tutorials_interfaces

定义动作:

.action操作在以下形式的文件中定义:

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

action 定义由三个消息定义组成,以 分隔—。

  • 请求消息从 动作客户端发送到发起新目标的 动作服务器

  • 当目标完成时,结果消息从动作服务器发送到动作客户端

  • 反馈消息 定期动作服务器发送到动作客户端,其中包含有关目标的更新

动作的实例通常称为目标。

假设我们要定义一个新的操作“Fibonacci”来计算斐波那契数列。

action在我们的 ROS 2 包中创建一个目录action_tutorials_interfaces:

cd action_tutorials_interfaces
mkdir action

在该目录中,创建一个包含以下内容的action文件:Fibonacci.action

cd action
vim Fibonacci.action

将下面内容贴到Fibonacci.action,然后保存

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

创建action

在我们的代码中使用新的斐波那契操作类型之前,我们必须将定义传递到 rosidl 代码生成管道。

这是通过在以下行CMakeLists.txt之前添加以下行来完成的:ament_package() action_tutorials_interfaces

让我们用vccode 打开项目目录,方便查看文件以及修改文件

这是我们现在的项目目录如下:

在这里插入图片描述
接下来我们修改CMakeLists.txt

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>

我们现在应该能够构建包含Fibonacci操作定义的包:

cd ros2_study
colcon build

在这里插入图片描述
发现编译报错:

在这里插入图片描述

提示我们是代码位置放错了

重新将上面的代码放入到下图的这个位置然后再重新编译
在这里插入图片描述

编译成功:

在这里插入图片描述

验证我们定义的action

. install/setup.bash
# Check that our action definition exists
ros2 interface show action_tutorials_interfaces/action/Fibonacci

在这里插入图片描述

在本次学习中,我们学习了action 定义的结构。还学习了如何使用CMakeLists.txt和正确构建新的操作界面package.xml,以及如何验证构建是否成功。

最近更新

  1. TCP协议是安全的吗?

    2024-04-24 11:54:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-24 11:54:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-24 11:54:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-24 11:54:01       18 阅读

热门阅读

  1. 【数据结构】 单向链表的实现

    2024-04-24 11:54:01       26 阅读
  2. python制作ppt

    2024-04-24 11:54:01       31 阅读
  3. 桐乡上元——新概念英语对高考有用吗?

    2024-04-24 11:54:01       18 阅读
  4. 前端npm详解

    2024-04-24 11:54:01       14 阅读
  5. 互联网轻量级框架整合之MyBatis动态SQL

    2024-04-24 11:54:01       13 阅读
  6. AWS云服务器选择哪个区域最好?

    2024-04-24 11:54:01       17 阅读
  7. Redis的应用场景有哪些

    2024-04-24 11:54:01       12 阅读
  8. Mysql8 创建表,按年/月分区存储

    2024-04-24 11:54:01       13 阅读
  9. 剑指offer--最小的k个数

    2024-04-24 11:54:01       14 阅读
  10. 一个基于 Vue.js 实现的简单增删改查(CRUD)案例

    2024-04-24 11:54:01       12 阅读