ServicesParams
**服务(Services)**是节点之间通讯的另一种方式。
服务允许节点发送一个请求(request)并获得一个响应(response)。
rosservice
rosservice 可以很容易地通过服务附加到ROS客户端/服务器框架上
用法:
rosservice list 输出活跃服务的信息
rosservice call 用给定的参数调用服务
rosservice type 输出服务的类型
rosservice find 按服务的类型查找服务
rosservice uri 输出服务的ROSRPC uri
rosservice list
$ rosservice list
/clear
/kill
/reset
/rosout/get_loggers
/rosout/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
turtlesim节点提供了9个服务:
reset
clear
spawn
kill
turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/get_loggers
/turtlesim/set_logger_level
两个与rosout节点有关的服务
/rosout/get_loggers
/rosout/set_logger_level
rosservice type
使用rosservice type命令进一步查看clear(清除)服务
usage:
rosservice type [service]
$ rosservice type /clear
std_srvs/Empty 服务类型为empty(空),调用这个服务时不需要参数(发出请求时不发送数据,在接收响应时不接收数据)
rosservice call
使用rosservice call命令调用此服务
usage
rosservice call [service] [args]
无参数调用/clear
$ rosservice call /clear
清除了turtlesim_node背景上的轨迹
查看spawn(产卵)服务的信息
$ rosservice type /spawn | rossrv show
float32 x
float32 y
float32 theta
string name
---
string name
这个服务能让我们可以在给定的位置和角度生成一只新的乌龟。name字段是可选的,这里我们不设具体的名字,让turtlesim自动创建一个
$ rosservice call /spawn 2 2 0.2 ""
name: turtle2 返回了新产生的乌龟的名字
rosparam
rosparam能在ROS参数服务器(Parameter Server)上存储和操作数据。
参数服务器能够存储
整型(integer)、
浮点(float)、
布尔(boolean)、
字典(dictionaries)
列表(list)
等数据类型。
rosparam使用YAML标记语言的语法。
YAML的表述很自然:
1是整型,
1.0是浮点型,
one是字符串,
true是布尔型,
[1, 2, 3]是整型组成的列表,
{a: b, c: d}是字典。
rosparam有很多命令可以用来操作参数,如下所示:
usage:
rosparam set 设置参数
rosparam get 获取参数
rosparam load 从文件中加载参数
rosparam dump 向文件中转储参数
rosparam delete 删除参数
rosparam list 列出参数名
rosparam list
查看现在参数服务器上都有哪些参数
$ rosparam list
/rosdistro
/roslaunch/uris/host_zv_tm1703__33851
/rosversion
/run_id
/turtlesim/background_b 3个参数用于设定背景颜色
/turtlesim/background_g
/turtlesim/background_r
rosparam set | rosparam get
usage
rosparam set [param_name]
rosparam get [param_name]
修改背景颜色的红色通道值
$ rosparam set /turtlesim/background_r 150
$ rosservice call /clear 调用clear服务使得参数的修改能生效
用rosparam get /来显示参数服务器上的所有内容
$ rosparam get /
rosdistro: 'melodic
'
roslaunch:
uris: {host_usrname__33851: 'http://usrname:33851/'}
rosversion: '1.14.11
'
run_id: 533fd206-f426-11eb-9263-a0c589e341bc
turtlesim: {background_b: 10, background_g: 50, background_r: 150}
rosparam dump | rosparam load
将参数存储在一个文件中,以便下次可以重新加载它
usage
rosparam dump [file_name] [namespace]
rosparam load [file_name] [namespace]
将所有的参数写入params.yaml文件
$ rosparam dump params.yaml
可以将yaml文件重载入新的命名空间,例如copy_turtle
$ rosparam load params.yaml copy_turtle
$ rosparam get /copy_turtle/turtlesim/background_b
10