ROS学习笔记7(理解ROS服务和参数)

本教程介绍了ROS 服务和参数的知识,以及命令行工具rosservicerosparam的使用方法。

1 什么是ROS服务

service服务是节点之间的另外一种通信方式。

service服务允许一个节点发送一个请求 request 和接受一个回复 response

2 rosservice用法

rosservice命令可以在client/service之间的框架中,快速显示服务。

rosservice的用法为:

$ rosservice list         # print information about active services
$ rosservice call         # call the service with the provided args
$ rosservice type         # print service type
$ rosservice find         # find services by service type
$ rosservice uri          # print service ROSRPC uri

2.1 rosservice list

运行小海龟:

$ roscore
$ rosrun turtlesim turtlesim_node   
$ rosrun turtlesim turtle_teleop_key

输入查看rosservice list命令:

/clear										# 清除
/kill										# 终止
/reset										# 重置
# rosout节点提供的服务
/rosout/get_loggers
/rosout/set_logger_level
/rqt_gui_py_node_6571/get_loggers
/rqt_gui_py_node_6571/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.2 rosservice type

标准用法:

$ rosservice type [service]

例如:

$ rosservice type /turtlesim/get_loggers 
# echo
roscpp/GetLoggers

2.3 rosservice call

标准用法:

$ rosservice call [service] [args]

例如:
在这里插入图片描述

$ rosservice call /clear

在这里插入图片描述

发现路径被清除了。

➜  ~ rosservice type /spawn  | rossrv show
# echo
float32 x
float32 y
float32 theta
string name
---
string name

spawn命令可以在特定的位置(x, y)和方位theta重生一只小海龟

➜  ~ rosservice call /spawn 2 2 0.2 "liukai_turtle"  
# echo
name: "liukai_turtle"

现在看起来应该是这样子,有2只小乌龟了
在这里插入图片描述

3 rosparam用法

rosparam使得我们能够存储并操作ROS参数服务器Parameter Server上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。

rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:
1 是整型, 1.0 是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典。

rosparam有很多指令可以用来操作参数,如下所示:

使用方法:

rosparam set            设置参数
rosparam get            获取参数
rosparam load           从文件读取参数
rosparam dump           向文件中写入参数
rosparam delete         删除参数
rosparam list           列出参数名

3.1 rosparam list

$ rosparam list

我们可以看到turtlesim节点在参数服务器上有3个参数用于设定背景颜色:

/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_pc__46837
/rosversion
/run_id

3.2 rosparam set 和 rosparam get

标准用法:

rosparam set [param_name]
rosparam get [param_name]

例如设置背景颜色:

➜  ~ rosparam set /background_r 150
➜  ~ rosparam set /background_g 150
➜  ~ rosparam set /background_b 150
➜  ~ rosservice call /clear 

在这里插入图片描述

# 直接获取所有参数
➜  ~ rosparam get / 
# echo
background_b: 150
background_g: 150
background_r: 150
rosdistro: 'kinetic'
roslaunch:  uris: {host_pc__46837: 'http://pc:46837/'}
rosversion: '1.12.14'
run_id: 77171690-9d38-11e9-8214-40a5eff3ee5c

3.3 rosparam dump 和 rosparam load

标准用法:

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

把我们刚才的这些参数保存下来:

$ rosparam dump params.yaml

清除所有参数:

# 清除所有参数:
$ rosparam delete /  
# 重新运行一次服务
$ rosservice call /clear

在这里插入图片描述

查看保存的参数文件:

$ rosparam list
# echo
/background_b
/background_g
/background_r
/rosdistro
/roslaunch/uris/host_pc__46837
/rosversion
/run_id

再把我们刚才保存的params.yaml加载进来:

# 加载保存好的参数
$ rosparam load params.yaml 
# 重新运行一次服务
$ rosservice call /clear

又回到了刚才这个背景颜色
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值