当前位置: 首页 > news >正文

Understanding services:理解服务(Service)

文章目录

  • 背景
  • 1. 准备工作
  • 2. ros2 service list 命令
  • 3. ros2 service type 命令
    • 3.1 ros2 service list -t 命令
  • 4. ros2 service find 命令
  • 5. ros2 interface show 命令
  • 6. ros2 service call 命令

参考官方文档: Understanding services

背景

服务(Service)是ROS图(ROS graph)中节点的另一种通信方法。服务是基于调用和响应(call-and-response)的模式,而不是话题的发布者-订阅者(publisher-subscriber)模式。话题允许节点订阅数据流并获得持续的更新,而服务只在被客户端调用时提供数据。
在这里插入图片描述
在这里插入图片描述

1. 准备工作

启动两个 turtlesim 节点,/turtlesim 和 /teleop_turtle。

打开一个新的终端并运行:

ros2 run turtlesim turtlesim_node

打开另一个终端并运行

ros2 run turtlesim turtle_teleop_key

2. ros2 service list 命令

在新终端中运行 ros2 service list 命令将返回一个列表,展示系统中当前活动的所有服务:

/clear
/kill
/reset
/spawn
/teleop_turtle/describe_parameters
/teleop_turtle/get_parameter_types
/teleop_turtle/get_parameters
/teleop_turtle/list_parameters
/teleop_turtle/set_parameters
/teleop_turtle/set_parameters_atomically
/turtle1/set_pen
/turtle1/teleport_absolute
/turtle1/teleport_relative
/turtlesim/describe_parameters
/turtlesim/get_parameter_types
/turtlesim/get_parameters
/turtlesim/list_parameters
/turtlesim/set_parameters
/turtlesim/set_parameters_atomically

你会看到 teleop_turtle 和 turtlesim 这两个节点都有同样的六个服务,其名称中都有 parameters 。在ROS 2中,几乎每个节点都有这些基础设施服务,而参数是建立在这些服务之上的。在下一个教程中会有更多关于参数的内容。在本教程中,将省略参数服务的讨论。

现在,让我们把注意力集中在针对海龟的服务上,/clear ,/kill ,/reset , /spawn , /turtle1/set_pen , /turtle1/teleport_absolute , 和 /turtle1/teleport_relative 。你可能记得在Using turtlesim and rqt:使用 turtlesim 和 rqt教程中使用rqt与这些服务中的一些进行互动。

3. ros2 service type 命令

要想知道一个服务的类型,使用命令:

ros2 service type <service_name>

让我们看一下 turtlesim 的 /clear 服务。在一个新的终端,输入以下命令:

ros2 service type /clear

应该返回:

std_srvs/srv/Empty

Empty 类型意味着服务调用在发出请求时不发送数据,在接收响应时不接收数据。

3.1 ros2 service list -t 命令

如果要看到所有正在运行的服务的类型,你可以在 list 命令中附加 --show-types 选项,缩写为 -t :

ros2 service list -t

返回结果如下:

/clear [std_srvs/srv/Empty]
/kill [turtlesim/srv/Kill]
/reset [std_srvs/srv/Empty]
/spawn [turtlesim/srv/Spawn]

/turtle1/set_pen [turtlesim/srv/SetPen]
/turtle1/teleport_absolute [turtlesim/srv/TeleportAbsolute]
/turtle1/teleport_relative [turtlesim/srv/TeleportRelative]

4. ros2 service find 命令

如果你想找到某个特定类型的所有服务,你可以使用命令:

ros2 service find <type_name>

例如,你可以通过下面这条命令找到所有 Empty 类型的服务:

ros2 service find std_srvs/srv/Empty

返回结果如下:

/clear
/reset

5. ros2 interface show 命令

你可以从命令行调用服务,但首先你需要知道输入参数的结构:

ros2 interface show <type_name>

例如:

ros2 interface show std_srvs/srv/Empty

返回结果如下:

—将请求结构(上面)和响应结构(下面)分开。但是,正如你前面所学到的,空(Empty)类型不发送或接收任何数据。所以,自然地,它的结构是空白的。

