ROS Service 相关API接口与命令行介绍

2023-05-16

目录

    • 二、Service
      • 2.1 常用函数接口
        • ros::ServiceClient类
        • ros::ServiceServer类
      • 2.2 常用命令行工具
        • rosservice相关
          • 2.2.1 rosservice call
          • 2.2.2 rosservice find
          • 2.2.3 rosservice list
          • 2.2.4 rosservice node
          • 2.2.5 rosservice uri
          • 2.2.6 rosservice type
          • 2.2.7 rosservice args
          • 2.2.8 rosservice info
        • rossrv 相关

二、Service

2.1 常用函数接口

ros::ServiceClient类

// 四个重载函数模板,用于调用服务
// 使用指定的服务类型调用服务
template<class Service>
bool call(Service &service)

// 使用指定的请求/响应消息类型调用服务
template<class MReq, class MRes>
bool call(MReq &req, MRes &res)

// 多用于内部调用,以上两个函数最终均调用到该函数
template<typename MReq , typename MRes>
bool call(const MReq &req, MRes &resp, const std::string &service_md5sum)
 
bool call(const SerializedMessage &req, SerializedMessage &resp, const std::string &service_md5sum)

// 返回此句柄是否有效。对于持续性服务,当连接断开时,这将变为false。非持续性服务句柄始终有效。
bool isValid() const;

// 返回此句柄是否是持续性服务
bool isPersistent() const;

// 等待此服务发布并可用。
bool waitForExistence(ros::Duration timeout = ros::Duration(-1));

// 检查该服务是否已发布并可用。
bool exists();
    
// 返回此ServiceClient连接到的服务的名称。
std::string getService();

// 关闭与此ServiceClient关联的连接
void shutdown();

ros::ServiceServer类

// 返回此ServiceServer发布的服务的名称。
std::string getService();

// 取消发布与此ServiceServer关联的服务
void shutdown();

2.2 常用命令行工具

rosservice相关

rosservice call   使用提供的参数调用服务
rosservice find   通过服务消息类型查找服务
rosservice list   列出活跃的服务
rosservice node   打印服务的node名称
rosservice uri    打印服务的ROSRPC uri
rosservice type   打印指定服务的消息类型
rosservice args   打印服务的参数列表
rosservice info   打印服务相关信息
2.2.1 rosservice call
rosservice call <service-name> [service-args]
rosservice call /service_name service-args

使用提供的参数调用服务

在这里插入图片描述

可以在服务名后直接跟参数列表,也可以使用字典的格式(键入服务名后,按tab自动补全,默认是这种格式)。

参数选项:--wait

等待服务发布才调用

在这里插入图片描述

如果服务没有发布,直接调用,会返回错误,使用 --wait 选项后,会一直等待服务发布才调用。

2.2.2 rosservice find
rosservice find <service-type>
rosservice find rospy_tutorials/AddTwoInts

按照特定的消息类型查找已发布的 service

在这里插入图片描述

2.2.3 rosservice list
rosservice list

列出当前所有活跃的service

在这里插入图片描述

rosservice list <namespace>

列出指定名空间下当前所有活跃的service

在这里插入图片描述

-n选项:同时打印服务所在节点的名称
rosservice list -n
rosservice list <namespace> -n

在这里插入图片描述

前面是服务名,后面是节点名。

2.2.4 rosservice node
rosservice node <service-name>
rosservice node /add_two_ints 

在这里插入图片描述

2.2.5 rosservice uri
rosservice uri <service-name>
rosservice uri /add_two_ints 

打印服务的ROSRPC uri

在这里插入图片描述

2.2.6 rosservice type
rosservice type <service-name>
rosservice type /add_two_ints 

打印指定service的消息类型

在这里插入图片描述

2.2.7 rosservice args
rosservice args <service-name>
rosservice args /service_name

打印服务的参数列表,没有参数则没有打印

在这里插入图片描述

2.2.8 rosservice info
rosservice info <service-name>
rosservice info /rosout

打印指定service的信息,相当于 rosservice noderosservice urirosservice typerosservice args 的集合。

在这里插入图片描述

其中,

Node:是service所在节点的名称。

URI:是service的ROSRPC地址。

Type:是service的消息类型。

