主要内容

rosactionclient

创建ROS操作客户端

描述

使用rosactionclient服务器使用一个连接到一个动作SimpleActionClient对象和请求的执行行动的目标。你可以得到反馈执行过程和在任何时候取消我们的目标。的SimpleActionClient对象封装简单的操作客户端和使您能够跟踪一个目标。

创建

描述

例子

客户端= rosactionclient (actionname)创建一个客户端指定ROSActionName。客户端自动确定动作类型。如果没有行动,这个函数显示一个错误。

使用rosactionclient服务器连接到一个动作和请求的执行行动的目标。你可以得到反馈执行进展和在任何时候取消我们的目标。

客户端= rosactionclient (actionname,actiontype)创建一个行动客户指定的名称和类型(ActionType)。如果没有行动,或名称和类型不匹配,会显示一个错误的函数。

(客户端,goalMsg)= rosactionclient (___)返回一个目标消息发送操作客户端创建从以前的语法使用任何参数。的目标消息与消息的默认值初始化。

如果ActionFcn,FeedbackFcn,ResultFcn回调函数定义,他们被称为当行动的目标是处理服务器。所有回调与先前发送的目标被禁用,但前面的目标不是取消。

(___)= rosactionclient (___“DataFormat”,“结构”)使用的消息结构,而不是对象。有关更多信息,请参见ROS消息结构

客户端= ros.SimpleActionClient (节点,actionname)创建一个客户端指定ROS动作名称。的节点节点对象连接到ROS网络。客户端自动确定动作类型。如果没有行动,会显示一个错误的函数。

客户端= ros.SimpleActionClient (节点,actionname,actiontype)创建一个行动客户指定的名称和类型。你可以得到一个操作使用的类型rosaction类型actionname

客户端= ros.SimpleActionClient (___“DataFormat”,“结构”)使用的消息结构,而不是对象。有关更多信息,请参见ROS消息结构

属性

全部展开

ROS行动的名字,作为一个特征向量返回。动作名称必须匹配的主题之一rosaction(“列表”)输出。

动作类型ROS行动,作为字符串返回标量或特征向量。你可以使用动作的动作类型rosaction类型< action_name >。更多细节,请参阅rosaction

指标是否客户机连接到服务器ROS行动,返回真正的。使用waitForServer等到服务器连接时,客户端建立一个行动。

跟踪目标,作为ROS返回消息。这个消息是最后目标这个客户端发送消息。目标消息类型取决于行动。

目标状态,返回以下之一:

  • “等待”——目标是收到了,但尚未被接受或者被拒绝。

  • “活跃”——目标是接受并运行在服务器上。

  • “成功”——目标成功执行。

  • “抢占”——一个动作前,目标客户取消了它执行完成。

  • “失败”——我们的目标是流产之前执行完成。操作服务器通常中止一个目标。

  • “拒绝”——目标后不被接受的“等待”状态。操作服务器通常会触发这个地位。

  • “回忆”——客户取消的目标时“等待”状态。

  • 《迷失》——一个内部错误发生在操作客户端。

激活功能,作为一个函数返回句柄。这个函数执行时GoalState被设置为“活跃”。默认情况下,显示的函数“目标是积极的。”。你可以设置功能[]在激活的行动客户什么都不做。

反馈功能,作为一个函数返回句柄。这个函数执行新的反馈消息时收到操作服务器。默认情况下,显示的细节消息的函数。你可以设置功能[]行动给客户没有反馈。

结果功能,作为一个函数返回句柄。这个函数执行当服务器执行目标和完成国家和消息返回一个结果。默认情况下,函数显示的状态和细节消息。你可以设置功能[]行动的客户一旦目标完成。

消息格式,指定为“对象”“结构”。必须设置这个属性在创建使用名称-值输入。有关更多信息,请参见ROS消息结构

对象的功能

cancelGoal 取消最后一个目标客户发送的
cancelAllGoals 取消所有目标服务器上操作
rosmessage 创建ROS消息
sendGoal 发送消息到目标服务器
sendGoalAndWait 发送的目标信息,等待结果
waitForServer 等待服务器开始行动

例子

全部折叠

这个例子展示了如何创建一个ROS行动客户机和执行行动。行动类型必须事先建立一个行动服务器运行。

你必须设置“/斐波那契”动作类型。运行该操作服务器,使用以下命令在活性氧系统:

rosrun actionlib_tutorials fibonacci_server

连接到一个ROS网络。你必须连接到一个ROS网络收集信息关于行动是可用的。取代ipaddress你的网络地址。

ipaddress =“192.168.203.133”;rosinit (ipaddress, 11311)
初始化全局节点/ matlab_global_node_81947 NodeURI http://192.168.203.1:54283

网络上的可用操作列表。唯一的行动建立在这个网络“/斐波那契”行动。

rosaction列表
/斐波那契

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

[actClient, goalMsg] = rosactionclient (“/斐波那契”,“DataFormat”,“结构”);

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

waitForServer (actClient);

斐波那契行动将计算斐波那契序列对于一个给定的命令中指定的目标信息。返回的消息目标是创建行动时可以修改客户端和服务器发送目标ROS行动。设置为一个int32值8。

goalMsg。订单= int32 (8);

发送并等待其完成目标。指定一个10秒的超时完成的行动。

[resultMsg, resultState] = sendGoalAndWait (actClient goalMsg 10);
rosShowDetails (resultMsg)
ans = ' MessageType: actionlib_tutorials / FibonacciResult序列:[0,1,1,2,3,5,8,13,21)”

断开与ROS的网络。

rosshutdown
关闭全局节点/ matlab_global_node_81947 NodeURI http://192.168.203.1:54283

这个例子展示了如何发送和取消对ROS的行为目标。动作类型必须是事先设置与操作服务器运行。

你必须设置“/斐波那契”动作类型。运行该操作服务器,使用以下命令在活性氧系统:

rosrun actionlib_tutorials fibonacci_server

首先,建立一个客户ROS行动。然后,发送一个目标信息和修改参数。最后,取消你的目标和行动上的所有目标服务器。

连接到一个活性氧与指定的IP地址。创建一个客户机连接到ROS网络使用ROS的行动rosactionclient。指定动作名称。等待客户端连接到服务器。

rosinit (“192.168.203.133”,11311)
初始化全局节点/ matlab_global_node_18287 NodeURI http://192.168.203.1:55284
[actClient, goalMsg] = rosactionclient (“/斐波那契”,“DataFormat”,“结构”);waitForServer (actClient);

发送一个目标信息和修改参数。等待目标完成执行。

goalMsg。订单= int32 (4);[resultMsg, resultState] = sendGoalAndWait (actClient goalMsg)
resultMsg =结构体字段:MessageType:“actionlib_tutorials / FibonacciResult”序列:[0 1 1 2 3]
resultState = '成功'
rosShowDetails (resultMsg)
ans = ' MessageType: actionlib_tutorials / FibonacciResult序列:[0,1,1,2,3]”

发送一个新的目标消息没有等待。

goalMsg。订单= int32 (5);sendGoal (actClient goalMsg)

取消ROS行动上的目标客户,actClient

cancelGoal (actClient)

取消所有服务器上的目标行动actClient连接到。

cancelAllGoals (actClient)

删除操作客户端。

删除(actClient)

断开与ROS的网络。

rosshutdown
关闭全局节点/ matlab_global_node_18287 NodeURI http://192.168.203.1:55284

扩展功能

版本历史

介绍了R2019b

全部展开