主要内容

isServerAvailable

确定ROS或ROS 2服务服务器是否可用

描述

例子

状态= isServerAvailable (客户端确定服务名是否与客户端可用,并返回状态相应的行动。

例子

全部折叠

连接ROS网络。

rosinit
启动ROS核心…耗时0.35385秒。在http://172.29.209.26:59266上初始化ROS master。初始化全局节点/matlab_global_node_04063,使用NodeURI http://dcc245873glnxa64:37529/和MasterURI http://localhost:59266。

设置业务服务器。使用ROS消息数据格式的结构。

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

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

如果(isServerAvailable(client)) [connectionStatus,connectionStatustext] = waitForServer(client)结束
connectionStatus =逻辑1
connectionStatustext = 'success'

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

响应=呼叫(客户端)
响应=带字段的结构:MessageType:“std_srvs / EmptyResponse”

如果调用上述函数失败,将导致错误。方法,而不是返回错误,如果希望使用条件对调用失败作出反应,则返回状态而且statustext调用函数的输出。的状态输出表示调用是否成功,而statustext提供附加信息。

numcallfails = 0;[response,status,statustext] = call(客户端,“超时”3);如果~status numcallfails = numcallfails + 1;流(“呼叫失败号码%d。错误原因:%s\n"、numCallFailures statustext)其他的disp(响应)结束
MessageType:“std_srvs / EmptyResponse”

关闭ROS网络。

rosshutdown
使用NodeURI http://dcc245873glnxa64:37529/和MasterURI http://localhost:59266关闭全局节点/matlab_global_node_04063。在http://172.29.209.26:59266上关闭ROS master。

创建带有两个节点的示例ROS 2网络。

Node_1 = ros2node(“node_1_service_client”);Node_2 = ros2node(“node_2_service_client”);

设置一个服务服务器并将其连接到一个ROS 2节点。指定回调函数flipstring,它翻转输入字符串。回调函数在本例的最后定义。

Server = ros2svcserver(node_1,/测试的“test_msgs / BasicTypes”, @flipString);

设置一个相同服务类型的服务客户端,并将其附加到不同的节点。

客户端= ros2svcclient(node_2,/测试的“test_msgs / BasicTypes”);

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

[connectionStatus,connectionStatustext] = waitForServer(客户端)
connectionStatus =逻辑1
connectionStatustext = 'success'

基于客户端创建请求消息。将字符串赋值给消息中的相应字段,string_value

请求= ros2message(客户端);请求。string_value =“hello world”

检查业务服务器是否可用。如果是,则发送一个服务请求并等待响应。指定服务等待响应3秒。

如果(isServerAvailable(客户端))response = call(客户端,请求)“超时”3);结束

对象中的请求消息的反转字符串string_value字段。

response.string_value
Ans = 'dlrow olleh'

如果调用上述函数失败,将导致错误。方法,而不是返回错误,如果希望使用条件对调用失败作出反应,则返回状态而且statustext调用函数的输出。的状态输出表示调用是否成功,而statustext提供附加信息。

numcallfails = 0;[response,status,statustext] = call(客户端,请求,“超时”3);如果~status numcallfails = numcallfails + 1;流(“呼叫失败号码%d。错误原因:%s\n"、numCallFailures statustext)其他的disp (response.string_value)结束
dlrow olleh

用于翻转字符串的回调函数定义如下。

函数resp = flipString(req,resp)反转REQ中字符串的顺序,并在RESP中返回。分别地。String_value = fliplr(req.string_value);结束

输入参数

全部折叠

ROS或ROS 2服务客户端,指定为ros。ServiceClientros2serviceclient对象句柄。这个服务客户端使您能够向服务服务器发送请求。

输出参数

全部折叠

服务服务器可用性的状态,返回为逻辑标量。如果服务器的名称和类型与客户端不可用,状态

扩展功能

版本历史

R2021b中引入