主要内容

rossvcclient

连接ROS服务服务器

描述

使用rossvcclientros.ServiceClient创建一个ROS服务客户端对象。这个服务客户机使用持久连接发送请求,并接收响应,ROS服务服务器。坚持,直到服务客户机的连接被删除或服务服务器变得不可用。

使用ros.ServiceClient当连接到一个特定的语法ROS节点。

请注意

在未来的版本中,ROS工具箱将使用的消息结构,而不是对象ROS的消息。

现在使用的消息结构,设置“DataFormat”名称-值参数“结构”。有关更多信息,请参见ROS消息结构

创建

描述

例子

客户端= rossvcclient ()创建一个服务客户端与给定连接,得到它ServiceType从一个服务服务器。该命令语法防止当前的MATLAB®程序运行,直到它可以连接到服务器的服务。

客户端= rossvcclient (、名称、值)指定的一个或多个提供额外的选项名称,值对参数。

(客户端,reqmsg)= rossvcclient (___)返回一个新的服务请求消息reqmsg从先前的语法,使用任何参数。的消息类型reqmsg是由服务吗客户端连接到。消息是用默认值初始化的。您还可以创建请求消息使用rosmessage

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

例子

客户= ros.ServiceClient (节点,的名字)创建一个服务客户端,连接到一个服务器服务。客户端从服务器获取服务类型。服务客户机连接到ros.Node对象句柄,节点

客户= ros.ServiceClient (节点,的名字“超时”,超时)指定超时时间以秒为客户机连接服务器的服务。

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

属性

全部展开

这个属性是只读的。

服务的名称,指定为一个字符串标量或特征向量。

例子:“/露台/ get_model_state”

这个属性是只读的。

指定类型的服务,作为一个字符串标量或特征向量。

例子:“gazebo_msgs / GetModelState”

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

对象的功能

rosmessage 创建ROS消息
调用 叫活性氧ROS 2服务服务器并接收响应
isServerAvailable 确定活性氧ROS 2服务服务器是可用的
waitForServer 等待活性氧ROS 2服务器开始服务

例子

全部折叠

连接到一个ROS网络。

rosinit
启动ROS核心….Done 1.1448秒。初始化ROS主在http://172.29.207.162:51634上。初始化全局节点/ matlab_global_node_07457 NodeURI http://dcc434238glnxa64:39411和http://localhost MasterURI: 51634。

建立一个服务器服务。使用结构ROS消息数据格式。

服务器= rossvcserver (/测试的,“std_srvs /空”@exampleHelperROSEmptyCallback,“DataFormat”,“结构”);客户= rossvcclient (/测试的,“DataFormat”,“结构”);

检查服务服务器是否可用。如果是,等待服务客户端连接到服务器。

如果(isServerAvailable(客户端))[connectionStatus connectionStatustext] = waitForServer(客户端)结束
connectionStatus =逻辑1
connectionStatustext = '成功'

使用默认消息调用服务的服务器。

=调用的响应(客户端)
响应=结构体字段:MessageType:“std_srvs / EmptyResponse”

如果调用上面的函数失败,它会导致错误。而不是一个错误,如果你更愿意对使用条件语句调用失败,返回状态statustext输出从调用函数。的状态输出表明如果调用成功了,statustext提供额外的信息。

numCallFailures = 0;(反应,地位,statustext) =调用(客户端,“超时”3);如果~地位numCallFailures = numCallFailues + 1;流(“叫失败数% d。错误原因:% s \ n”、numCallFailures statustext)其他的disp(响应)结束
MessageType:“std_srvs / EmptyResponse”

ROS网络关闭。

rosshutdown
关闭全局节点/ matlab_global_node_07457 NodeURI http://dcc434238glnxa64:39411和http://localhost MasterURI: 51634。在http://172.29.207.162:51634上关闭ROS的主人。

创建一个ROS服务通过创建一个服务ServiceServer对象和使用ServiceClient通过网络对象请求信息。服务器使用的回调函数接受一个字符串,逆转它,并返回颠倒字符串。

ROS主和节点开始。

主= ros.Core;
启动ROS核心……在0.81649秒内完成。
节点= ros.Node (/测试的);

创建一个服务服务器。这个服务器预计一个字符串作为请求和响应基于回调的一个字符串。使用结构ROS消息数据格式。

服务器= ros.ServiceServer(节点,' /数据/字符串',“roseus也叫/ StringString”,“DataFormat”,“结构”);

创建一个回调函数。此函数接受一个输入字符串的Str的属性要求的事情并返回它Str的属性分别地。这里显示的函数定义,但以下定义的例子。要求的事情ROS消息创建使用吗rosmessage

函数(职责)= flipString(~、点播、职责)% FLIPSTRING逆转在请求并返回一个字符串的顺序分别地。分别地。Str =fliplr(req.Str);结束

指定的服务调用的回调函数。

服务器。NewRequestFcn = @flipString;

创建一个服务客户端和服务器连接到服务。使用结构ROS消息数据格式。

创建一个基于客户端请求消息。

客户= ros.ServiceClient(节点,' /数据/字符串',“DataFormat”,“结构”);请求= rosmessage(客户端);请求。Str =“hello world”;

发送一个服务请求,并等待响应。指定服务3秒等待一个响应。

=调用的响应(客户端请求,“超时”3)
响应=结构体字段:MessageType:“roseus也叫/ StringStringResponse”Str:“dlrow olleh”

响应是一个翻转字符串从请求消息。

明确的服务客户,服务服务器,ROS节点。关闭了ROS的主人。

清楚(“客户”,“服务器”,“节点”)明确(“大师”)
函数(职责)= flipString(~、点播、职责)% FLIPSTRING逆转在请求并返回一个字符串的顺序分别地。分别地。Str =fliplr(req.Str);结束

扩展功能

版本历史

介绍了R2019b

全部展开

在未来的发布行为改变

不推荐在R2021b开始

在未来的发布行为改变