主要内容

isPreemeptRequested

检查是否一个目标被抢占

描述

例子

状态= isPreemptRequested (服务器)检查是否目标服务器当前正在执行的行动,服务器抢占并返回状态相应的行动。操作客户端连接服务器启动目标抢占通过取消当前的目标或发送一个新目标执行。

例子

全部折叠

这个例子展示了如何创建一个ROS行动服务器,连接操作客户端,接收目标,并执行它。

连接到一个ROS网络。

rosinit
启动ROS核心……在0.35226秒内完成。初始化ROS主在http://172.29.209.26:52934上。初始化全局节点/ matlab_global_node_89531 NodeURI http://dcc245873glnxa64:35157和http://localhost MasterURI: 52934。

设置一个操作服务器计算斐波那契序列。使用结构ROS消息数据格式。使用fibbonacciExecution回调函数。

cb = @fibonacciExecution;服务器= rosactionserver (“/斐波那契”,“actionlib_tutorials /斐波那契”、ExecuteGoalFcn = cb DataFormat =“结构”)
服务器= SimpleActionServer属性:ActionName:“/斐波那契”ActionType:“actionlib_tutorials /斐波那契”ExecuteGoalFcn: @fibonacciExecution DataFormat:“结构”

创建操作客户端向服务器发送一个目标,计算斐波那契序列10项过去的前两项,01。显示结果序列。

客户= rosactionclient (“/斐波那契”,“actionlib_tutorials /斐波那契”DataFormat =“结构”);目标= rosmessage(客户端);的目标。订单= int32 (10);结果= sendGoalAndWait(客户、目标);result.Sequence
ans =12 x1 int32列向量0 1 1 2 3 5 8 21 34⋮13

ROS关闭网络。

rosshutdown
关闭全局节点/ matlab_global_node_89531 NodeURI http://dcc245873glnxa64:35157和http://localhost MasterURI: 52934。在http://172.29.209.26:52934上关闭ROS的主人。

金宝app支持功能

回调函数fibbonacciExecution每次执行服务器接收到一个目标执行来自客户机的请求。这个函数检查如果目标被抢占,执行目标和目标执行过程中向客户发送反馈。

函数(因此,成功)= fibonacciExecution (src、目标、defaultFeedback defaultResult)%初始化变量成功= true;结果= defaultResult;反馈= defaultFeedback;反馈。序列= int32 ([0 1]);k = 1: goal.Order%检查客户端没有取消或发送一个新目标如果isPreemptRequested (src)成功= false;打破结束%定期发送反馈给客户端feedback.Sequence结束(+ 1)= feedback.Sequence (end-1) + feedback.Sequence(结束);sendFeedback (src、反馈)%的停顿,让时间来完成其他的回调(如客户反馈)暂停(0.2)结束如果成功的结果。序列= feedback.Sequence;结束结束

输入参数

全部折叠

ROS行动服务器指定为一个SimpleActionServer对象句柄。

输出参数

全部折叠

目标抢占地位,哑音逻辑标量。如果目标被抢占,函数返回状态真正的

版本历史

介绍了R2022a