首页 > 其他分享 >1.1 Beginner Level学习之“了解 ROS 服务和参数”(第七节)

1.1 Beginner Level学习之“了解 ROS 服务和参数”(第七节)

时间:2024-12-03 22:31:32浏览次数:5  
标签:noetic opt 1.1 Beginner Level rosparam rosservice 参数 ros

学习大纲:

1. ROS 服务

ROS 服务是一种节点之间的通信方式,允许一个节点发送请求并接收响应。它采用的是同步机制,即一个节点会发送请求,等待另一个节点处理并返回结果。这个机制适合需要及时反馈的情况。rosservice 是 ROS 提供的一个工具,专门用来与服务进行交互。它可以列出、查询、调用和管理服务。由于我的 ROS 安装在 /opt/ros/noetic/share/ros 路径下,因此命令执行需要确保我的环境变量正确配置。

以下是 rosservice 常用的命令格式:

rosservice list:列出当前运行的所有服务。

rosservice call:调用某个服务并传递必要的参数。

rosservice type:查询服务的类型。

rosservice uri:获取服务的 ROSRPC 地址。

示例:列出当前服务

在确保 turtlesim_node 正在运行的情况下,使用以下命令来查看当前所有的服务:

$ /opt/ros/noetic/bin/rosservice list

输出的服务列表包括 reset、clear、spawn、kill 等服务。这些服务允许我们对模拟乌龟进行重置、生成、删除等操作。

查看服务类型

使用 rosservice type 命令可以查看服务的类型。比如我们可以查看 /clear 服务的类型:

$ /opt/ros/noetic/bin/rosservice type /clear

输出结果显示 std_srvs/Empty,表示这个服务不需要参数,调用时不会传递任何数据。

调用服务

对于没有参数的服务,比如 clear,我们可以直接调用它来清除 turtlesim 的背景:

$ /opt/ros/noetic/bin/rosservice call /clear这将清除背景。

对于需要参数的服务,例如 /spawn 服务,可以用下面的命令生成一个新的乌龟在指定位置:

$ /opt/ros/noetic/bin/rosservice call /spawn 2 2 0.2 ""

这个命令会生成一个新的乌龟,位置在 (2, 2),角度为 0.2,并返回新乌龟的名字。

2. 使用 rosparam

ROS 参数服务器是一个中心化的存储机制,允许节点之间共享全局的配置信息或数据。数据类型可以是整数、浮点数、布尔值、字典或列表等。rosparam 是与 ROS 参数服务器交互的命令行工具。通过 rosparam,我们可以设置、获取和删除参数,还可以将参数保存到文件中或从文件中加载参数。常用命令包括:

rosparam set:设置参数值。

rosparam get:获取参数值。

rosparam list:列出当前所有参数。

rosparam dump:将参数保存到文件。

rosparam load:从文件加载参数。

A.可以使用以下命令列出当前所有参数:

$ /opt/ros/noetic/bin/rosparam list

这个命令会列出所有在参数服务器上存储的参数,包括一些系统相关的参数和 turtlesim 节点的参数,例如背景颜色的 RGB 通道 /turtlesim/background_r、/turtlesim/background_g 和 /turtlesim/background_b。

B.设置和获取参数

我们可以使用rosparam set来更改参数值,例如更改背景红色通道的值,并调用 /clear 服务让更改生效:

$ /opt/ros/noetic/bin/rosparam set /turtlesim/background_r 150

$ /opt/ros/noetic/bin/rosservice call /clear

之后,turtlesim 的背景颜色将发生变化。

要获取某个参数的值,可以使用 rosparam get:

$ /opt/ros/noetic/bin/rosparam get /turtlesim/background_g

输出将显示当前绿色通道的值。

C.保存和加载参数

如果需要保存当前参数设置,可以使用 rosparam dump 将参数保存到 YAML 文件中:

$ /opt/ros/noetic/bin/rosparam dump params.yaml

稍后可以通过以下命令重新加载参数:

$ /opt/ros/noetic/bin/rosparam load params.yaml

这将把之前保存的参数重新加载到参数服务器中。

标签:noetic,opt,1.1,Beginner,Level,rosparam,rosservice,参数,ros
From: https://blog.csdn.net/2301_79441716/article/details/144194835

