C++版本

  1. ros::ServiceServer server = nh.advertiseService("sum", doRequest);

服务端注册函数,使用NodeHandle句柄创建,两个参数分别是:服务名称、回调函数句柄

  1. ros::ServiceClient client = nh.serviceClient<hello_service_std::sum>("sum");

客户端注册函数,参数为:服务名称

客户端与服务端是通过注册在ROS Master的服务名称匹配的

  1. ros::service::waitForService("sum");

  2. client.waitForExistence();

上面两个函数都是用于客户端等待服务端响应,用法不一样,若服务端无响应,则客户端挂起

  1. num.request.num1 = atoi(argv[1]);

这是一个C标准函数,功能是把字符串转换成整型数。原型在<stdlib.h>

atoi("123");结果是123,是一个整型值

  1. bool flag = client.call(num);

对一个远程服务器请求调用RPC服务,成功返回True,失败False

最常用