ROS学习笔记(四)

Services(服务)

这部分我们聊聊ROS服务和参数,当然也要使用rosservice和rosparam。我们依然接着笔记三,来看看/turtlesim提供什么服务。我们在前面说过,服务是另外一种节点直接通信的方式,服务允许节点发送request(需求)和接收response(回应)
rosservice通过服务能够轻松的连接ROS客户端或服务的框架,rosservice有几条命令可以用于主题:

rosservice list         打印活跃服务的信息
rosservice call         根据提供的参数调用服务
rosservice type         打印服务类型
rosservice find         通过服务类型寻找服务
rosservice uri          print service ROSRPC uri

OK,我们先来用第一个最熟悉的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

让我们用type命令看的更清楚一些:

用法:rosservice type [service]
$ rosservice type /clear

返回如下:
std_srvs/Empty

这里我们发现这个clear服务参数是空的,这就说明他在被调用的时候是不需要输入参数的。也即是他在发送需求的时候不会发送数据,接收回应的时候页不会接收数据。接下来让我们来调用他看看:

用法:rosservice call [service] [args]
$ rosservice call /clear

这里写图片描述
图片里小乌龟原来移动的轨迹已经被全部清空了,也就是说他清理了/turtlesim的后台。下面我们讲一个带参数的服务:

$ rosservice type /spawn| rossrv show

返回如下:
float32 x
float32 y
float32 theta
string name
---
string name 

/spawn这个服务是生成一个新的小乌龟,看参数我们知道,我们可以给定一个坐标位置还有旋转角度,甚至还可以给他命名,当然已经有名字文件这个选项了,所以我们也可以不给他命名,那么让我们来试试:

$ rosservice call /spawn 2 2 0.2 ""

这里写图片描述

Paramete(参数)

rosparam允许我们储存和操作ROS参数服务(Parameter Server)的数据,这个参数服务能够储存整型,浮点型,布尔型,词典和清单。rosparam用YAML语法来组织语言,例如1是整型,1.0是浮点型,一是字符串,true是布尔型,[1,2,3]是清单,{a:b,c:d}是词典。rosparam有许多命令用在参数方面,我们来一起看下:

rosparam set            设置参数
rosparam get            获取参数
rosparam load           从文件载入参数
rosparam dump           将参数写进文件
rosparam delete         删除参数
rosparam list           列出参数名

我们先用列出/turtlesim节点的参数,可以看到背景颜色的参数RGB:

$ rosparam list

返回如下:
/background_b
/background_g
/background_r
/roslaunch/uris/aqy:51932
/run_id

接下来我们试试改一下其中的参数,看看背景颜色是否改变:

用法:rosparam set [param_name]
     rosparam get [param_name]
$ rosparam set /background_r 150
$ rosservice call /clear

这里写图片描述
我们还可以获得所有的参数:

$ rosparam get /

返回如下:
background_b: 255
background_g: 86
background_r: 150
roslaunch:
  uris: {'aqy:51932': 'http://aqy:51932/'}
run_id: e07ea71e-98df-11de-8875-001b21201aa8

最后我们可以将参数写入文件:

用法:rosparam dump [file_name] [namespace]
            rosparam load [file_name] [namespace]
$ rosparam dump params.yaml

我们看看写进没有,顺便我们将这个文件放在一个新的命名空间里:

$ rosparam load params.yaml copy
$ rosparam get /copy/background_b

返回如下:
255
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值