相关文章

  • 奇酷星球 1.1.2 | 免费听歌神器,三条音源,可下载
    奇酷星球(DX云音乐)是一款优质的音乐播放器,拥有强大的音乐库,涵盖了各种风格和国家的音乐作品。无论你喜欢流行曲、古典乐、摇滚还是电子音乐,都能在这里找到满足自己音乐口味的作品。大小:35M下载地址:百度网盘:https://pan.baidu.com/s/10UjSltMTA-skHb7CUrDOEw提取码:cizu......
  • C++“阴熊”大追杀0.1.1测试版正式出台!
    C++“阴熊”大追杀0.1.1测试版正式出台!框架已搭好,欢迎大家提出意见!老规矩,先上代码:#include<bits/stdc++.h>#include<windows.h>#include<conio.h>#defineFOREGROUND_WHITEFOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUEusingnamespacestd;shortteach;long......
  • 长链接在http2中与http/1.1协议中有什么区别?
    在HTTP/1.1中,为了克服队头阻塞问题以及提高页面加载速度,浏览器会与服务器建立多个TCP连接,并行地下载资源。然而,过多的连接也会带来新的问题,例如连接建立的开销、资源竞争等。在HTTP/2中,引入了多路复用的概念,它允许在单个TCP连接上并发地传输多个请求和响应。这意味着浏览......
  • ALPN复现记录. GAN WGAN .Bilevel Optimization
    titleALPN复现流程GAN与WGAN二阶优化1这篇文章是一篇用于高频遥感图分类的应用型文章,公开数据集程序开源,难度友好,代码清晰程度较好。用'IP'数据集说明,其他类似classAEDataset(Datapath,transform)defgetitem()deflen()--->输出用于生成学习无标签的数据pytorch......
  • 11.11大促背后的技术保障:SLA与SLO的深度解析与实践案例
    作者:京东物流冯志文背景又到一年的11.11大促日,最近很多团队邮件上下游确认SLA,你是不是还没搞明白服务质量SLA、SLO等概念?本文通过理论知识以及基于SLO告警治理的实践经验分享。详细介绍如何设置SLO、有效的告警泛滥治理、以及如何根据SLO的指标来指导11.11大促及优化服务性能和......
  • C语言编程1.19男生女生
    题目描述给定一个班每个同学的性别,分别输出男女比例,男生学号和女生学号。输入格式第一行一个整数n,0<n≤500表示班级人数。第二行中有n个0(女生)或者1(男生),表示按学号(从1号开始)顺序的每个同学性别。输出格式第一行输出男生与女生的比例,形式为1:?。如果男女生相等,则输出1:1;如果......
  • C语言编程1.18票数统计
    题目描述《造星花园》青春偶像派电视剧热播后,剧组各位明星来到有“娱乐热土”之称的湖海卫视参加“我选我喜欢”的与观众现场互动娱乐节目。现场的观众对明星们投票选出最受欢迎的明星。投票的方式是:每个观众只能投一票,观众喜欢某个明星或觉得他(她)表现不错,就可以到台上将一支......
  • c语言编程1.17蓝桥杯历届试题-回文数字
    题目描述观察数字:12321,123321都有一个共同的特征,无论从左到右读还是从右向左读,都是相同的。这样的数字叫做:回文数字。本题要求你找到一些5位或6位的十进制数字。满足如下要求:该数字的各个数位之和等于输入的整数。输入格式一个正整数n(10<n<100),表示要求满足的数......
  • AtCoder Beginner Contest 382-E
    Problem有无数包牌,每包有\(N\)张牌。在每一包牌中,第\(i\)张牌是稀有牌,概率为\(P_i\%\)。每张牌是否稀有与其他牌是否稀有无关。逐一打开包装,并获得每包中的所有卡片。当你一直开包直到总共获得至少\(X\)张稀有卡牌时,求你开包的预期次数。Constraints\(1\leqN\leq5......
  • 4.1.1.1 圆近似外形
    usefj_math::{Circle,Point};usecrate::geometry::{traits::GenPolyline,CurveBoundary,Tolerance};///#近似一个圆轮廓//////##论点//////除了一个圆,这个方法还有两个参数://////--圆应该近似的“边界”。///-“公差”,指定允许近似值偏离实际圆的......