[ROS 系列学习教程] ROS Service 相关API接口与命令行介绍

ROS 系列学习教程(总目录)

二、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 总和
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万俟淋曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值