ROS基础内容3--通信方式2之Services与Parameter

本文详细介绍了ROS(Robot Operating System)中的服务和服务工具rosservice的使用方法,包括服务的调用、服务类型的查询等;同时讲解了参数及其工具rosparam的应用,如参数的设置、获取及文件读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 .ROS服务和参数

官网教程:http://wiki.ros.org/cn/ROS/Tutorials/UnderstandingServicesParams

服务(services)是节点之间通讯的另一种方式。服务允许节点发送请求(request) 并获得一个响应(response)。

1.1 ROS service

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

通过rosservice -h查看:

~$ 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 ur

(1) rosservice list


启动一个turtlesim节点之后,再查看rosservice list,如下:

发现多了9项服务。

(2) rosservice type

rosservice type [service]

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

(3)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

如上图所示,通过~$ rosservice call spawn 2 2 0.2 tur2 又启动一个乌龟,名字为turt2.

ROS的Service与Topic不同:

A:它是一种Request/reply的方式传递。

B:节点之间发送请求和接受应答。

C:一对一模式,一个请求,一个响应。

ROS学习 <wbr><二> <wbr>ROS基本概念

rosservice的基本介绍就先到这里,后面我们还会再遇到,到时候再做进一步介绍。

1.2 rosparam的功能

rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器可以存储整数、浮点数、布尔值、字典和列表值。

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

(1)rosparam list

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

(2)rosparam set

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

rosparam set [param]
rosparam get [param]

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

rosparam set background_r 150
rosservice call clear

在调用rosservice call clear之前,背景没有变化,而调用之后背景确实发生变化,说明通过rosservice call clear才能让之前的命令起作用。

(3)rosparam get

通过rosparam get命令我们可以查看参数服务器上的某个参数或者所有参数的值:

(4)rosparam dump和rosparam load,类似ollydbg中的dump

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


从上图,我们看到得到的param中多出来/copy下的参数,并可以使用。

2.总结

服务,主要命令工具是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]

本文参考:http://blog.youkuaiyun.com/mountzf/article/details/52317885和http://blog.youkuaiyun.com/bobsweetie/article/details/43638803

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值