让我们来查看一个具有发送和接收数据类型的服务,比如 /spawn 。从 ros2 service list -t 的结果可以知道 /spawn 的类型是 turtlesim/srv/Spawn:

ros2 interface show turtlesim/srv/Spawn

float32 x
float32 y
float32 theta
string name # Optional. A unique name will be created and returned if this is empty

string name

6. ros2 service call 命令

现在你知道了什么是服务类型,如何找到一个服务的类型,以及如何找到该类型的参数结构,你可以用以下方法调用一个服务:

ros2 service call <service_name> <service_type> <arguments>

<arguments> 部分是可选的。例如,空类型的服务没有任何参数:

ros2 service call /clear std_srvs/srv/Empty

这条命令将清除海龟模拟窗口中的任何线条。

现在让我们通过调用 /spawn 服务,输入参数来生成一个新的乌龟。在命令行的服务调用中,输入的 <arguments> 需要使用YAML语法:

ros2 service call /spawn turtlesim/srv/Spawn "{x: 2, y: 2, theta: 0.2, name: ''}"

响应如下:

requester: making request: turtlesim.srv.Spawn_Request(x=2.0, y=2.0, theta=0.2, name=‘’)

response:
turtlesim.srv.Spawn_Response(name=‘turtle2’)

你的turtlesim窗口将立即生成新的乌龟。

相关文章:

Understanding services:理解服务(Service)

文章目录背景1. 准备工作2. ros2 service list 命令3. ros2 service type 命令3.1 ros2 service list -t 命令4. ros2 service find 命令5. ros2 interface show 命令6. ros2 service call 命令参考官方文档&#xff1a; Understanding services背景 服务&#xff08;Service&…...

【链表OJ题(五)】合并两个有序链表

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;数据结构 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录链表OJ题(五)1. 合并…...

C++ Primer第五版_第三章习题答案(1~10)

文章目录练习3.1练习3.2一次读入一行一次读入一个词练习3.3练习3.4大的字符串长度大的字符串练习3.5未隔开的隔开的练习3.6练习3.7练习3.8练习3.9练习3.10练习3.1 使用恰当的using 声明重做 1.4.1节和2.6.2节的练习。 // 1.4.1 #include <iostream>using std::cin; using…...

小样本学习

机器学习就是从数据中学习&#xff0c;从而使完成任务的表现越来越好。小样本学习是具有有限监督数据的机器学习。类似的&#xff0c;其他的机器学习定义也都是在机器学习定义的基础上加上不同的限制条件衍生出来。例如&#xff0c;弱监督学习是强调在不完整、不准确、有噪声、…...

python打包成apk界面设计,python打包成安装文件

大家好&#xff0c;给大家分享一下如何将python程序打包成apk文件&#xff0c;很多人还不知道这一点。下面详细解释一下。现在让我们来看看&#xff01; 1、如何用python制作十分秒加减的apk 如何用python制作十分秒加减的apk&#xff1f;用法:. apk包放入apk文件目录,然后输入…...

pytorch转onnx踩坑日记

在深度学习模型部署时&#xff0c;从pytorch转换onnx的过程中&#xff0c;踩了一些坑。本文总结了这些踩坑记录&#xff0c;希望可以帮助其他人。 首先&#xff0c;简单说明一下pytorch转onnx的意义。在pytorch训练出一个深度学习模型后&#xff0c;需要在TensorRT或者openvin…...

极智AI | GPT4来了,ChatGPT又该升级了

欢迎关注我,获取我的更多经验分享 大家好,我是极智视界,本文介绍一下 GPT4来了,ChatGPT又该升级了,更多的是个人思考。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码下载,链接:https://t.zsxq.com/0aiNxERDq 从 ChatGPT 发布 (2022年11月30日) 到…...

智能优化算法之灰狼优化算法(GWO)的实现(Python附源码)

文章目录一、灰狼优化算法的实现思路1、社会等级结构分级2、包围猎物3、攻击猎物4、搜索猎物二、算法步骤三、实例一、灰狼优化算法的实现思路 灰狼优化算法&#xff08;Grey Wolf Optimizer&#xff0c;简称GWO&#xff09;是由Seyedali Mirjalili等人于2014年提出的一种群智…...

