isServerAvailable
确定ROS或ROS 2服务服务器是否可用
描述
例子
使用默认消息调用服务客户端
连接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服务客户端
创建带有两个节点的示例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。ServiceClient
对象句柄|ros2serviceclient
对象句柄
ROS或ROS 2服务客户端,指定为ros。ServiceClient
或ros2serviceclient
对象句柄。这个服务客户端使您能够向服务服务器发送请求。
输出参数
状态
—业务服务器可用状态
逻辑
标量
服务服务器可用性的状态,返回为逻辑
标量。如果服务器的名称和类型与客户端
不可用,状态
将假
.
扩展功能
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
万博1manbetx仅对生成类型支持,
可执行的
.使用在MATLAB函数不支持Block。万博1manbetx
版本历史
R2021b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。