zoukankan      html  css  js  c++  java
  • ros之服务(2)

    在上一服务中直接通过call子命令调用服务,这里在代码中调用服务

    service_client.py

     1 #!/usr/bin/env python                                                                            
     2  
     3 import rospy
     4  
     5 from basic.srv import WordCount 
     6  
     7 import sys 
     8  
     9 rospy.init_node('service_client')
    10  
    11 rospy.wait_for_service('word_count')
    12  
    13 word_counter = rospy.ServiceProxy('word_count',WordCount)
    14  
    15 words = ' '.join(sys.argv[1:])
    16  
    17 word_count = word_counter(words)
    18  
    19 print words, '->',word_count.count

    首先要等待服务端声明之前的服务,如果在服务声明之前使用它,这个调用会失败,并抛出异常,

    这里与话题的区别是即使话题没有声明也可以调用它。

    rospy,wait_for_service('word_count')   

    客户端要指定服务的名字和类型,这会使我们像调用本地函数一样使用服务,它将会帮我们作服务调用

    miao@openlib:~$ rosrun basic service_client.py  these are some words  hhh
    these are some words hhh -> 5

    停止服务端并重新运行客户端节点,客户端节点将会阻塞。等待服务被声明。此时启动服务端节点会使客户端节点继续工作。

    ros最大的限制是:当服务端因为某些原因不可用时服务端可能将永远等下去。服务意外终止,或者客户端在调用服务时弄错了名字等情况都会造成客户端卡住。

  • 相关阅读:
    XML介绍
    JavaScript基础
    pygame模块参数汇总(python游戏编程)
    CSS3
    CSS( Cascading Style Sheets )简书
    HTML5
    用python进行应用程序自动化测试(uiautomation)
    HTML入门
    Selenium2 (python)
    C#快速入门
  • 原文地址:https://www.cnblogs.com/miaorn/p/11755811.html
Copyright © 2011-2022 走看看