ROS学习笔记六:

通信方式

Topic

Ros中的异步通信方式,Node间通过publish-subscribe机制通信ROS学习笔记六:
节点A发布topic,节点B订阅
异步是指publish之后就返回了,不用等待处理的结果
一个topic可以被多个节点订阅,也可以有多个publisher

Message:
topic内容的数据类型,定义在*.msg文件中
ROS学习笔记六:
ROS学习笔记六:

Service

Ros中的同步通信方式,Node间通过request-reply方式通信

ROS学习笔记六:
同步:Node A发完一个请求就等待,直到Node B返回了结果,再继续执行
ROS学习笔记六:
RPC:在一个进程调用另一个进程里面的函数,与本地函数调用相对
srv:
Service通讯的数据格式,定义在*.srv文件中
写法举例:
ROS学习笔记六:
srv文件要放在srv路径下,中间用三个短横分开,上面是请求服务的格式,下面是应答的格式。
当start_detect为True的时候,就开始检测,回传一个HumanPose[]的数组,必须是一个msg文件。**因为srv只能嵌套msg,不能再嵌套srv。**定义id、关节数目、每个关节的具体信息,关节信息再去嵌套一个msg。

定义srv或msg后都要修改以下:
ROS学习笔记六:
常用指令:
ROS学习笔记六:

Parameter Server

参数服务器:存储各种参数的字典,可用命令行、launch文件和node(API)读写
ROS学习笔记六:
ROS学习笔记六:

Actionlib

类似Service,带有状态反馈的通信方式,通常用在长时间、可抢占的任务中
ROS学习笔记六:
action
action通信的数据格式,定义在*.action文件中
ROS学习笔记六: