在开始本篇文章之前,默认我们在前面的几篇文章中已经进行了如下的工作:
- 创建了beginner_tutorial包
- 在beginner_tutorial包中创建了AddTwoInts.srv文件
如果没有满足以上条件的话,请重新阅读本系列的第7、8篇文章。
一、Service节点
在包内的src
下创建add_two_ints_server.cpp
,粘贴以下内容:
#include "ros/ros.h"
#include "beginner_tutorials/AddTwoInts.h"
bool add(beginner_tutorials::AddTwoInts::Request &req,
beginner_tutorials::AddTwoInts::Response &res)
{
res.sum = req.a + req.b;
ROS_INFO("request: x=%ld, y=%ld", (long int)req.a, (long int)req.b);
ROS_INFO("sending back response: [%ld]", (long int)res.sum);
return true;
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "add_two_ints_server");
ros::NodeHandle n;
ros::ServiceServer service = n.advertiseService("add_two_ints", add);
ROS_INFO("Ready to add two ints.");
ros::spin();
return 0;
}
现在逐一对以上代码进行解释。<