ros的通信机构

ros的通信是在os层之上,基于TCP/IP协议实现

os层(操作系统层)对于开发者来讲,是不需要关系的。

中间层:TCPROS/UDPROS,这是基于TCP/IP协议进行重新封装的,Nodelet API是为了弥补前面两者中的不足,Nodelet API的实现是通过共享内存的方式,而不是通过网络传输的方式进行数据的共享。ClientLibrary客户端库是指将TCPROS/UDPROS在进行封装,封装成一些ros的具体通讯实现方法,例如话题、服务等等

应用层:首先是ros的master,与中间层框起来,是因为是ros系统中必须要有的根节点,master是ros官方提供的,是用来管理右边的应用层的节点node,node是一个互相独立的应用

ROS通信结构--节点和主节点(node and master)

 master:相当于管理中心,node首先在master处进行注册, node之间的通信也是先由master进行“牵线”,才能两两的进行点对点通信,一个ROS计算图中又且只有一个master

节点:一个可执行程序进程,通常一个node负责者机器人的某一个单独的功能,不同的节点可以使用不同的编程语言,也可以运行在同一局域网下的不同机器人上。

节点与节点之间的通信具体实现:消息通信可以通过话题、服务、动作、参数实现

ros通讯结构--话题topic和服务service

话题topic:

同步/实时性:异步通信/弱,

实现原理:ROSTCP and ROSUDP

通信模型:发布/订阅

节点数量关系:多对多

应用场景:数据发布  eg:图像处理操作

传递内容:rosmsg (是发布者和订阅者之间定义的传输数据类型,方便两者进行通信)

服务service:

同步/实时性:同步通信/强,

实现原理:ROSTCP and ROSUDP

通信模型:request/response

节点数量关系:多对一(服务器端)

应用场景:逻辑任务处理,eg:关灯操作

传递内容:rossrv

 动作action:

.goal -用于向服务器发送目标。
.cancel -用于向服务器发送取消请求。
.status -用于通知客户端系统中每个目标的当前状态。

.feedback -用于周期反馈目标的辅助信息。
.result - 用于向client发送任务的执行结果,这个topic只会发布一次

参数服务器parameter server:

并非是一个node,运行在master中,节点存储参数的地方,用于配置参数,全局共享参数,是一个字典,key-value.用的少。

 原作者:冰达机器人,b站有官方账号

猜你喜欢

转载自blog.csdn.net/qq_44808827/article/details/123301366
今日推荐