ROS入门_1.10 理解ROS服务和参数

目录

  1. ROS Services
  2. 使用rosservice
    1. rosservice list
    2. rosservice type
    3. rosservice call
  3. Using rosparam
    1. rosparam list
    2. rosparam set and rosparam get
    3. rosparam dump and rosparam load

本教程假设从前一教程启动的turtlesim_node仍在运行,现在我们来看看turtlesim提供了什么服务:

1. ROS Services

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


rosservice可以很轻松的使用 ROS 客户端/服务器框架提供的服务。rosservice提供了很多可以在topic上使用的命令,如下所示:

使用方法:

rosservice list         输出可用服务的信息
rosservice call         调用带参数的服务
rosservice type         输出服务类型
rosservice find         依据类型寻找服务find services by service type
rosservice uri          输出服务的ROSRPC uri

1.1 rosservice list

$ rosservice list

list 命令显示turtlesim节点提供了9个服务:重置(reset)清除(clear)再生(spawn)终止(kill)turtle1/set_pen/turtle1/teleport_absolute/turtle1/teleport_relativeturtlesim/get_loggers, and turtlesim/set_logger_level. 同时还有另外两个rosout节点提供的服务: /rosout/get_loggers and /rosout/set_logger_level.

  • /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

我们使用rosservice type命令更进一步查看clear服务:

1.2 rosservice type

使用方法:

rosservice type [service]

我们来看看clear服务的类型:

$ rosservice type clear

std_srvs/Empty

服务的类型为空(empty),这表明在调用这个服务是不需要参数(比如,请求不需要发送数据,响应也没有数据)。下面我们使用rosservice call命令调用服务:

1.3 rosservice call

使用方法:

rosservice call [service] [args]

因为服务类型是空,所以进行无参数调用:

$ rosservice call clear

正如我们所期待的,服务清除了turtlesim_node的背景上的轨迹。

turtlesim.png

通过查看再生(spawn)服务的信息,我们来了解带参数的服务:

$ rosservice type spawn| rossrv show
  • float32 x
    float32 y
    float32 theta
    string name
    ---
    string name

这个服务使得我们可以在给定的位置和角度生成一只新的乌龟。名字参数是可选的,这里我们不设具体的名字,让turtlesim自动创建一个。

$ rosservice call spawn 2 2 0.2 ""

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

  • name: turtle2

现在我们的乌龟看起来应该是像这样的:

  • turtle(service).png

2. Using rosparam

rosparam使得我们能够存储并操作ROS 参数服务器(Parameter Server)上的数据。参数服务器能够存储整型、浮点、布尔、字符串、字典和列表等数据类型。rosparam使用YAML标记语言的语法。一般而言,YAML的表述很自然:1 是整型, 1.0是浮点型, one是字符串, true是布尔, [1, 2, 3]是整型列表, {a: b, c: d}是字典. rosparam有很多指令可以用来操作参数,如下所示:

使用方法:

rosparam set            设置参数
rosparam get            获取参数
rosparam load           从文件读取参数
rosparam dump           向文件中写入参数
rosparam delete         删除参数
rosparam list           列出参数名

我们来看看现在参数服务器上都有哪些参数:

2.1 rosparam list

$ rosparam list

我们可以看到turtlesim节点在参数服务器上有3个参数用于设定背景颜色:

  • /background_b
    /background_g
    /background_r
    /roslaunch/uris/aqy:51932
    /run_id

Let's change one of the parameter values using rosparam set:

2.2 rosparam set and rosparam get

Usage:

rosparam set [param_name]
rosparam get [param_name]

现在我们修改背景颜色的红色通道:

$ rosparam set background_r 150

上述指令修改了参数的值,现在我们调用清除服务使得修改后的参数生效:

$ rosservice call clear

现在 我们的小乌龟看起来应该是像这样:

  • turtle(param).png

现在我们来查看参数服务器上的参数值——获取背景的绿色通道的值:

$ 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很容易就可以实现:

2.3 rosparam dump and rosparam load

使用方法:

rosparam dump [file_name]
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服务和参数服务器的使用,接下来,我们一同试试使用 rqt_console 和 roslaunch

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440116.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.Introduction and Evaluation

感谢七月在线罗老师和吴同学! 最近报了七月在线的《推荐系统实战》班,根据上课资料和思维导图整理了这篇笔记! 1)推荐系统介绍 思维导图如下,其中需要掌握的是推荐系统存在的前提:信息过载和用户需求不明…

【ZOJ - 2968 】Difference Game (贪心,思维模拟)

题干: Now you are going to play an interesting game. In this game, you are given two groups of distinct integers and C coins. The two groups, named Ga and Gbrespectively, are not empty and contain the same number of integers at first. Each time…

使用 rqt_console 和 roslaunch

Description:本教程介绍如何使用 rqt_console 和 rqt_logger_level 进行调试,以及如何使用 roslaunch 同时运行多个节点。早期版本中的 rqt 工具并不完善,因此,如果你使用的是“ROS fuerte”或更早期的版本,请同时参考 这个页面 学…

