机器人操作系统ROS Indigo 入门学习(8)——理解ROS service 和parameter

本文主要是介绍机器人操作系统ROS Indigo 入门学习(8)——理解ROS service 和parameter,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 1.理解ROS service和parameter

这个教程将介绍ROS service和parameter和命令行工具rosservice 和rosparameter

 

1.1ROS Services

ROS Services是nodes之间进行通信的另一种方式.service允许nodes之间发送请求和接受应答.

 

1.2使用rosservice 

rosservice可以轻易的附着在ROS的客户或者服务框上,rosservice 可以有许多命令可以在topic上使用,如下所示:

用法:

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

1.2.1使用rosservice 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

这个命令会显示出node可以提供9服务,其中/rosout/get_loggers 和 /rosout/set_logger_level是和rosoutnode有关的.

让我们用rosservice type仔细看看这些服务.

 

 

1.2.2rossercie type

用法:

rosservice type [service]

clear服务的服务类型

$ rosservice type clear

打印:

std_srvs/Empty

这个服务是空的,这就意味着当调用这个服务时不带任何参数(比如,当发送请求时和接受回应时有任何的数据).让我们用rosservice call调用这个服务把.

 

1.2.3rosservice call

用法:

rosservice call [service] [args]

这里我们不用任何参数调用这个服务,因为这个服务是空的:

$ rosservice call /clear

这个命令确实清除了小乌龟的行走痕迹.

 

 

再看看有参数的service,看看service spawn的信息:

$ rosservice type spawn| rossrv show

输出:

 float32 x

 float32 y

float32 theta

string name

---

string name

 

 

这个服务将产生另一个小乌龟,它的名字是可选的,我们自己不给它起名字,让turtlesim这个package给它取名字:

$ rosservice call spawn 2 2 0.2 ""

参数的分别是x.y的坐标和角度还有名字

 

这个服务调用返回新的小乌龟的名字:

name: turtle2

现在应该看起来像这样

 

 

 

 

 

 

 

1.3使用rosparam

rosparam允许你储存和操作在ROS parameter server上的数据,parameter server可以储存整形,浮点型,布尔型,字典型和链表型的数据.rosparam 使用YAML 审定语言以符合语法.简单的例子:YAML看起来十分自然,1是整形,1.0是浮点型,one是字符串,true是布尔型,[1,2,3]是一列的整形,{a:b,c:d}是字典型,rosparam有许多命令可以运行用在parameters上,如下所示:

 

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.3.1rosparam list

$ rosparam list

 

我们可以看到turtlesim node 的背景颜色有三个参数

/background_b

/background_g

/background_r

/roslaunch/uris/aqy:51932

/run_id

我们用rosparam set改变其中一个参数的值:

 

1.3.2rosparam setrosparam get

用法:

rosparam set [param_name]

rosparam get [param_name]

改变背景颜色中的红色比例:

$ rosparam set background_r 150

然后调用clear service使这个参数改变生效:

$ rosservice call clear

现在turtlesim看起来像这个样子:

 

 

让我们看看参数服务器上的其他参数的值:

$ rosparam get background_g 

86

也可以用rosparam get/ 显示整个参数服务器的内容:

$ 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来说这很容易:

 

1.3.3rosparam dumprosparam load

用法:

rosparam dump [file_name] [namespace]

rosparam load [file_name] [namespace]

我们把所有参数都写入params.yaml文件:

$ rosparam dump params.yaml

你可以载入这些yaml文件到新的命名空间,比如copy:

$ rosparam load params.yaml copy

$ rosparam get copy/background_b

输出

255

这篇关于机器人操作系统ROS Indigo 入门学习(8)——理解ROS service 和parameter的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001507

相关文章

深入理解Mysql OnlineDDL的算法

《深入理解MysqlOnlineDDL的算法》本文主要介绍了讲解MysqlOnlineDDL的算法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小... 目录一、Online DDL 是什么?二、Online DDL 的三种主要算法2.1COPY(复制法)

Spring Boot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)

《SpringBoot分层架构详解之从Controller到Service再到Mapper的完整流程(用户管理系统为例)》本文将以一个实际案例(用户管理系统)为例,详细解析SpringBoot中Co... 目录引言:为什么学习Spring Boot分层架构?第一部分:Spring Boot的整体架构1.1

Linux中查看操作系统及其版本信息的多种方法

《Linux中查看操作系统及其版本信息的多种方法》在服务器运维或者部署系统中,经常需要确认服务器的系统版本、cpu信息等,在Linux系统中,有多种方法可以查看操作系统及其版本信息,以下是一些常用的方... 目录1. lsb_pythonrelease 命令2. /etc/os-release 文件3. h

从入门到精通详解Python虚拟环境完全指南

《从入门到精通详解Python虚拟环境完全指南》Python虚拟环境是一个独立的Python运行环境,它允许你为不同的项目创建隔离的Python环境,下面小编就来和大家详细介绍一下吧... 目录什么是python虚拟环境一、使用venv创建和管理虚拟环境1.1 创建虚拟环境1.2 激活虚拟环境1.3 验证虚

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Java List 使用举例(从入门到精通)

《JavaList使用举例(从入门到精通)》本文系统讲解JavaList,涵盖基础概念、核心特性、常用实现(如ArrayList、LinkedList)及性能对比,介绍创建、操作、遍历方法,结合实... 目录一、List 基础概念1.1 什么是 List?1.2 List 的核心特性1.3 List 家族成

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

c++日志库log4cplus快速入门小结

《c++日志库log4cplus快速入门小结》文章浏览阅读1.1w次,点赞9次,收藏44次。本文介绍Log4cplus,一种适用于C++的线程安全日志记录API,提供灵活的日志管理和配置控制。文章涵盖... 目录简介日志等级配置文件使用关于初始化使用示例总结参考资料简介log4j 用于Java,log4c

史上最全MybatisPlus从入门到精通

《史上最全MybatisPlus从入门到精通》MyBatis-Plus是MyBatis增强工具,简化开发并提升效率,支持自动映射表名/字段与实体类,提供条件构造器、多种查询方式(等值/范围/模糊/分页... 目录1.简介2.基础篇2.1.通用mapper接口操作2.2.通用service接口操作3.进阶篇3