ROS通信编程_服务编程_服务器编程

系统环境:Ubuntu16.04

实现一个服务器:
1.初始化ROS节点
2.创建Server实例
3.循环等待服务请求,进入回调函数
4.在回调函数中完成服务功能的处理,并反馈应答数据

在功能包/src下新建文件server.cpp,输入以下内容并保存退出。
例程:
/**

  • AddTwoInts Server
    */
    #include “ros/ros.h”
    //由编译系统自动根据我们先前创建的srv文件生成的对应该srv文件的头文件。
    #include “learning_communication/AddTwoInts.h”

// service回调函数,输入参数req,输出参数res
//这个函数提供两个int值求和的服务,int值从request里面获取,而返回数据装入response内,
//这些数据类型都定义在srv文件内部,函数返回一个boolean值。
bool add(learning_communication::AddTwoInts::Request &req,
learning_communication::AddTwoInts::Response &res)
{
// 将输入参数中的请求数据相加,结果放到应答变量中
//现在,两个int值已经相加,并存入了response。然后一些关于request和response的信息被记录下来。
//最后,service完成计算后返回true值。
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节点初始化
ros::init(argc, argv, “add_two_ints_server”);

// 创建节点句柄
ros::NodeHandle n;

// 创建一个名为add_two_ints的server,注册回调函数add()
//service已经建立起来,并在ROS内发布出来。
ros::ServiceServer service = n.advertiseService(“add_two_ints”, add);

// 循环等待回调函数
ROS_INFO(“Ready to add two ints.”);
ros::spin();

return 0;
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值