美文网首页
Ros.4 服务

Ros.4 服务

作者: proud2008 | 来源:发表于2020-07-14 11:01 被阅读0次

多个节点间通讯 定义srv
与定义 msg类似
在功能包的根目录下 创建srv文件
sum.srv文件如下

int64 a
int64 b
---
int64 sum

catkin_make install

#!/usr/bin/env python
# service.py

from __future__ import print_function

from hrg.srv import sum,sumResponse
import rospy

def handle_add_two_ints(req):
    print("Returning [%s + %s = %s]"%(req.a, req.b, (req.a + req.b)))
    return sumResponse(req.a + req.b)
  
def add_two_ints_server():
    rospy.init_node('add_two_ints_server')
    s = rospy.Service('add_two_ints', sum, handle_add_two_ints)
    print("Ready to add two ints.")
    rospy.spin()

if __name__ == "__main__":
    add_two_ints_server()
#!/usr/bin/env python
# client.py

from __future__ import print_function

import sys
import rospy
from hrg.srv import *

def add_two_ints_client(x, y):
      rospy.wait_for_service('add_two_ints')
      try:
          add_two_ints = rospy.ServiceProxy('add_two_ints', sum)
          resp1 = add_two_ints(x, y)
          return resp1.sum
      except rospy.ServiceException as e:
          print("Service call failed: %s"%e)
  
def 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("Requesting %s+%s"%(x, y))
    print("%s + %s = %s"%(x, y, add_two_ints_client(x, y)))
rosrun hrg service.py
root@chxin-virtual-machine:~/catkin_ws# rosrun  hrg service.py
Ready to add two ints.
Returning [1 + 2 = 3]
#新cmd窗口
rossum hrg client.py 1 2 输出如下 
  root@chxin-virtual-machine:~/catkin_ws# rosrun hrg client.py 1 2
  Requesting 1+2
  1 + 2 = 3

其他的功能包也可使用 msg srv 共享的,是在整个python环境中的


image.png

注,新开cmd

#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import rospy
from hrg.srv  import *
import sys

def _service():
    rospy.init_node("Service2")
    srv_server_handler = rospy.Service("add", sum, lambda req :sumResponse(req.a+req.b))
    rospy.spin()


def _client():
   add=rospy.ServiceProxy("add",sum)
   res=add(1,1)
   print(res)

if __name__ == "__main__":
     try:
        arg1=arg1=sys.argv[1]
        print(arg1)
        if("1"==arg1):
            _service()
        else:
            _client()
     except Exception as err:
         print(err)
         pass

相关文章

  • Ros.4 服务

    多个节点间通讯 定义srv与定义 msg类似在功能包的根目录下 创建srv文件sum.srv文件如下 catkin...

  • 服务服务服务

    今天下班回家的必经之路,被掉落的通信线阻隔了,意外可以理解,但是昨天已经发生了,为什么今天还没有处理啊?这个...

  • 百亿元的智力服务平台市场,「站场」想用自动化流程模式走“京东模式

    (转载)智力服务包括信息服务、中介服务、咨询服务、策划服务、认证服务、设计服务、律师服务、会计服务、翻译服务、报关...

  • 基本网站架构

    分类链接备份服务rsync服务网络存储服务NFS服务实时同步服务Sersync服务SSH服务SSH服务批量管理服务...

  • 服务啊服务

    同事推荐,说是腾讯投资的“每日优鲜”,所有东西2小时送到,今天还有60元优惠券可拿。 我听完介绍,就直接下载了AP...

  • Seva服务服务

    晨曦老师如是说: Seva是无私的服务,贡献团体,使其顺畅流转运作。“生命所为何来?”“为体验而来,滋养灵魂。”好...

  • 销售服务、无形资产、不动产注释

    一、销售服务 销售服务,是指提供交通运输服务、邮政服务、电信服务、建筑服务、金融服务、现代服务、生活服务。 (一)...

  • 服务雪崩、服务熔断、服务降级

    1. 服务雪崩 多个微服务之间调用的时候,假设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务...

  • 2020 技术趋势个人整合

    微服务框架技术 服务注册与发现 服务调用 服务熔断 负载均衡 服务降级 服务消息队列 配置中心管理 服务网关 服务...

  • 拼的是卖货

    还是拼服务 服务又是怎样的服务,服务开心,服务科普知识,服务娱乐,服务正能量思维 服务人需要什么,变现,赚钱!!!

网友评论

      本文标题:Ros.4 服务

      本文链接:https://www.haomeiwen.com/subject/nbqzcktx.html