一、Topic
二、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 node
、rosservice uri
、rosservice type
、rosservice 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 总和