机器学习必备宝典-《统计学习方法》的python代码实现、电子书及课件

本文转自微信公众号:机器学习初学者 原创: 机器学习初学者 机器学习初学者 6天前 《统计学习方法》可以说是机器学习的入门宝典,许多机器学习培训班、互联网企业的面试、笔试题目,很多都参考这本书。本站根据网上资料用python复现…

【2019牛客暑期多校训练营(第一场) - H】XOR(线性基,期望的线性性)

题干: 链接:https://ac.nowcoder.com/acm/contest/881/H 来源:牛客网 Bobo has a set A of n integers a1,a2,…,ana1,a2,…,an. He wants to know the sum of sizes for all subsets of A whose xor sum is zero modulo (1097)(1097). F…

机器学习入门必备的13张“小抄”(附下载)

目录 1)TensorFlow 2)Keras 3)Neural Networks 4)Numpy 5)Scipy 6)Pandas 7)Scikit-learn 8)Matplotlib 9)PythonForDataScience 最近在github上发现了很有用的…

ROS launch文档介绍

本文章转自:https://charlyhuangrostutorial.wordpress.com/2015/08/12/20/ 前面已经提过关于launch 档的角色,很类似bash 档,基本上就是把所有为了执行某个特定功能所需要的指令都写在一张纸上,交给ROS 一次执行开来。举例来说&a…

【2019牛客暑期多校训练营(第一场) - A】Equivalent Prefixes(单调栈,tricks)

题干: 链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Two arrays u and v each with m distinct elements are called equivalent if and only if RMQ(u,l,r)RMQ(v,l,r) for all 1≤l≤r≤m where RMQ(w,l,r) denotes th…

吴恩达机器学习作业(1):线性回归

目录 1)导入相关库和数据 2)代价函数 3)批量梯度下降 4)绘制线性模型 前阵子在网易云课堂学习了吴恩达老师的机器学习课程,今天结合网上资料,用Python实现了线性回归作业,共勉。建议大家使…

【HDU - 5886】Tower Defence(树的直径,思维,dp)

题干: There was a civil war between two factions in Skyrim, a province of the Empire on the continent of Tamriel. The Stormcloaks, led by Ulfric Stormcloak, are made up of Skyrims native Nord race. Their goal is an independent Skyrim free from …

(1).数据结构概述

目录 数据结构概述 预备知识: 模块: 这篇笔记是根据郝斌老师的上课讲义整理而得: 数据结构概述 定义:如何把现实中大量复杂的问题以特定的数据类型和特定的存储结构保存到主存储器中(内存)中, 以及在此基础上为实…

ROS导航之参数配置和自适应蒙特卡罗定位

我们的机器人使用两种导航算法在地图中移动:全局导航(global)和局部导航(local)。这些导航算法通过代价地图来处理地图中的各种信息,导航stack使用两种costmaps http://www.cnblogs.com/zjiaxing/p/5543386.html存储环…

吴恩达机器学习作业(2):多元线性回归

目录 1)数据处理 2)代价函数 3)Scikit-learn训练数据集 4)正规方程 练习1还包括一个房屋价格数据集,其中有2个变量(房子的大小,卧室的数量)和目标(房子的价格&#…

【洛谷 - P2756】飞行员配对方案问题(网络流最大流,输出方案)

题干: 题目背景 第二次世界大战时期.. 题目描述 英国皇家空军从沦陷国征募了大量外籍飞行员。由皇家空军派出的每一架飞机都需要配备在航行技能和语言上能互相配合的2 名飞行员,其中1 名是英国飞行员,另1名是外籍飞行员。在众多的飞行员中…

office 安装错误 1920 osppsvc服务无法启动 failed to start

今天忽然发现Office 报 1920 错误,按照网上的的各类教程,还是不行,没有办法启动。答搞了一下午了,终于Ok,超级简单: 首先,到文件夹 C:\Program Files\Common Files\microsoft shared\OfficeSo…

机器学习笔记(八):神经网络:学习

目录 1)Cost function 2)Backpropagation algorithm 3)Backpropagation intuition 4) Gradient checking 5)Random initialization 6)Putting it together 注:吴恩达老师的机器学习课程对反向传播算…

【HDU - 6231】K-th Number(二分,思维)

题干: Alice are given an array A[1..N]A[1..N] with NN numbers. Now Alice want to build an array BB by a parameter KK as following rules: Initially, the array B is empty. Consider each interval in array A. If the length of this interval is les…

C 语言运算符优先级(记忆口诀)

优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针&#xff0…

吴恩达机器学习作业(3):逻辑回归

目录 1)数据处理 2)sigmoid函数 3)代价函数 4)梯度下降 5)预测函数 我们首先做一个练习,问题是这样的:设想你是大学相关部分的管理者,想通过申请学生两次测试的评分&#xff0c…

机器学习笔记(九):应用机器学习的建议

目录 1)Deciding what to try next 2)Evaluating a hypothesis 3)Model selection and training/validation/test sets 4)Diagnosing bias vs. variance 5)Regularization and bias/variance 6)Learn…