机器人操作系统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

相关文章

解决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

Python自定义异常的全面指南(入门到实践)

《Python自定义异常的全面指南(入门到实践)》想象你正在开发一个银行系统,用户转账时余额不足,如果直接抛出ValueError,调用方很难区分是金额格式错误还是余额不足,这正是Python自定义异... 目录引言:为什么需要自定义异常一、异常基础:先搞懂python的异常体系1.1 异常是什么?1.2

深入理解go中interface机制

《深入理解go中interface机制》本文主要介绍了深入理解go中interface机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录前言interface使用类型判断总结前言go的interface是一组method的集合,不

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与