ROS源码学习 六、MasterServer:Node、Topic&Service

本文深入解析ROS MasterServer,介绍其在ROS系统中的协调作用,包括Node、Topic和Service的概念及功能。文章通过源码分析,阐述了TopicRegistrationInfo、ServiceRegistrationInfo和NodeRegistrationInfo类的实现,探讨了ROS中topic的发布订阅机制和服务的请求响应方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2021SC@SDUSC

目录

一、写在前面

二、MasterServer简介

        1、MasterServer

        2、Node、Topic、Service 

三、Service、Topic、Node相关源码分析

四、总结


一、写在前面

        在之前的博客中,我们首先从RosCore开始分析,学习了ROS线程池的运行逻辑,并从MasterServer的基类XmlRpcServer中的WebServer入手分析了ROS实现不同节点功能协作的基础XML-RPC策略的运行过程.从本次博客开始,我们将开始阅读ROS MasterServer及其相关类的源码,并分析其在ROS运行中承担的功能.

二、MasterServer简介

        1、MasterServer

        我们曾提到,ROS的功能承担者称为一个node,在运行时的各node构成了一个星状拓扑结构.其中,位于中心的称为为MasterServer,负责协调各node的功能注册与注销并监听功能调用请求;其余节点则运行在称为SlaveServer的主机中,负责提供各种功能,同时也可以向MasterServer请求其它node的功能.

       

        2、Node、Topic、Service 

                需要指出的是,每个Node作为概念上的功能节点,向MasterServer提供功能调用的句柄,构成了功能上的星型拓扑,而SlaveServer则是负责Node实际运行的守护线程,是SlaveServer而不是Node与MasterServer连接成了相互通信的局域网络.因此,Server与Node是一一对应的,只是职责不同.即一个Node运行在一个SlaveServer中,SlaveServer来向MasterServer注册各种功能并监听调用,Node负责具体的功能执行.另外,一台主机可以具有多个Node,也就是说,一台主机可以开放多个端口来使不同的Slave Server与MasterServer进行连接.

                更具体地来说, ROS根据Node所提供不同功能的特点,将其分为了两类:topic与service.其中topic方式类似流式广播,由publisher将采集到的数据源源不断地发送给subscriber,在这个过程中二者是异步的,适合传递数据信息;service方式类似签订合同,在建立serviceServer与serviceClient建立连接后二者以一问一答的同步方式进行交互,适合传递控制信息或易失的重要数据.

                                 (如图所示,这三个Node的功能种类各不相同,且可以运行在同一主机或不同主机上)

三、Service、Topic、Node相关源码分析

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值