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

相关文章

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题: