0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ROS中節(jié)點(diǎn)管理器master是如何被啟動(dòng)的

麥辣雞腿堡 ? 來(lái)源:古月居 ? 作者:古月居 ? 2023-09-14 18:03 ? 次閱讀

我們來(lái)看看節(jié)點(diǎn)管理器master是如何被啟動(dòng)的,再回到parent.pystart()函數(shù),如下。

我們發(fā)現(xiàn)它啟動(dòng)了XMLRPC服務(wù)器后,接下來(lái)就調(diào)用了_init_runner()函數(shù)。

def start(self, auto_terminate=True):
        self.logger.info("starting roslaunch parent run")
        # load config, start XMLRPC servers and process monitor
        try:
            self._start_infrastructure()
        except:
            self._stop_infrastructure()
        # Initialize the actual runner. 
        self._init_runner()
        # Start the launch
        self.runner.launch()

init_runner()函數(shù)實(shí)例化了ROSLaunchRunner類(lèi),這個(gè)類(lèi)的定義在launch.py里。

def _init_runner(self):
         self.runner = roslaunch.launch.ROSLaunchRunner(self.run_id, self.config, server_uri=self.server.uri, ...)

實(shí)例化完成后,parent.pystart()函數(shù)就調(diào)用了它的launch()函數(shù)。

我們打開(kāi)launch.py文件,找到launch()函數(shù),發(fā)現(xiàn)它又調(diào)用了自己類(lèi)中的_setup()函數(shù),而_setup()函數(shù)又調(diào)用了_launch_master()函數(shù)。

看名字就能猜出來(lái),_launch_master()函數(shù)肯定是啟動(dòng)節(jié)點(diǎn)管理器master的,它調(diào)用了create_master_process函數(shù),這個(gè)函數(shù)在nodeprocess.py里。

所以我們打開(kāi)nodeprocess.py,create_master_process函數(shù)使用了LocalProcess類(lèi)。這個(gè)類(lèi)繼承自Process類(lèi)。nodeprocess.py文件引用了python中用于創(chuàng)建新的進(jìn)程的subprocess模塊。

create_master_process函數(shù)實(shí)例化LocalProcess類(lèi)用的是’rosmaster’,即ros_comm-noetic-develtoolsrosmaster中的包。

main.py文件中的rosmaster_main函數(shù)使用了master.py中的Master類(lèi)。

Master類(lèi)中又用到了master_api.py中的ROSMasterHandler類(lèi),這個(gè)類(lèi)包含所有的XMLRPC服務(wù)器接收的遠(yuǎn)程調(diào)用,一共24個(gè),如下。

