任务:客户端节点,运行向服务器发送两个数字,服务器端节点接收两个数字求和并将结果响应回客户端
服务器实现:解析客户端提交的数据,并运算再产生响应
1、包含头文件
2、初始化ROS节点
3、创建节点句柄
4、创建一个服务对象
5、处理请求并产生响应
6、spin()
内容参考:AutolaborROS机器人入门(视频链接如下)
#include "ros/ros.h"
#include "plumbing_server_client/AddInts.h"
bool doNums(plumbing_server_client::AddInts::Request &request,
plumbing_server_client::AddInts::Response &response)
{
//1、处理请求
int num1 = request.num1;
int num2 = request.num2;
ROS_INFO("收到的请求数据:num1=%d,num2 = %d",num1,num2);
//2、组织响应
int sum = num1 + num2;
response.sum = sum;
ROS_INFO("求和结果:sum=%d",sum);
return true;
}
int main(int argc, char *argv[])
{
setlocale(LC_ALL,"");
ros::init(argc,argv,"heishui");
ros::NodeHandle nh;
ros::ServiceServer server = nh.advertiseService("addInts",doNums);
ROS_INFO("服务器端启动");
ros::spin();
return 0;
}