leetCode热题10-15 解题代码,思路

前言 计划做一系列算法题的文章&#xff0c;因为自己这块确实比较薄弱&#xff0c;但又很重要&#xff01;写这篇文章前&#xff0c;我已经刷了一本剑指offer&#xff0c;leetcode top150道&#xff0c;牛客某题库106道 这个样子吧&#xff0c;感觉题量算是入门了吧&#xff1…...

同步辐射GISAXS和GIWAXS的原理及应用领域

同步辐射GISAXS和GIWAXS是两种常用的同步辐射X射线衍射技术&#xff0c;它们在材料科学、化学、生物学、物理学等领域中广泛应用。本文将从原理、实验方法和应用三个方面&#xff0c;对同步辐射GISAXS和GIWAXS进行描述和比较。 一、原理 GISAXS和GIWAXS都是利用X射线与样品相互…...

OpManager 进行网络性能管理

计算机网络构成了任何组织的 IT 基础架构的支柱。由于企业严重依赖基于互联网的应用程序&#xff0c;由于网络相关问题&#xff0c;最终用户不受影响非常重要。因此&#xff0c;借助网络管理解决方案监控和提高网络性能对于保持企业始终正常运行至关重要。这将确保维护服务级别…...

面试被问到向上转型和向下转型时,怎么回答?

目录 前置小知识 1、向上转型 补充&#xff1a;向上转型的三种情况 2、向下转型 使用关键字&#xff1a;instanceof 3、转型带来了什么好处 前置小知识 java中的继承&#xff0c;我们简单回顾一下 通过java中的继承机制&#xff0c;可以实现一个类继承另一个类&#xff…...

加密月解密:概述,基础篇

加密月解密&#xff1a;概述&#xff0c;基础篇 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测开 测开的话&#xff0c;你就得学数据库&#xff0c;sql&#xff0c;oracle&…...

DC-DC升压模块隔离高压稳压电源直流变换器12v24v48v转600V1000V1100V1500V2000V3000V

特点● 效率高达 80%● 2*2英寸标准封装● 单双电压输出● 价格低● 大于600V高压,稳压输出● 工作温度: -40℃~85℃● 阻燃封装&#xff0c;满足UL94-V0 要求● 温度特性好● 可直接焊在PCB 上应用HRB W1~25W 系列模块电源是一种DC-DC升压变换器。该模块电源的输入电压分为&am…...

pandas数据分析(三)

书接pandas数据分析&#xff08;二&#xff09; 文章目录DataFrame数据处理与分析处理超市交易数据中的异常值处理超市交易数据中的缺失值处理超市交易数据中的重复值使用数据差分查看员工业绩波动情况使用透视表与交叉表查看业绩汇总数据使用重采样技术按时间段查看员工业绩Da…...

cpu performance profiling

精彩文章分享1. android performanceAndroid 性能分析工具介绍 (qq.com)手机Android存储性能优化架构分析 (qq.com)抖音 Android 性能优化系列&#xff1a;启动优化之理论和工具篇 (qq.com)那些年&#xff0c;我们一起经历过的 Android 系统性能优化 (qq.com)Android卡顿&#…...

vue2启动项目npm run dev报错 Error: Cannot find module ‘babel-preset-es2015‘ 修改以及问题原因

报错内容如下图&#xff1a; 说找不到模块 babel-preset-es2015。 在报错之前&#xff0c;我正在修改代码&#xff0c;使用 ElementUI 的按需引入方式&#xff0c;修改了 babel.config.js 。 注意&#xff1a;vue/cli 脚手架4版本已经使用了 babel7 &#xff0c;所以项目中…...

*9 set up 注意点

1、set up 执行的时机&#xff1a;beforeCreate 之前执行一次&#xff0c;this 是 undefined 2、set up 的参数&#xff1a; props&#xff1a;值为对象&#xff0c;组件外传递属性&#xff0c;内部声明并且接收属性 context&#xff1a;上下文对象&#xff0c;其内部包含三个…...

linux目录——文件管理

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。座右铭&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石&#xff0c;故能成其高。个人主页&#xff1a;小李会科技的…...