shutdown(self, caller_id, msg='')
getUri(self, caller_id)
getPid(self, caller_id)
deleteParam(self, caller_id, key)
setParam(self, caller_id, key, value)
getParam(self, caller_id, key)
searchParam(self, caller_id, key)
subscribeParam(self, caller_id, caller_api, key)
unsubscribeParam(self, caller_id, caller_api, key)
hasParam(self, caller_id, key)
getParamNames(self, caller_id)
param_update_task(self, caller_id, caller_api, param_key, param_value)
_notify_topic_subscribers(self, topic, pub_uris, sub_uris)
registerService(self, caller_id, service, service_api, caller_api)
lookupService(self, caller_id, service)
unregisterService(self, caller_id, service, service_api)
registerSubscriber(self, caller_id, topic, topic_type, caller_api)
unregisterSubscriber(self, caller_id, topic, caller_api)
registerPublisher(self, caller_id, topic, topic_type, caller_api)
unregisterPublisher(self, caller_id, topic, caller_api)
lookupNode(self, caller_id, node_name)
getPublishedTopics(self, caller_id, subgraph)
getTopicTypes(self, caller_id) 
getSystemState(self, caller_id)
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 管理器
    +關(guān)注

    關(guān)注

    0

    文章

    247

    瀏覽量

    18565
  • MASTER
    +關(guān)注

    關(guān)注

    0

    文章

    104

    瀏覽量

    11302
  • ROS
    ROS
    +關(guān)注

    關(guān)注

    1

    文章

    279

    瀏覽量

    17042
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    ROS讓機(jī)器人開(kāi)發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    SD啟動(dòng)卡插至評(píng)估板Micro SD卡槽。亦可通過(guò)SD升級(jí)卡或USB固化方式將系統(tǒng)固化至eMMC。 基于Python語(yǔ)言的通信演示 案例功能:基于Python語(yǔ)言,啟動(dòng)ROS節(jié)點(diǎn)發(fā)
    發(fā)表于 07-09 11:38

    問(wèn)GPIB卡安裝正確,為什么在資源管理器沒(méi)有板卡GPIB0?

    問(wèn)GPIB卡安裝正確,為什么在資源管理器沒(méi)有板卡GPIB0?本人已利用GPIB節(jié)點(diǎn)和visa函數(shù)可以與儀器通信,但在資源管理器中就是沒(méi)有GPIB的
    發(fā)表于 02-20 20:19

    從終端啟動(dòng)許可證管理器

    你好,目前我正試圖直接從終端啟動(dòng)xilinx許可證管理器。我知道您可以通過(guò)在終端內(nèi)運(yùn)行命令“ise”來(lái)啟動(dòng)ISE。是否也可以這樣啟動(dòng)許可證管理器
    發(fā)表于 12-11 11:18

    怎樣去使用ROS的launch啟動(dòng)文件呢

    怎樣去使用ROS的launch啟動(dòng)文件呢?ROS的launch啟動(dòng)文件該怎樣去使用呢?
    發(fā)表于 02-14 07:23

    搭建ARM+ROS的硬件載體之ROS的移植及測(cè)試方法

    roscore來(lái)啟動(dòng)運(yùn)行ros節(jié)點(diǎn)必要的ROS MasterROS parameter,運(yùn)行情
    發(fā)表于 03-09 13:55

    ROS讓機(jī)器人開(kāi)發(fā)更便捷,基于RK3568J+Debian系統(tǒng)發(fā)布!

    產(chǎn)工業(yè)核心板,主頻高達(dá)2.0GHz。核心板CPU、ROM、RAM、電源、晶振、連接等所有器件均采用國(guó)產(chǎn)工業(yè)級(jí)方案,國(guó)產(chǎn)化率100%,并提供國(guó)產(chǎn)化率認(rèn)證報(bào)告。 我司RK3568J平臺(tái)提供的ROS系統(tǒng)啟動(dòng)
    發(fā)表于 11-30 16:01

    Protel DXP設(shè)計(jì)管理器

    protel DXP的所有電路設(shè)計(jì)工作都必須在DesignExplorer(設(shè)計(jì)管理器)中進(jìn)行,同時(shí)設(shè)計(jì)管理器也是ProtelDXP啟動(dòng)后的主工作界面。設(shè)計(jì)管理器具有友好的人機(jī)界面,而
    發(fā)表于 06-01 08:39 ?0次下載

    Windows XP系統(tǒng)任務(wù)管理器幾個(gè)另類(lèi)用法

    Windows XP系統(tǒng)任務(wù)管理器幾個(gè)另類(lèi)用法 Windows任務(wù)管理器可以用來(lái)察看當(dāng)前運(yùn)行的程序、啟動(dòng)的進(jìn)程、CPU及內(nèi)存使用情況等信息,這為
    發(fā)表于 02-23 13:55 ?970次閱讀

    C#教程之啟動(dòng)項(xiàng)管理器

    C#教程之啟動(dòng)項(xiàng)管理器,很好的C#資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-20 14:46 ?3次下載

    數(shù)據(jù)庫(kù)的項(xiàng)目管理器是什么?項(xiàng)目管理器詳細(xì)資料總結(jié)

    項(xiàng)目管理器是VFP集成開(kāi)發(fā)環(huán)境的一個(gè)重要組成部分。項(xiàng)目是文件、數(shù)據(jù)、文檔和對(duì)象的集合,項(xiàng)目管理器通過(guò)項(xiàng)目文件(.PJX和.PJT)對(duì)項(xiàng)目進(jìn)行管理。VFP所有
    發(fā)表于 09-18 17:43 ?5次下載
    數(shù)據(jù)庫(kù)的項(xiàng)目<b class='flag-5'>管理器</b>是什么?項(xiàng)目<b class='flag-5'>管理器</b>詳細(xì)資料總結(jié)

    項(xiàng)目管理器及其操作的詳細(xì)資料說(shuō)明

    “項(xiàng)目管理器”的啟動(dòng)、功能、組成、定制以及操作,“項(xiàng)目管理器”包括6個(gè)文件選項(xiàng)卡,其中“全部”文件選項(xiàng)卡,將顯示應(yīng)用的所有文件對(duì)象大類(lèi),即“數(shù)據(jù)”、“文檔”、“類(lèi)庫(kù)”、“代碼”和“其
    發(fā)表于 03-12 14:27 ?16次下載

    ROS是如何設(shè)計(jì)的 ROS客戶端庫(kù)

    為什么需要客戶端。 原因是,節(jié)點(diǎn)與主節(jié)點(diǎn)master之間的關(guān)系是client/server,這時(shí)每個(gè)節(jié)點(diǎn)都是一個(gè)客戶端(client),而maste
    的頭像 發(fā)表于 09-14 17:29 ?888次閱讀
    <b class='flag-5'>ROS</b>是如何設(shè)計(jì)的 <b class='flag-5'>ROS</b>客戶端庫(kù)

    ROS節(jié)點(diǎn)是什么 如何誕生的

    節(jié)點(diǎn)” 這是因?yàn)?b class='flag-5'>ROS沿用了計(jì)算機(jī)網(wǎng)絡(luò)節(jié)點(diǎn)”的概念。 在一個(gè)網(wǎng)絡(luò),例如互聯(lián)網(wǎng),每一個(gè)上網(wǎng)的計(jì)算機(jī)就是一個(gè)
    的頭像 發(fā)表于 09-14 17:35 ?1097次閱讀

    ROSXMLRPC是什么

    的通信依靠節(jié)點(diǎn)管理器master)牽線搭橋。 master像一個(gè)中介,它介紹節(jié)點(diǎn)們互相認(rèn)識(shí)。一旦節(jié)點(diǎn)
    的頭像 發(fā)表于 09-14 17:40 ?1020次閱讀

    EE-146:為ADSP-218x系列DSP實(shí)施啟動(dòng)管理器

    電子發(fā)燒友網(wǎng)站提供《EE-146:為ADSP-218x系列DSP實(shí)施啟動(dòng)管理器.pdf》資料免費(fèi)下載
    發(fā)表于 01-14 14:58 ?0次下載
    EE-146:為ADSP-218x系列DSP實(shí)施<b class='flag-5'>啟動(dòng)</b><b class='flag-5'>管理器</b>