Args:是service的参数列表。

rossrv 相关

rossrv和rosmsg的用法完全相同,具体对照rosmsg,见ROS Topic 相关API接口与命令行介绍的rosmsg部分

rossrv show 显示服务格式内容
rossrv list 显示服务列表
rossrv package 显示指定包中的所有服务列表
rossrv packages 显示所有带有服务的包的列表
rossrv md5 显示指定服务类型的 md5 总和
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS Service 相关API接口与命令行介绍 的相关文章

  • 如何访问symfony2全局帮助函数(服务)中的服务容器?

    这个问题一开始我不明白为什么我不能将变量传递给 symfony2 全局辅助函数 服务 但是感谢比我更聪明的人 我意识到我的错误是尝试在一个类中使用 security context 而该类没有没有注射所以 这是最终的结果 即有效的代码 我没
  • Spring - 如何注入具体的接口实现?

    我需要通过 Autowired 注入服务类的具体实现 服务接口 public interface PostService 执行 Service postServiceImpl public class PostServiceImpl imp
  • 通过我们的应用程序使用“向朋友和家人汇款”功能

    我们的应用程序需要利用 向朋友和家人汇款 功能 现在我们可以使用 AdaptivePayments 执行个人支付 无需支付任何费用 如预期 但这种类型的交易似乎是购买交易 而不是 向家人和朋友汇款 交易 查看付款详细信息 而不是查看与 向朋
  • 配置中的 devServer 代理抛出 404

    我有这个src vue config js module exports devServer proxy api target http localhost 8081 changeOrigin true 我正在调用 api axios ge
  • 外部 API 的 CORS 问题 - 通过 PostMan 工作,但不能使用 Axios 进行 HTTP 请求 [重复]

    这个问题在这里已经有答案了 正在开发一个涉及汽车数据的新 Laravel 项目 并找到了一个免费的查找 API http www carqueryapi com documentation api usage 一个示例端点是 https w
  • API向后兼容性的最佳实践

    我正在开发一个与 JSON API 进行通信的 iPhone iPad Android 应用程序 该应用程序版本的第一个版本已经完成 现在正在进行其他开发阶段 在其他阶段 应用程序需要与新版本的 API 集成 并允许用户访问其他功能 例如新
  • ::FindWindow 从服务应用程序失败

    从服务应用程序调用时 Windows API FindWindow 函数失败 GetLastError 也返回 0 成功 这是一些特权 访问权问题吗 你认为这是设计问题吗 我应该使用另一种IPC方法吗 leppie 是的 Windows 服
  • Grails 在 Service 类中获取 Session 和 Management

    我对 Grails 会话有疑问 我正在考虑为我的会话处理提供一个服务类 所以我创建了一个名为 SessionService 的类 在 grails app services grails 下 class SessionService sta
  • 在sqlalchemy中跨不同模块访问相同的db.session

    我对 sqlalchemy 非常陌生 正在尝试找出如何让事情变得更干净和连接 我创建了一个 model base py 文档 在其中创建了一个会话并在表中建立了所有实体 以及关系等 我想创建另一个模块 在其中对 base py 中的实体 表
  • 如何获取Linux发行版名称和版本?

    在 Windows 中我读取注册表项SOFTWARE Microsoft Windows NT CurrentVersion ProductName获取操作系统的全名和版本 但在Linux中 代码 struct utsname ver un
  • PHP NuSoap 中的复杂类型

    我正在使用 PHP 中的 NuSoap 库构建一个 Web 服务 我的 Web 服务将充当客户端和供应商现有的 Web 服务之间的中间层 因此 客户端不是直接连接到供应商 而是连接到我的 Web 服务 我的 Web 服务连接到供应商并获取响
  • hbase api - 通过行ID列表获取数据行信息

    是否可以通过hbase java API通过行id列表获取hbase数据记录 例如 我有一个已知的 hbase 行 ID 列表 mykey1 myhash1 mykey1 myhash2 mykey1 myhash3 mykey2 myha
  • 作为后台进程/服务运行命令

    我有一个 Shell 命令 我想在后台运行 并且我读到这可以通过添加后缀来完成 到导致它作为后台进程运行的命令 但我需要一些更多的功能 并且想知道如何去做 我希望每次系统重新启动时该命令都在后台启动并运行 我希望能够像人们一样在需要时启动和
  • TypeError:expect(...).to.startsWith 不是一个函数 - chai 和 chakram

    我开始编写一些自动化测试 API 现在我尝试对此端点执行以下操作 https dog ceo api breeds image random https dog ceo api breeds image random 所以我添加到我的函数中
  • 在 Windows Vista / 7 中从 C# 访问网络摄像头的“首选”方法

    我发现了很多讨论 WIA Windows 便携式设备 API 和 DirectShow 并给出示例代码 用于从 C 访问网络摄像头的帖子 但是当您研究每种方法时 您似乎会遇到这些都是 旧 方法的参考资料 因此 问题是 当运行 Windows
  • Aurelia Post 使用 http-fetch-client 生成选项请求

    我正在创建一个小型论坛 我们公司的人员可以使用 aurelia 为他们想要即时销售的商品或服务发布广告 我有一个广告页面列表 工作正常 每个广告的详细信息页面都工作正常 都使用来自 api 的 get 请求 然而 当有人想在广告上添加评论时
  • Ionic 3 Uncaught(承诺):[object Object]

    我是 Ionic 3 和移动开发的新手 我正在尝试将 MySQL DB 连接到我的 Ionic 应用程序和 PHP Restful API 我用 Postman 测试了 API 它工作得很好 为了在 Ionic 中实现它 我做了以下操作 我
  • Spring框架中的DAO和Service层到底是什么?

    Spring框架中的DAO和Service层到底是什么 我正在寻找理论答案 就 Spring 而言 没有区别 按照惯例 您可以使用以下方式标记 DAO 类 Repository和服务 Service 前者还进行一些持久层异常转换 既然您在理
  • AngularJS 服务 http 成功函数使用错误的“this”范围

    a 的成功函数 http put无权访问this内部调用的服务的范围 我需要在 PUT 请求的回调中更新服务的属性 这是我在服务中尝试做的事情的简化示例 var myApp angular module myApp function rou
  • 使用 api php 使用通配符从 S3 中删除

    我有这个工作代码可以从 s3 中删除文件和文件夹 如何使用通配符 进行删除 s3 new AmazonS3 bucket mybucket folder myDirectory this doesnt work response s3 gt

