ROS学习笔记六:理解ROS服务和参数

ROS学习笔记六:理解ROS服务和参数

主要介绍ROS服务和参数,同时使用命令行工具rosservice和rosparam。

ROS service

service是节点之间互相通信的另一种方式,services允许节点发送一个请求并接收一个回应。

使用rosservice

rosservice -h
Commands:
    rosservice args print service arguments
    rosservice call call the service with the provided args
    rosservice find find services by service type
    rosservice info print information about service
    rosservice list list active services
    rosservice type print service type
    rosservice uri  print service ROSRPC uri

rosservice list

rosservice list
/clear
/kill
/reset
/rosout/get_loggers
/rosout/set_logger_level
/spawn
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_leve

可以看出turtlesim有9个相关的服务,另外两个与rosout有关。

rosservice type

rosservice type [service]
rosservice type clear
std_srvs/Empty

clear服务类型是空值,说明在调用该服务的时候,不需要提供参数,即发送请求的时候不需要发送数据,接收回应的时候也没有接收数据。

rosservice call

rosservice call [service] [args]

运行rosservice call /clear,发现小海龟运行的轨迹就已经被清除了。
下面看一下服务spawn,是一个拥有参数的服务。

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

这个服务允许我们在指定位置和方位的基础上生成一个小海龟,姓名选项是可选的。

roservice call spawn 2 2 0.2 ""
name: turtle2

这个服务返回了新创建的海龟的名称,如下图所示
ROS学习笔记六:理解ROS服务和参数_第1张图片

使用rosparam

rosparam命令允许我们在ROS 参数服务器上存储和复制数据。参数服务器可以存储整数、浮点数、布尔值、字典和列表值。rosparam的用法:

rosparam set            set parameter
rosparam get            get parameter
rosparam load           load parameters from file
rosparam dump           dump parameters to file
rosparam delete         delete parameter
rosparam list           list parameter names

rosparam list

通过该命令可以看一下现在参数服务器上了有多少个参数:

rosparam list
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_ubuntu__39738
/rosversion
/run_id

rosparam set

可以通过rosparam set命令来改变其中的参数:

rosparam set [param]
rosparam get [param]

更改背景的红色通道颜色数值:

rosparam set background_r 150
rosservice call clear

则窗口背景颜色更改为如下颜色:
ROS学习笔记六:理解ROS服务和参数_第2张图片
通过rosparam get命令我们可以查看参数服务器上的其他参数的值:

rosparam get /background_b
255

也可以利用命令rosparam get /命令来查看整个参数服务器上所有参数的值。

rosparam get /
background_b: 255
background_g: 86
background_r: 150
rosdistro: 'indigo'
roslaunch:uris: {host_ubuntu__39738: 'http://ubuntu:39738/'} rosversion: '1.11.20'
run_id: c885312c-6ab6-11e6-9697-000c29521e21

rosparam dump和rosparam load

用法

rosparam load [filename] [namespace]
rosparam dump [filename] [namespace]

这里我们将所有的参数写入param.yaml文件中(未指定命名空间namespace)

rosparam dump param.yaml

下面就可以通过该文件将参数载入一个新的命名空间,例如copy

rosparam load param.yaml copy
rosparam get /copy/background_r
rosparam list
/background_b
/background_g
/background_r
/copy/background_b
/copy/background_g
/copy/background_r
/copy/rosdistro
/copy/roslaunch/uris/host_ubuntu__39738
/copy/rosversion
/copy/run_id
/rosdistro
/roslaunch/uris/host_ubuntu__39738
/rosversion
/run_id

可以看出已经成功载入新的命名空间copy当中

rosparam get /copy/background_r
150

总结

主要分为ROS服务和参数两个部分
服务,主要命令工具是rosservice:
列出所有服务:rosservice list
查看服务类型:rosservice type [service]
调用服务:rosservice call [service] [args]

参数,主要命令工具是rosparam:
设置参数:rosparam set [param]
获得参数:rosparam get [param]
写入参数:rosparam dump [filename] [namespace]
载入参数:rosparam load [filename] [namespace]

祝枫
2016年8月25日于哈尔滨

你可能感兴趣的:(ROS,ROS学习笔记)