ROS action通信

ROS Action通信允许双向通信,并在任务执行过程中提供中间状态反馈,与服务通信不同。它包含goal、result和feedback三个部分。Action状态包括Pending、Active、Recalling、Preempting、Rejected、Succeeded、Recalled和Preempted。Simple Action Client简化了状态管理。文章提供了服务器端、客户端代码示例及多任务请求的讨论。
摘要由CSDN通过智能技术生成

相关课程视频下载链接
和彩云 网盘链接:
链接:和彩云网盘
提取码:qo1z
简介:和彩云网盘是中国移动旗下的网盘,目前对免费用户下载不限速,只要简单注册一个账号就可以下载

迅雷云盘 网盘链接:
迅雷网盘链接
提取码:h22t
简介:迅雷网盘 免费用户下载虽然限速,但是比百度网盘要好

百度网盘:
链接:百度网盘链接
提取码:HHZN
简介:如果你是VIP那就用百度网盘吧。

上一篇:ROS服务通信
Action通信与服务通信一样也是双向通信,最主要的不同的是action通信可以在任务没结束前可以有很多中间状态的过程反馈,同时服务器上的服务同一时刻只能处理一个请求,因此先收到goal有可能被后来的goal给挤掉,所以异步竞争会有状态的转变。ROS把action通信都放在actionlib这个库中了。
action文件有三个区域组成:goal,result,feedback. goal部分由客户端发送目标任务的数值,result与feedback由服务器端反馈给客户端。以上是通信需求的应用,除此之外伴随着还有状态跟随。

  • action通信的状态有:
  • Pending: 当前goal等待服务器端处理
  • Active: 激活当前goal准备处理。
  • Recalling: goal还没有被处理,同时收到一个来自客户端的取消goal的请求,注意这个时候服务器端不能保证一定会取消这个goal.
  • Preempting: 当前goal正在处理,但是收到客户端的取消这个goal的请求,同样服务器端不能保证会取消这个goal.
  • Rejected: goal被拒绝,服务器没有处理,也没有收到客户端的取消请求。
  • Succeeded: goal成功被服务器处理完成。
  • Recalled: 在服务器端执行之前这个goal就被另一个goal或者客户端的取消请求给取消了。
  • Preempted: 正在处理中的goal被另一个goal或者客户端的取消请求给取消了。

action通信,服务器端goal状态的转换图如下:
goal 轉移狀態圖
客戶端goal狀態圖變化:
在这里插入图片描述

Simple Action Client 类

simple action client 类已经简化状态转移,简化只剩下了三种状态:
在这里插入图片描述
多任务请求的情况:
在这里插入图片描述

在这里插入图片描述
由于不确定性,不能保证每次goal的申请都会被执行。
附上代码:
服务器端代码:

#include <ros/ros.h>
#include <actionlib/server/simple_action_server.h>
#include "action_demo/action_demoAction.h"
#include <vector>
#include <iostream>
#include <string>
#include <strstream>

/*该函数只是做打印杨辉三角*/
void PrintChineseAngle(
  const uint &                                                   lines,
  actionlib::SimpleActionServer<action_demo::action_demoAction> *as)
{
   

  std::vector<int> ch_angle((1 + lines) * lines / 2, 1);
  float            offset_ = 100 / lines;

  action_demo::action_demoFeedback feedback;

  float complete_precent = 0.f;
  int * left             
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值