创建服务并使用它:对三个整数求和。我们需要两个节点,一个服务器一个客户端。
在功能包chapter2_tutrorials中,src文件夹下新建两个节点并使用example2_a.cpp和example2_b.cpp为名称。
在example_a.cpp中:
#include "ros/ros.h"
#include "chapter2_tutorials/chapter2_srv1.h" //包含我们创建的srv文件
bool add(chapter2_tutorials::chapter2_srv1::Request &req,
chapter2_tutorials::chapter2_srv1::Response &res) //服务变量
{
res.sum = req.A + req.B + req.C;
ROS_INFO("request: A=%d, B=%d C=%d", (int)req.A, (int)req.B, (int)req.C);//请求输入
ROS_INFO("sending back response: [%d]", (int)res.sum); //输出
return true;
}
//这个函数会对3个变量求和,并将计算结果发送给其他节点
int main(int argc, char **argv)
{
ros::init(argc, argv, "add_3_ints_server");
ros::NodeHandle n;
ros::ServiceServer service = n.advertiseService("add_3_ints", add); //创建服务并发布广播
ROS_INFO("Ready to add 3 i