随机推荐

  • 在NAND FLASH上建立YAFFS2文件系统

    在NAND FLASH上建立YAFFS2文件系统 xff08 一 xff09 By on 2006 07 22 经过了半个多月的努力 xff0c 终于搞定nandflash的mtd驱动和上层的yaffs2文件系统 这半个多月来几乎每天都要和
  • 个人学习笔记-矩阵的四则运算

    目录 1 矩阵的四则运算1 1 矩阵的乘法运算1 2矩阵的加法运算1 3矩阵的减法运算 2 接口测试输出结果 1 矩阵的四则运算 1 1 矩阵的乘法运算 span class token comment 矩阵乘法 C语言实现分解步骤 xff
  • 单片机通信接口:UART、I2C、SPI、TTL、RS232、RS422、RS485、CAN、USB

    参考资料 xff1a 这些单片机接口 xff0c 一定要熟悉 xff1a UART I2C SPI TTL RS232 RS422 RS485 CAN USB SD卡 秒懂所有USB接口类型 xff0c USB接口大全 1 UART UAR
  • PCB中走线与电流的关系

    参考资料 xff1a 超强整理 xff01 PCB设计之电流与线宽有八种关系 1 前言 PCB的载流能力取决与以下因素 xff1a 线宽 线厚 xff08 铜箔厚度 xff09 容许温升 PCB走线越宽 xff0c 载流能力越大 但走线宽度
  • Visual Studio各版本集成的Visual C++版本对应关系

    Visual Studio版本集成的Visual C 43 43 版本对应关系如下 xff1a Visual Studio 6 xff1a vc6 Visual Studio 2003 xff1a vc7 Visual Studio 200
  • 字节序—字节内部的位序

    Big endian machine It thinks the first byte it reads is the biggest Little endian machine It thinks the first byte it re
  • 嵌入式常用模块之——环形队列(1)

    简单聊聊对我实现方式的介绍代码部分完整代码 简单聊聊 在嵌入式开发时候 xff0c 有很对模块是经常会使用到的 从这篇文字开始 xff0c 将我觉得一些常用的模块逐一做一个整理 梳理一下自己的思路 xff0c 也顺便方便大家 xff0c 如
  • Python实现isbn查询书籍详细信息

    如有错误 xff0c 请疯狂打脸没关系 xff0c 希望能够指出来 0 开始的开始 一直想做一个图书漂流软件 xff0c 最近入手 xff08 入坑 xff09 了微信小程序 xff0c 添加图书时需要用到isbn查询书籍信息的API xf
  • Ubuntu 安装 ROS 详细教程

    最近需要用ROS控制一个小车底盘 xff0c 然后发现不会了 所以写一篇博客记录一下 xff0c 以便以后查阅 OS xff1a Ubuntu 20 04 ROS xff1a noetic 1 设置Ubuntu的软件和更新 在搜索框输入so
  • roscore报错: ‘ascii’ codec can’t decode byte 0xe6 in position 13: ordinal not in range(128)

    零 问题描述 使用ROS是 xff0c 执行roscore报一下错误 xff1a ascii codec can t decode byte 0xe6 in position 13 ordinal not in range 128 The
  • Ubuntu16.04网络连接正常但浏览器无网络

    ubuntu xff0c google浏览器突然不能上网了 xff0c 经过一番折腾 xff0c 终于解决了问题 xff0c 在此记录一下 开始如下图 xff1a 然而 ping 一下百度 xff0c 是可以 ping 通的 xff0c 说
  • CMake学习(二) —— 生成链接库

    除使用 add executable 生成可执行文件外 xff0c 还可以使用 add library 生成链接库 一 Linux的链接库 首先讲一下 linux 的链接库 xff0c 就是一些函数代码的二进制形式 xff0c 有动态与静态
  • iperf3 使用指南

    iperf3的参数 xff1a s表示做服务器 c表示做客户端 t 表示表示发送时间 i 表示间隔多久报告一次 u 表示UDP xff0c 不加表示tcp R 表示服务器发客户端收 xff0c 不加默认客户端发 xff0c 服务器收 f 表
  • [Qt 教程之开始的开始] —— 创建项目及注意事项

    Qt系列教程总目录 OS xff1a Ubuntu 16 04 IDE xff1a Qt Creator 4 11 0 Qt xff1a Qt 5 14 0 xff08 GCC 5 3 1 20160406 Red Hat 5 3 1 6
  • Tips for Qt

    Based on Qt 5 14 0 Qt Creator 4 11 0 1 在UI设计界面添加控件后 xff0c 要编译一下 xff0c 再到编辑界面写代码 xff0c 否则系统不识别新添加的控件 2 多看帮助文档 xff0c 好多开发时
  • [Qt 实战小项目] —— C++ Qt 实现鼠标拖动旋转功能

    Qt系列教程总目录 文章目录 零 开始的开始一 实现思路1 旋转角度2 旋转方向3 实现旋转4 实现流程 二 完整代码 零 开始的开始 这是律盘 xff0c 看古琴课程时 xff0c 老师有一个纸质的 xff0c 可以查找各弦散按音位 xf
  • ERROR: cannot download default sources list from: 20-default.list. Website may be down.

    零 问题描述 安装 ROS 时 xff0c 执行 sudo rosdep init 报如下错误 xff1a ERROR cannot download default sources list from https raw githubus
  • ROS与操作系统版本对应关系

    Ubuntu和ROS1版本对应关系及官方支持结束时间 xff0c 加粗的为还在支持的版本 xff0c Recommended 为官方建议使用版本 UbuntuROS1Release dateEnd of Life14 04 LTSindig
  • ROS Topic 相关API接口与命令行介绍

    目录 一 Topic1 1 常用函数接口ros Publisher类ros Subscriber类 1 2 常用命令行工具rostopic相关1 2 1 rostopic bw1 2 2 rostopic delay1 2 3 rostop
  • ROS Service 相关API接口与命令行介绍

    目录 二 Service2 1 常用函数接口ros ServiceClient类ros ServiceServer类 2 2 常用命令行工具rosservice相关2 2 1 rosservice call2 2 2 rosservice