本文内容来自官方wiki:http://wiki.ros.org/ROS/Tutorials/UnderstandingServicesParams

  1. ROS服务(service)
    服务也是ROS中一种通信机制,但是不同于主题的发布和订阅,服务采取了一种“请求(request)-响应(response)”的机制来进行数据交换。
    和服务有关的功能可以使用rosservice命令来进行。

    rosservice list        列出活动的服务信息
    rosservice call 使用给定参数调用服务
    rosservice type 打印出服务类型
    rosservice find 查找给定类型的服务
    rosservice uri 打印服务的ROSRPC 源
    1. rosservice list
      该命令列出当前活动的服务,例如在小乌龟的例子中,我们运行rosservice list
      返回如下:

      $ rosservice list
      /clear
      /kill
      /reset
      /rosout/get_loggers
      /rosout/set_logger_level
      /rostopic_21128_1568429034667/get_loggers
      /rostopic_21128_1568429034667/set_logger_level
      /rostopic_25467_1568471203069/get_loggers
      /rostopic_25467_1568471203069/set_logger_level
      /rqt_gui_py_node_25560/get_loggers
      /rqt_gui_py_node_25560/set_logger_level
      /rqt_gui_py_node_25926/get_loggers
      /rqt_gui_py_node_25926/set_logger_level
      /spawn
      /teleop_turtle/get_loggers
      /teleop_turtle/set_logger_level
      /turtle1/set_pen
      /turtle1/teleport_absolute
      /turtle1/teleport_relative
      /turtlesim/get_loggers
      /turtlesim/set_logger_level
    2. rosservice type
      然后,使用rosservice type可以查看服务类型:
      $ rosservice type /clear
      std_srvs/Empty

      返回Empty表示该服务不用指定参数,即只表示一个功能动作,而无需数据。

    3. rosservice call
      使用rosservice call可以调用服务。
      用法如下:
      rosservice call [service] [args]

      例如,想调用/clear,则使用如下语句:

      rosservice call /clear
      

      则会清除掉小乌龟移动留下的轨迹。

      我们可以看一下带有参数的服务/spwan的参数:

      $ rosservice type /spawn | rossrv show
      float32 x
      float32 y
      float32 theta
      string name
      ---
      string name

      可以看出/spawn服务类型的数据参数为3个float32表示位置(x,y)和朝向theta和一个字符串表示名字name。
      用如下命令调用该服务:

      rosservice call /spawn 2 2 0.2 ""
      

      则产生另外一个小乌龟:

  2. ROS参数(rosparam)
    rosparam允许在ROS参数服务器(Parameter Server)中存储并操作参数(个人理解类似于编程中的全局变量)。参数服务器采取YAML标记语言来存储如下数据类型:
    integers(整型), floats(浮点型), boolean(布尔型), dictionaries(字典(键值类型)), 和lists(列表类型)。参数相关操作使用rosparam命令进行,用法如下:
    rosparam set            设置参数值
    rosparam get 获取参数值
    rosparam load 从文件加载参数
    rosparam dump 存储参数到文件
    rosparam delete 删除参数
    rosparam list 列出参数名
    1. rosparam list

      该命令可以列出所有参数名,例如:

      $ rosparam list
      /background_b
      /background_g
      /background_r
      /rosdistro
      /roslaunch/uris/host_localhost__35773
      /rosversion
      /run_id
    2. rosparam set和rosparam get
      可以通过rosparam set设置参数值,例如如下命令设置背景色中的红色通道值为200:

      rosparam set /background_r 200
      

      必须再调用clear服务来刷新背景:

      $ rosservice call /clear
      

      则背景变成粉红色

      使用如下命令可以获得该背景中的绿色:

      $ rosparam get /background_g
      86

      使用rosparam get /命令可获得所有参数值:

      $ rosparam get /
      background_b: 255
      background_g: 86
      background_r: 200
      rosdistro: 'kinetic '
      roslaunch:
      uris: {host_localhost__35773: 'http://localhost:35773/'}
      rosversion: '1.12.14 '
      run_id: d0977b84-d694-11e9-b3cd-502b73e82f34
    3. rosparam dump和rosparam load
      可以使用rosparam dump存储参数,使用rosparam load加载参数:

      rosparam dump [file_name] [namespace]
      rosparam load [file_name] [namespace]

      可以指定参数文件名和命名空间
      如下命令将当前命名空间中的所有参数写入params.yaml文件。

      $ rosparam dump params.yaml
      

      如下命令从params.yaml文件中加载所有参数到copy命名空间。

      $ rosparam load params.yaml copy
      

      然后可以读取该空间中的参数:

      $ rosparam get /copy/background_b
      255

最新文章

  1. C#中使用Redis不同数据结构的内存占有量的疑问和对比测试
  2. hibernate inverse属性的作用
  3. 惊艳!9个不可思议的 HTML5 Canvas 应用试验
  4. Error retrieving parent for item: No resource found that matches the given name 'android:TextAppearance.Material.Widget.Button.Inverse'.
  5. 基于Spring MVC的Web应用开发(三) - Resources
  6. Backbone Backbone-localStorage demo
  7. [转] 关于C++中模板中的typename和class的区别比较
  8. SpringMVC:学习笔记(2)——RequestMapping及请求映射
  9. ScreenPresso注册码
  10. ATM机模拟系统
  11. [Codeforces440D]Berland Federalization
  12. Multi-View Region Adaptive Multi-temporal DMM and RGB Action Recognition
  13. CMake error with move_base_msgs问题解决
  14. python-列表,元组,range
  15. Android WebView清空缓存
  16. sudo su到root或到其它用户报这种错
  17. 利用HttpURLConnection发送post请求上传多个文件
  18. win7下PLSQL Developer提示“ORA-12154: TNS:无法解析指定的连接标识符”
  19. PetaPoco使用
  20. hibernate单向关联与双向关联的区别(原)

热门文章

  1. 前端面试:js数据类型
  2. CentOS使用日常
  3. [转]Shell编程
  4. Css——显示2行数据,超出显示...
  5. Balanced Lineup -POJ3264
  6. python字符记录
  7. 【PAT甲级】1006 Sign In and Sign Out (25 分)
  8. java 实现图片上传功能
  9. 关于eclipse项目右键没有project facets的解决方法遇到的问题
  10. java 中类加载器