主要内容

rosactionclient.

创建ROS操作客户端

描述

使用rosactionclient.使用a连接到动作服务器SimpleAteCtionClient.对象并要求执行行动目标。您可以在执行过程中获得反馈,并随时取消目标。这SimpleAteCtionClient.Object封装了一个简单的操作客户端,使您可以一次跟踪单个目标。

创建

描述

例子

客户= rosactionclient(ActionName.为指定的ROS创建客户端ActionName.。客户端自动确定操作类型。如果操作不可用,则此函数显示错误。

采用rosactionclient.要连接到动作服务器并请求执行动作目标。您可以在执行进度上获得反馈,并随时取消目标。

客户= rosactionclient(ActionName.ActionType.创建具有指定名称和类型的操作客户端(ActionType.)。如果操作不可用,或名称和类型不匹配,则该函数显示错误。

[客户守门员] = rosactionClient(___返回目标消息以发送使用先前语法中的任何参数创建的操作客户端。这目标初始化消息,默认值为该消息。

如果是ActionFCN.evedbackfcn., 和结果流程定义回调,当目标在操作服务器上处理时,调用它们。与先前发送的目标关联的所有回调都被禁用,但之前的目标不会被取消。

[___] = rosactionClient(___,“dataformat”,“struct”)使用消息结构而不是对象。有关更多信息,请参阅ROS消息结构

客户= ROS.SimpleActionClient(节点ActionName.为指定的ROS操作名称创建客户端。这节点是个节点连接到ROS网络的对象。客户端自动确定操作类型。如果操作不可用,则该函数显示错误。

客户= ROS.SimpleActionClient(节点ActionName.ActionType.创建具有指定名称和类型的动作客户端。您可以使用动作的类型rosaction.类型actionname.

客户= ROS.SimpleActionClient(___,“dataformat”,“struct”)使用消息结构而不是对象。有关更多信息,请参阅ROS消息结构

特性

展开全部

ROS操作名称,作为字符向量返回。操作名称必须与其中一个主题匹配rosaction(“列表”)输出。

ROS操作的操作类型,作为字符串标量或字符向量返回。您可以使用操作的动作类型ROSACTION类型。有关更多详细信息,请参阅rosaction.

指示客户端是否连接到ROS操作服务器,返回为错误的要么真的。采用waitforserver等待在设置操作客户端时连接服务器。

跟踪目标,作为ROS消息返回。此消息是此客户端发送的最后一个目标消息。目标消息取决于操作类型。

目标状态,作为以下内容之一返回:

  • '待办的'- 收到目标,但尚未被接受或拒绝。

  • '积极的'- 目标被接受并在服务器上运行。

  • '成功'- 目标成功执行。

  • '抢先'- 在完成执行之前,Action Client取消了目标。

  • '中止'- 在完成执行之前,目标被中止。操作服务器通常中止目标。

  • '被拒绝'- 在进入之后,目标没有被接受'待办的'状态。操作服务器通常会触发此状态。

  • '召回'- 客户取消了目标的目标'待办的'状态。

  • '丢失的'- 操作客户端中发生内部错误。

激活函数,作为函数句柄返回。此函数执行何时守门员被设置为'积极的'。默认情况下,函数显示“目标是活跃的。”。您可以将函数设置为[]让行动客户端在激活时无所作为。

反馈函数,作为函数句柄返回。当从Action Server接收到新的反馈消息时,此函数执行。默认情况下,该函数显示消息的详细信息。您可以将函数设置为[]有关客户端不提供任何反馈。

结果函数,作为函数句柄返回。此函数在服务器完成执行目标并返回结果状态和消息时执行。默认情况下,该函数显示消息的状态和详细信息。您可以将函数设置为[]在完成目标完成后,措施客户不一定。

消息格式,指定为“目的”要么“结构”。您必须使用名称值输入设置创建此属性。有关更多信息,请参阅ROS消息结构

对象功能

CANCELGOAL. 取消客户发送的最后目标
CANCLALLGOALS. 取消操作服务器上的所有目标
Rosmessage. 创建ROS消息
派遣 将目标消息发送到Action Server
Sendgoalandwait. 发送目标消息并等待结果
waitforserver 等待动作服务器启动

例子

全部收缩

此示例显示如何创建ROS操作客户端并执行操作。必须先之前设置动作类型,并使用操作服务器运行。

你必须已经设置了'/ fibonacci'操作类型。要运行此操作服务器,请在ROS系统上使用以下命令:

Rosrun ActionLib_tutorials FibonAcci_Server.

连接到ROS网络。您必须连接到ROS网络以收集有关可用操作的信息。代替IP地址使用您的网络地址。

ipaddress ='192.168.203.133';罗斯尼特(IPAddress,11311)
初始化全局节点/ matlab_global_node_81947与nodeuri http://192.168.203.1:54283/

列出网络上可用的操作。在这个网络上设置的唯一动作是'/ fibonacci'行动。

rosaction.列表
/ fibonacci.

通过指定操作名称创建操作客户端。使用ROS消息的结构。

[acclient,logmsg] = rosactionclient('/ fibonacci''datomformat''struct');

等待动作客户端连接到服务器。

waitforserver(acclient);

Fibonacci操作将计算目标消息中指定的给定顺序的FibonAcci序列。创建操作客户端时返回目标消息,并且可以被修改以将目标发送到ROS操作服务器。将订单设置为INT32.价值8。

legsmsg.Order = int32(8);

发送目标并等待完成。指定要完成操作的10秒的超时。

[结果含量] = SendgoalAndwait(Actclient,Logmsg,10);
rosshowdetails(结果用品)
ans ='messageType:ActionLib_tutorials / fibonAccIsult序列:[0,1,1,2,3,5,8,13,21]'

断开ROS网络连接。

Rosshutdown.
关闭全局节点/ matlab_global_node_81947与nodeuri http://192.168.203.1:54283/

此示例显示如何为ROS操作发送和取消目标。必须先将操作类型设置运行操作服务器。

你必须已经设置了'/ fibonacci'操作类型。要运行此操作服务器,请在ROS系统上使用以下命令:

Rosrun ActionLib_tutorials FibonAcci_Server.

首先,设置ROS操作客户端。然后,使用修改的参数发送目标消息。最后,取消您的目标和Action Server上的所有目标。

使用指定的IP地址连接到ROS网络。创建连接到ROS网络的ROS操作客户端rosactionclient.。指定操作名称。等待客户端连接到服务器。

罗斯尼特('192.168.203.133'11311)
使用nodeuri初始化全局节点/ matlab_global_node_18287 http://192.168.203.1:55284/
[acclient,logmsg] = rosactionclient('/ fibonacci''datomformat''struct');waitforserver(acclient);

使用修改的参数发送目标消息。等待目标完成执行。

legsmsg.Order = int32(4);[结果含量] = SendgoalAndwait(Actclient,GoalMSG)
结果=结构与字段:MessageType:'ActionLib_tutorials / fibonAccksult'序列:[0 1 1 2 3]
结果State ='成功'
rosshowdetails(结果用品)
ans ='messageType:ActionLib_tutorials / fibonAccIsult序列:[0,1,1,2,3]'

在不等待的情况下发送新的目标消息。

legsmsg.Order = int32(5);Sendgoal(Actiant,Logmsg)

取消ROS操作客户端的目标,acclient.

CANCELGOAL(ACTCLIEL)

取消动作服务器上的所有目标acclient.连接到。

CANCLALLGOALS(ACTCLIEL)

删除操作客户端。

删除(acclient)

断开ROS网络连接。

Rosshutdown.
用nodeuri关闭全局节点/ matlab_global_node_18287 http://192.168.203.1:55284/

兼容性考虑因素

展开全部

未来发布的行为变化

在R2019B中介绍