文档章节

7.理解ROS服务和参数

HuangJC
 HuangJC
发布于 2017/05/07 02:14
字数 857
阅读 91
收藏 0

确保turtlesim_node开启。

7.1 ROS Services

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

7.2使用rosservice

使用方法:

rosservice list 输出可用服务的信息

rosservice call 调用带参数的服务

rosservice type  输出服务类型

rosservice find 依据类型寻找服务find services by service type

rosservice uri 输出服务的ROSRPC url

7.3使用rosservice list

本命令是列出服务列表

rosservice list

list命令显示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.

7.4使用rosservice type

也就是获取服务的类型

使用方法:rosservice type [service]

试一下clear服务类型,

rosservice type clear

得到;std_srvs/Empty

说明服务类型为空(Empty),说明调用这个服务不用参数。

7.5使用rosservice call

本功能是执行该服务

使用方法:rosservice call [service] [args]     

args是arguments的缩写,表示参数

因为服务类型是空,不需要参数

rosservice call clear

服务清除了turtlesim_node背景上的轨迹。

通过查看再生(spawn)服务的信息,了解带参数的服务(rossrv命令针对是静态的服务文件*.srv,rossrv show 是显示服务类型的所有信息)

rosservice type spawn | rossrv show

返回一些参数

 

这个服务(spawn)让我们可以生成一只小乌龟,名字参数可选。我们这里不设具体名字,让turtlesim自动创建一个。

接下来生成一个乌龟

rosservice call spawn 2 2 0.2 “”

服务返回新产生乌龟的名字name:turtle2

7.6 使用rosparam

rosparam是存储和操作ROS参数服务器(parameter server)上的数据。

参数服务器能够存储①整形,②浮点,③字符串,④列表,等数据

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

使用方法:

rosparam set  设置参数

rosparam get  获取参数

rosparam load  从文件读取参数

rosparam dump  从文件中写入参数

rosparam delete  删除参数

rosparam list  列出参数名

7.7使用rosparam list

rosparam list

返回:

前3个是设置背景颜色。就是RGB(red ,green,blue)颜色,每个值能范围是(0~255),不懂百度RBG,这里涉及到一些颜色,玩过PS的人都懂。

7.7使用rosparam set 和rosparam get

使用方法:

rosparam set [param_name]

rosparam get [param_name]

试一下修改背景颜色

rosparam set background_r 150

然后调用清除服务使得修改后的参数生效

rosservice call clear

就会发现背景颜色变了。

试一下获取绿色通过的值

rosparam get background_g

返回:86

也可以通过rosparam get /获取参数服务器上所有内容

rosparam get /

7.8使用rosparam dump 和 rosparam load

使用方法:

rosparam dump [file_name]

rosparam load [file_name] [namespace]

将所有参数写入params.yaml文件

rosparam dump params.yaml

甚至可以将yaml文件重新载入新的命名空间,比如copy空间(不知道这个copy保存在哪)

rosparam load params.yaml copy

验证一下是否载入新空间成功

rosparam get copy/backgroud_g

返回86。

© 著作权归作者所有

HuangJC
粉丝 0
博文 32
码字总数 39927
作品 0
佛山
私信 提问
SLAM+语音机器人DIY系列:(二)ROS入门——2.ROS系统整体架构

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重...

小虎哥哥爱学习
02/16
0
0
SLAM+语音机器人DIY系列:(二)ROS入门——1.ROS是什么

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重...

小虎哥哥爱学习
02/15
0
0
SLAM+语音机器人DIY系列:(二)ROS入门——8.理解roslaunch在大型项目中的作用

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重...

小虎哥哥爱学习
02/17
0
0
SLAM+语音机器人DIY系列:(二)ROS入门——6.编写简单的service和client

摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重...

小虎哥哥爱学习
02/17
0
0
client library&roscpp

Client Library & roscpp ROS为机器人开发者提供了不同语言的编程接口,比如C++接口叫做roscpp,python接口叫做rospy,Java接口叫做rosjava。尽管语言不通,但这些接口都可以用来创建toppic、...

徐凯_xp
05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部