ROS通信编程_动作编程_定义cation文件

系统环境:Ubuntu16.04

在ros中,如果想要发送一个request给一个节点让该节点完成一些任务,并且给出一个回复,这样可以使用ros中的service完成。但是有一些应用中任务执行的时间很长,用户需要查看执行的进度如何,中止或者取消该任务,ros中提供了一个actionlib package来建立服务,执行一个长时间运行的可抢占目标。
使用client server接口,使用ROS action 协议通信。client和server都提供一套简单的API给用户来执行任务。

动作(action):
1.是一种问答通信机制
2.带有连续反馈
3.可以在任务过程中中止运行
4.基于ROS的消息机制实现

在这里插入图片描述
action接口:
1.goal:发布任务目标
2.cancel:请求取消任务
3.status:通知客户端当前的状态
4.feedback:周期反馈任务运行的监控数据
5.result:向客户端发送任务的执行结果,只发布一次

在这里插入图片描述
在功能包目录下新建action文件,并新建DoDishes.action文件,输入以下内容(去掉里面的句号),保存并退出。
。# Define the goal
uint32 dishwasher_id # Specify which dishwasher we want to use
—。
。# Define the result
uint32 total_dishes_cleaned
—。
。# Define a feedback message
float32 percent_complete

在功能包目录下的package.xml中添加功能包依赖
<build_depend>actionlib</build_depend>
<build_depend>actionlib_msgs</build_depend>
<exec_depend>actionlib</exec_depend>
<exec_depend>actionlib_msgs</exec_depend>

在功能包目录下的CMakeLists.txt中添加编译选项
find_package(catkin REQUIRED actionlib_msgs actionlib)
add_action_files(DIRECTORY action FILES DoDishes.action)
generate_messages(DEPENDENCIES actionlib_msgs)
注意:一个CMLists.txt中只有一个generate_messages,需要添加新的选项时直接在后面的括号里添加,无需再写一个generate_messages,否则编译时有可能出错。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值