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上发现了很有用的…

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

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

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

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

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

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

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

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

吴恩达机器学习作业(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…

【洛谷 - P1231 】教辅的组成(网络流最大流,拆点)

题干: 题目描述 蒟蒻HansBug在一本语文书里面发现了一本答案,然而他却明明记得这书应该还包含一份练习题。然而出现在他眼前的书多得数不胜数,其中有书,有答案,有练习册。已知一个完整的书册均应该包含且仅包含一本书…

机器学习笔记(十):机器学习系统的设计

目录 1)Prioritizing what to work on:Spam classification example 2)Error analysis 3)Error metrics for skewed classes 4)Trading off precision and recall 5)Data for machine learning 下面将学习到在构建…

【洛谷 - P1345 [USACO5.4]】奶牛的电信(网络流最小割,拆点)

题干: 题目描述 农夫约翰的奶牛们喜欢通过电邮保持联系,于是她们建立了一个奶牛电脑网络,以便互相交流。这些机器用如下的方式发送电邮:如果存在一个由c台电脑组成的序列a1,a2,...,a(c),且a1与a2相连,a2与…

机器学习笔记(十一):支持向量机

目录 1)Optimization objective 2)Large Margin Intuition 3)Kernels 1 4)Kernels II 5)Using an SVM 注:这一章SVM可能有点难理解,强烈建议大家把本章的编程作业做了。 1)Opt…

ros中的坐标系,

ros中的坐标系,主要包括: map,odom,base_link(base_footprint) 以及如laser,camera等传感器的坐标系; 这些坐标系间的关系可以用下图表示: 这是一个有向图,图中涉及四个坐标系&#…

【Gym - 101061F】Fairness(dp,思维)

题干: Dwik and his brother Samir both received scholarships from a famous university in India. Their father, Besher, wants to send some money with each of them. Besher has n coins, the ith coin has a value of ai. He will distribute these coins…

(2)连续存储数组的方法

目录 连续存储的代表应用:数组 1)结构体的定义: 2)基本操作 对数据进行初始化 判断数组是否为空 输出数组 判断数组是否满 追加元素 插入数组元素 删除数组元素 逆序 对数组进行排序 这篇笔记是根据郝斌老师的上课讲义…

什么是欧拉角/姿态角?

用一句话说,欧拉角就是物体绕坐标系三个坐标轴(x,y,z轴)的旋转角度。 在这里,坐标系可以是世界坐标系,也可以是物体坐标系,旋转顺序也是任意的,可以是xyz,xzy,yxz,zxy,yzx,zyx中的任何一种,甚至…