使用new bing简易教程

申请new bing 首先先申请new bing然后等待通过&#xff0c;如下图 申请完&#xff0c;用edge浏览器&#xff0c;若有科学方法&#xff0c;就能在右上角的聊天进行向AI提问 使用插件来进行直接访问New Bing 在edge浏览器中安装一个插件&#xff0c;地址为&#xff1a;Mod…...

【信息科学与工程学】【物理/化学科学和工程技术】知识体系018 第十八篇 界面科学01 界面物理

界面科学知识体系分级分类列表 概述 界面科学是研究两相之间界面(表面)现象、性质、过程和规律的交叉学科。本列表系统整理了界面科学领域的核心概念、理论、技术和应用,涵盖从基础理论到前沿应用的完整知识体系。 界面科学知识体系分类表格...

AI 基本面量化:从理论到可部署 MVP-1.学习目标与工具链

AI 基本面量化实战&#xff1a;从理论到可部署 MVP 的完整学习路径1. 核心目标与 MVP 定义1.1 学习目标定位1.1.1 掌握 AI 技术与基本面分析深度融合的方法论体系AI 基本面量化的本质并非用复杂模型替代经典金融理论&#xff0c;而是以经济学逻辑为锚、以数据驱动为翼&#xff…...

智能网盘加速方案:3步实现下载速度飞跃

智能网盘加速方案&#xff1a;3步实现下载速度飞跃 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 你是否曾被百度网盘的下载速度折磨到崩溃&#xff1f;当急需下载重要文件时…...

大规模可观测性:构建云原生系统的感知能力

大规模可观测性&#xff1a;构建云原生系统的感知能力 一、大规模可观测性概述 1.1 可观测性的定义 可观测性是指通过外部输出推断系统内部状态的能力。在云原生环境中&#xff0c;可观测性通过收集和分析指标、日志和追踪数据&#xff0c;帮助开发者理解系统的行为和性能。 1.…...

【C语言】16 位的值,通过几种不同的方式将其拆分为高 8 位和低 8 位

当我们想要将一个16位的 Register_Value 拆分成高8位和低8位&#xff0c;并存储到 Send_Data_Uart5 数组中时&#xff0c;有几种常见的方法可以实现。让我们逐一优化和详细分析每种方法&#xff1a;方法 1: 使用位移和位掩码&#xff08;常用方法&#xff09;代码语言&#xff…...

使用 Elasticsearch 与 Kibana 中的 PromQL 调查 Kubernetes 基础设施问题

作者&#xff1a;来自 Elastic Miguel Snchez 本文将逐步介绍如何使用 PromQL 在 Elastic Observability 中对 Kubernetes 集群范围内的 CPU 使用情况进行调查&#xff0c;从集群到命名空间再到出现问题的 Pod。 Elasticsearch 现在已经原生支持 PromQL&#xff0c;并且你可以通…...

网盘直链下载助手终极指南:八大网盘不限速下载完整教程

网盘直链下载助手终极指南&#xff1a;八大网盘不限速下载完整教程 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

从MATLAB到Python:GOT-10k数据集评估与结果可视化完整迁移指南

从MATLAB到Python&#xff1a;GOT-10k数据集评估与结果可视化完整迁移指南 在计算机视觉领域&#xff0c;目标跟踪算法的评估与可视化是研究过程中不可或缺的环节。GOT-10k作为近年来备受关注的大规模跟踪基准数据集&#xff0c;其官方提供了MATLAB和Python两种工具包支持。然而…...

独立开发者如何借助Taotoken低成本实验多种大模型能力

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何借助Taotoken低成本实验多种大模型能力 对于独立开发者而言&#xff0c;在产品原型阶段进行技术选型与功能验证&…...

别再手动改图号了!Word 2016 交叉引用功能,让你的论文排版效率翻倍

告别手动编号&#xff1a;用Word 2016交叉引用功能打造智能学术文档 在撰写学术论文或技术报告时&#xff0c;最令人头疼的莫过于图表编号的维护。想象一下这样的场景&#xff1a;你刚刚完成了一篇50页的论文&#xff0c;导师要求在第20页和第35页之间插入三张新图表——这意味…...