当前位置: 首页 > news >正文

ros2 跟着官方教学从零开始 创建动作*action*接口

ros2 从零开始15 创建动作action接口

前言

之前提到过动作action这个概念,我们回顾一下。动作是ROS 2中的一种通信类型,旨在执行长期任务。 它们由三个部分组成:目标、反馈和结果。

背景

之前学过动作action。与其他通信类型及其接口(topics/msg 和 services/srv)类似, 你也可以自定义软件包中的动作。 这个教程会教你如何定义和构建一个你可以使用的动作。

实践

1.创建一个包

进入工作区的src目录,用如下指令创建我们的包ros2 pkg create --build-type ament_cmake action_tutorials_interfaces

root@bc2bf85b2e4a:~/ros2_ws# cd src root@bc2bf85b2e4a:~/ros2_ws/src# ros2 pkg create --build-type ament_cmake action_tutorials_interfaces going to create a new package package name: action_tutorials_interfaces destination directory: /root/ros2_ws/src package format: 3 version: 0.0.0 description: TODO: Package description maintainer: ['root <****@****>'] licenses: ['TODO: License declaration'] build type: ament_cmake dependencies: [] creating folder ./action_tutorials_interfaces creating ./action_tutorials_interfaces/package.xml creating source and include folder creating folder ./action_tutorials_interfaces/src creating folder ./action_tutorials_interfaces/include/action_tutorials_interfaces creating ./action_tutorials_interfaces/CMakeLists.txt [WARNING]: Unknown license 'TODO: License declaration'. This has been set in the package.xml, but no LICENSE file has been created. It is recommended to use one of the ament license identitifers: Apache-2.0 BSL-1.0 BSD-2.0 BSD-2-Clause BSD-3-Clause GPL-3.0-only LGPL-3.0-only MIT MIT-0

action_tutorials_interfaces是本次新包的名称。
备注:将 .msg、.srv 和 .action文件与使用它们的节点分开的是个好习惯。 这使得在不同软件包间重复使用接口定义变得更容易。

2.创建自定义动作action

自定义动作action定义在 .action文件中,形式如下:

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

动作由3部分组成,由—分隔:

  • 请求消息由动作客户端action client发送给动作服务器action server,用来开始新目标goal
  • 响应消息是,当目标goal完成时,动作服务器action server会向动作客户端action client发送的结果消息。
  • 反馈消息会定期从动作服务器action server发送到动作客户端action client,更新目标goal相关的信息(比如进度信息)。
    一个动作的实体通常被称为目标goal

现在我们定义一个动作Fibonacci, 用来计算“斐波那契数列”。
斐波那契数列:斐波那契数列是典型的一个数列 0, 1, 1, 2, 3, 5, 8, 13… 从第3项开始,当前值是前2项之和

2.1 创建动作文件

进入我们的包action_tutorials_interfaces,并且创建action目录。

cd action_tutorials_interfaces mkdir action

action目录,创建一个文件Fibonacci.action, 文件内容如下:

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

解析:

  • order是我们需要计算的斐波那契数列,也是目标goal
  • sequence是我们最终得到的斐波那契数列的结果
  • partial_sequence 是我们目前计算出来的数列
2.2 修改CMakeLists.txt

在编译之前,我们需要修改CMakeLists.txt, 把如下的内容贴在ament_package()行之前

find_package(rosidl_default_generators REQUIRED) rosidl_generate_interfaces(${PROJECT_NAME} "action/Fibonacci.action" )
2.3 修改package.xml

同理,我们也要把如下信息贴在package.xml里面:

<buildtool_depend>rosidl_default_generators</buildtool_depend> <depend>action_msgs</depend> <member_of_group>rosidl_interface_packages</member_of_group>

3. 开始编译

进入工作区,用colcon build,等待编译完成。

root@bc2bf85b2e4a:/# cd ~/ros2_ws root@bc2bf85b2e4a:~/ros2_ws# colcon build --packages-select action_tutorials_interfaces Starting >>> action_tutorials_interfaces Finished <<< action_tutorials_interfaces [0.48s] Summary: 1 package finished [0.80s]

4. 查看动作action接口

编译完成后,我们需要安装后才能运行,使用

source install/setup.sh

打开一个终端,输入如下命令,查看接口

root@bc2bf85b2e4a:~/ros2_ws# source install/setup.sh root@bc2bf85b2e4a:~/ros2_ws# ros2 interface show action_tutorials_interfaces/action/Fibonacci int32 order --- int32[] sequence --- int32[] partial_sequence

如上显示,ros已经识别到我们定义的动作接口Fibonacci了。

总结

接下来,我们将写动作服务器action server和 动作客户端action client

http://www.jsqmd.com/news/659379/

相关文章:

  • GLM-OCR驱动微信小程序开发:拍照取字与实时翻译
  • Android车载软件开发:从需求到交付的全流程实践与面试准备
  • 保姆级教学:Sambert多情感语音合成镜像部署与使用全攻略
  • Python 虚拟环境完全指南:避免包管理混乱
  • 2026亚克力标牌厂家推荐排行榜天津臻诚科技以产能、专利、环保三维度领跑全国 - 爱采购寻源宝典
  • C语言内存全景图:从代码到运行的完整旅程
  • 从linspace到logspace:Matlab新手必须掌握的两种‘间距’生成函数对比指南
  • 3D Face HRN模型与Claude AI的集成应用:智能虚拟助手开发
  • 阿里云提出“经验导航“框架:让AI搜索代理像侦探一样思考
  • 在Linux上管理Jellyfin媒体库的难题,Tsukimi如何为你轻松解决?
  • 2026氧化铁颜料厂家推荐排行榜灵寿县全丰矿产品加工厂领衔(产能+专利+质量三重认证) - 爱采购寻源宝典
  • TMS320F28335实战:IQmath库从安装到三角函数应用全解析
  • GLM-4.1V-9B-Base开发指南:使用C++高性能后端封装模型推理服务
  • 【扣子Coze】新手入门教程,搭建智能体+工作流(全流程拆解)
  • Qwen3-ASR-1.7B应用场景:视频字幕自动生成服务搭建
  • 代码随想录第三天
  • NaViL-9B多模态模型应用:智能识别图片内容,轻松实现图文对话
  • 基于YOLOv5与Graphormer的跨模态应用:从分子图像到属性预测
  • “我们删掉了50%的Code Review会议”——某独角兽CTO亲述:如何用智能生成+轻量规则引擎构建零信任但高吞吐的敏捷交付闭环(限免下载:内部Code Trust Score仪表盘模板)
  • 行业词典融入:提升gte-base-zh在垂直领域的语义理解
  • 2026年,广东中青控股如何成为企业信赖的APP拉新首选渠道?
  • 山东大学项目实训二 2
  • 常见网络攻击
  • 不锈钢彩涂板哪家信誉好
  • 2026 最新 从零搭建本地大模型 RAG 知识库问答系统:基于 Llama 3.2 8B 量化版 + LangChain+Chroma,全流程代码实操 + 踩坑指南
  • 保姆级攻略投票平台
  • 用陶晶驰串口屏和STM32F407做个简易扫频仪:手把手教你绘制幅频特性曲线
  • NVIDIA Profile Inspector配置修复指南:3步解决设置保存失败问题
  • PowerQuery数据源实战:从入门到精通的连接艺术
  • 可持续编码实践:ESG开发标准