Server部分:
#!/usr/bin/env pythonimport sys
import osimport rospy
#from beginner.srv import *
from beginner.srv import AddTwoIntsdef add_two_ints_client(x,y):
rospy.wait_for_service('add_two_ints')# rospy.wait_for_service(‘service的tipoc’)
try:
add_two_ints=rospy.ServiceProxy('add_two_ints',AddTwoInts)#client请求(request)后server的返回值(response)add_two_ints 通过rospy.ServiceProxy的方式向service发送(request)请求
resp1=add_two_ints(x,y) #将参数发送给server
return resp1.sum
except rospy.ServiceException, e:
print "Service call failed: %s"%edef usage():
return "%s [x,y]"%sys.argv[0]if __name__=="__main__":
if len(sys.argv)==3:
x=int(sys.argv[1])
y=int(sys.argv[2])
else:
print usage()
sys.exit(1)
print"Resquesting %s+%s"%(x,y)
print"%s+%s=%s"%(x,y,add_two_ints_client(x,y))

Client部分:import rospy
from beginner.srv import *
#from beginner.srv import *
#from beginner.srv import AddTwoIntsdef handle_add_two_ints(req):
print("Returning[%s+%s=%s]"%(req.a,req.b,(req.a+req.b)))
sum=req.a+req.b
return AddTwoIntsResponse(sum)def add_two_ints_server():
rospy.init_node('add_two_ints_server')
s = rospy.Service('add_two_ints',AddTwoInts,handle_add_two_ints)#服务节点,服务类型,这里必须和AddTwoInts.srv的文件名一致,处理函数 处理函数调用和返回实例化的AddTwoIntsRes
print"Ready to add Two Ints"
rospy.spin()
if __name__=="__main__":
add_two_ints_server()

转载于:https://www.cnblogs.com/sea-stream/p/10070260.html

ros service相关推荐

  1. boost::bind with ros service,ros中ServiceServer用boost::bind绑定多个参数

    boost::bind with ros service,ros中advertiseService用boost::bind绑定多个参数 直接上代码: #include <ros/ros.h> ...

  2. arduino设备跑 ros service server 的波折记

    arduino设备跑 ros service server 的波折记. 引-- 参考前文https://blog.csdn.net/qq_38288618/article/details/104082 ...

  3. Learning ROS: Service and Client (C++)

    本文主要部分来源于ROS官网的Tutorials. Writing a Service Node roscd beginner_tutorials gedit src/add_two_ints_ser ...

  4. ROS学习小笔记(Topic通信 ,service通信,参数服务器)

    (菜鸡整理的学习笔记,原文链接已经挂上,不小心过来的朋友建议去博主那边学习,谢谢) 原文链接:https://blog.csdn.net/LoongEmbedded/article/details/1 ...

  5. ROS保姆级教程(二)--Service通讯方式实现

    上一篇博客我们介绍了ROS的通信方式中的topic(话题)通信,我们知道topic是ROS中的一种单向的异步通信方式.然而有些时候单向的通信满足不了通信要求,比如当一些节点只是临时而非周期性的需要某些 ...

  6. ROS通信机制(二) —— 服务(service)与srv文件

    文章目录 简述 特点 相关常用命令 通信模型 核心元素 通信过程 代码示例(服务端和客户端) 服务端(server.cpp) 客户端(client.cpp) 配置 CMakeLists.txt 编译和 ...

  7. ROS编程: 一些Tips

    接触了快一年的ROS, 这段时间个人而言, 似乎完全没在日常的编程中对线程/IPC有所考虑. 这说明ROS是一个很易用的框架, 在编程上了屏蔽了很多系统知识, 可以更加专注于逻辑/算法等. 但是从程序 ...

  8. ROS Gazebo(三):启动gazebo/URDF

    打开Gazebo的方式主要有两种:rosrun 和 roslaunch. 1.启动ROS节点 启动ROS节点.bring up 机器人的标准工具是roslaunch.打开一个空的Gazebo世界命令如 ...

  9. ROS系统 参数的获取和设置

    cd ~/catkin_ws/src catkin_create_pkg learning_parameter roscpp rospy std_srvs rosparam 列出当前所有参数:rosp ...

最新文章

  1. OpenFace库(Tadas Baltrusaitis)中基于Haar Cascade Classifiers进行人脸检测的测试代码
  2. Parentheses Balance (括号平衡)---栈
  3. jsp ajax动态添加数据,jquery Ajax实现Select动态添加数据
  4. python3 pip 更换国内 pypi 镜像 源
  5. 编程之美3.2 电话号码对应英语字母
  6. 第二十二章:动画(十五)
  7. 帮你梳理springboot所有常用注解
  8. $compile 手动编译
  9. Linux下Samba服务器搭建
  10. VS Code 报错Vetur can‘t find ‘tsconfig.json‘ or ‘jsconfig.json‘的解决方法
  11. 资深前端工程师:裁人后,我总结了 7 个必备技能
  12. 181223每日一句
  13. Docker玩转Rhadoop
  14. ADS仿真设计AB类射频功率放大器
  15. QODBC查询Oracle中文乱码问题
  16. 典型问题分析——三方应用网络异常分析方法
  17. hexo史上最全搭建教程(转载)
  18. python控制ppt翻页_python 操作ppt
  19. snipeit 安装、备份文件恢复
  20. 【Visual C++】游戏开发笔记四十 浅墨DirectX教程之八 绘制真实质感的三维世界 光照与材质专场

热门文章

  1. python爬虫教程网-Python爬虫全集
  2. python利器怎么编程-C++和Python混合编程的利器
  3. python爬取贴吧所有帖子-python爬取贴吧帖子
  4. python流程控制-Python 流程控制
  5. python提高办公效率-提高工作效率的一点建议
  6. python到底可以做什么-Python到底可以做什么?
  7. python3.7安装numpy模块-Python3.7模块numpy
  8. python比excel优势-python数据分析相对于bi和excel的优势是什么?
  9. python语言可以应用在哪些方面-python应用于哪些方面
  10. python做电脑软件-Python编程软件(专业电脑编程工具)V3.9.1 最新版