// 四个重载函数模板,用于调用服务
// 使用指定的服务类型调用服务
template
bool call(Service &service)
// 使用指定的请求/响应消息类型调用服务
template
bool call(MReq &req, MRes &res)
// 多用于内部调用,以上两个函数最终均调用到该函数
template
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();
// 返回此ServiceServer发布的服务的名称。
std::string getService();
// 取消发布与此ServiceServer关联的服务
void shutdown();
rosservice call 使用提供的参数调用服务
rosservice find 通过服务消息类型查找服务
rosservice list 列出活跃的服务
rosservice node 打印服务的node名称
rosservice uri 打印服务的ROSRPC uri
rosservice type 打印指定服务的消息类型
rosservice args 打印服务的参数列表
rosservice info 打印服务相关信息
rosservice call <service-name> [service-args]
rosservice call /service_name service-args
使用提供的参数调用服务
可以在服务名后直接跟参数列表,也可以使用字典的格式(键入服务名后,按tab自动补全,默认是这种格式)。
参数选项:--wait
等待服务发布才调用
如果服务没有发布,直接调用,会返回错误,使用 --wait
选项后,会一直等待服务发布才调用。
rosservice find <service-type>
rosservice find rospy_tutorials/AddTwoInts
按照特定的消息类型查找已发布的 service
。
rosservice list
列出当前所有活跃的service
rosservice list <namespace>
列出指定名空间下当前所有活跃的service
-n选项:同时打印服务所在节点的名称
rosservice list -n
rosservice list <namespace> -n
前面是服务名,后面是节点名。
rosservice node <service-name>
rosservice node /add_two_ints
rosservice uri <service-name>
rosservice uri /add_two_ints
打印服务的ROSRPC uri
rosservice type <service-name>
rosservice type /add_two_ints
打印指定service的消息类型
rosservice args <service-name>
rosservice args /service_name
打印服务的参数列表,没有参数则没有打印
rosservice info <service-name>
rosservice info /rosout
打印指定service的信息,相当于 rosservice node
、rosservice uri
、rosservice type
、rosservice args
的集合。
其中,
Node:是service所在节点的名称。
URI:是service的ROSRPC地址。
Type:是service的消息类型。
Args:是service的参数列表。
rossrv和rosmsg的用法完全相同,具体对照rosmsg,见ROS Topic 相关API接口与命令行介绍的rosmsg部分
rossrv show 显示服务格式内容
rossrv list 显示服务列表
rossrv package 显示指定包中的所有服务列表
rossrv packages 显示所有带有服务的包的列表
rossrv md5 显示指定服务类型的 md5 总和