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

1.ROS 服务

服务(services)是节点间通信的另一种方法,服务允许节点发送一个请求或者接收一个响应

2.使用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

该命令列出当前节点提供了那些服务
在运行turtlsim节点的情况下运行命令:

rosservice list

得到输出
在这里插入图片描述
接下来使用rosservice进一步观察/clear这个服务

2.2 rosservice type

rosservice type /clear

输出
在这里插入图片描述
该服务为空,意思是当这个服务被呼叫时它没有任何动作(即它发送请求时不发送任何数据,收到响应时不接收任何数据)。
我们使用rosservice call 调用一下这个服务看看

2.3 rosservice call

rosservice call /clear

在这里插入图片描述
正如预测的那样,小乌龟的轨迹消失了。
我们再看一下/spawn这个服务,输入命令

rosservice type /spawn

得到回复

turtlesim/Spawn

再看下这个服务类型的具体描述

rossrv show turtlesim/Spawn

得到回复

float32 x
float32 y
float32 theta
string name
---
string name

该服务允许我们在一个指定位置以一个指定角度孵化出一个新的乌龟出来。运行

rosservice call /spawn 2 2 0.2 ""

我们的乌龟窗口在指定位置出现了一个新的乌龟
请添加图片描述

3.使用rosparam

rosparam允许我们存储以及操作ROS parameter server里面的数据。

一些用法

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

3.1 rosparam list

运行rosparam list 可以看到目前有以下这些参数

/rosdistro
/roslaunch/uris/host_julis_pc__44711
/rosversion
/run_id
/turtlesim/background_b
/turtlesim/background_g
/turtlesim/background_r

接着我们尝试改改这些参数看看有什么变化

3.2 rosparam set and rosparam get

用法

rosparam set [param_name]
rosparam get [param_name]

我们看下这个/turtlesim/background_r 参数的值

rosparam get /turtlesim/background_r

得到回复69
请添加图片描述
我们尝试把这个值改成 150

rosparam set /turtlesim/background_r 150

现在我们看看改完之后的值

rosparam get /turtlesim/background_r

新窗口颜色里面的rgb中的r值变成了150,但改完之后乌龟背景并没有变化,我们继续运行rosservice call /clear之后发现乌龟窗口的背景颜色更新了。
请添加图片描述
我们也可以运行查看所有参数的值

rosparam get /

得到以下回复

rosdistro: 'noetic

  '
roslaunch:
  uris:
    host_julis_pc__44711: http://julis-PC:44711/
rosversion: '1.15.14

  '
run_id: 4f99cfa0-efcd-11ec-82b3-0b4b67e0ce0f
turtlesim:
  background_b: 255
  background_g: 86
  background_r: 150

3.3 rosparam dump and rosparam load

我们可以使用dump指令把参数统统保存在xml文件中,对应地也可以用load指令载入xml文件中的参数。用法如下:

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

运行:

rosparam dump params.yaml

此时我们的home文件夹里面多了个params.xml文件,里面保存了目前ros节点下所有的参数。我们甚至可以把xml文件的参数载入到一个新的namespace中

$ rosparam load params.yaml copy_turtle
$ rosparam get /copy_turtle/turtlesim/background_b

得到输出 255

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值