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

ROS的action通信——实现阶乘运算(一)

在ROS中除了常见的话题(topic)通信、服务(server)通信等方式,还有action通信这一方式,由于可以实时反馈任务完成情况,该通信方式被广泛运用于机器人导航等任务中。本文将通过三个小节的分享,实现基于action通信的阶乘运算。
第一节:自定义action文件
第二节:基于C++实现action通信的服务端
第三节:基于C++实现action通信的客户端

本节为第一节:自定义action文件

自定义action文件的流程与自定义msg,自定义srv文件十分相似,主要包括编写action文件、配置CMakeLists文件、编译生成三个步骤。详细步骤如下:

步骤1:在工作空间action_ws下的src文件夹中创建package(factorial_pkg):

依赖项为 rospy roscpp std_msgs actionlib actionlib_msgs message_generation

cd ${当前路径}/action_ws/src
catkin_create_pkg factorial_pkg rospy roscpp std_msgs actionlib actionlib_msgs message_generation

步骤2:在action_ws/src/factorial_pkg下创建action文件夹,并在action文件夹下创建Factorial.action文件(文件名首字母建议大写)

在这里插入图片描述

步骤3:编辑action文件,主要包括目标值、结果值、反馈值三个部分,每个部分之间用"—"隔开

# goal definition
int64 goal
---
# result definition
int64 result
---
# feedback
float64 feedback_num

步骤4:配置 factorial_pkg 下的 CMakeLists.txt 文件

cmake_minimum_required(VERSION 3.0.2)
project(factorial_pkg)

find_package(catkin REQUIRED COMPONENTS
  actionlib
  actionlib_msgs
  message_generation
  roscpp
  rospy
  std_msgs
)

## Generate actions in the 'action' folder
add_action_files(
  FILES
  Factorial.action
)

## Generate added messages and services with any dependencies listed here
generate_messages(
  DEPENDENCIES
  actionlib_msgs
  std_msgs
)

catkin_package(
#  INCLUDE_DIRS include
#  LIBRARIES factorial_pkg
 CATKIN_DEPENDS actionlib actionlib_msgs message_generation roscpp rospy std_msgs
#  DEPENDS system_lib
)

步骤5:配置package.xml 下的 CMakeLists.txt 文件

主要是检查52行后面一大段代码中,有无<build_depend>message_generation</build_depend>
<exec_depend>message_generation</exec_depend>
没有的话补上。

  <buildtool_depend>catkin</buildtool_depend>
  <build_depend>actionlib</build_depend>
  <build_depend>actionlib_msgs</build_depend>
  <build_depend>message_generation</build_depend>
  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>
  <build_export_depend>actionlib</build_export_depend>
  <build_export_depend>actionlib_msgs</build_export_depend>
  <build_export_depend>roscpp</build_export_depend>
  <build_export_depend>rospy</build_export_depend>
  <build_export_depend>std_msgs</build_export_depend>
  <exec_depend>actionlib</exec_depend>
  <exec_depend>actionlib_msgs</exec_depend>
  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>
  <exec_depend>message_generation</exec_depend>

步骤6:编译文件

在action_ws下进行编译,如果没有报错,即表明action文件编写无误。

source ./devel/setup.bash
catkin_make

http://www.kler.cn/a/565182.html

相关文章:

  • 【洛谷贪心算法题】P2240部分背包问题
  • 线性模型 - 支持向量机
  • SQL命令详解之操作数据表
  • linux--卡顿
  • 【AI】C# 集成 DeepSeek 模型实现 AI 私有化
  • ubuntu22.04安装docker engine
  • 银河麒麟高级服务器操作系统在线调整/pro/{PID}/limits文件中nofile的软限制和硬限制参数值操作方法
  • 阿里云ECS通用计算
  • OSPF BIT 类型说明
  • AndroidAOSP定制隐藏某个应用的图标
  • DeepSeek赋能大模型内容安全,网易易盾AIGC内容风控解决方案三大升级
  • jsonp
  • NLP的预处理数据
  • 怎么实现LLM的微调
  • 【强化学习笔记1】从强化学习的基本概念到近端策略优化(PPO)
  • 某住宅小区地下车库安科瑞的新能源汽车充电桩的配电设计与应用方案
  • 鸿蒙 ArkUI 实现敲木鱼小游戏
  • 深度学习之特征提取
  • C#中使用System.Net库实现自动发送邮件功能
  • vs code默认主题修改配置