1. 程式人生 > >Node & Master——roscore、rosrun、rosnode

Node & Master——roscore、rosrun、rosnode

1、Node

ROS的世界裡, 最小的程序單元就是節點( node) 。 一個軟體包裡可以有多個可執行文
件, 可執行檔案在執行之後就成了一個程序(process), 這個程序在ROS中就叫做節點。

2、Master

由於機器人的元器件很多, 功能龐大, 因此實際執行時往往會執行眾多的node, 負責感知世
界、 控制運動、 決策和計算等功能。 那麼如何合理的進行調配、 管理這些node? 這就要利用
ROS提供給我們的節點管理器master, master在整個網路通訊架構裡相當於管理中心, 管理著
各個nodenode首先在master處進行註冊, 之後master會將該node納入整個ROS程式中。
node之間的通訊也是先由master進行牽線, 才能兩兩的進行點對點通訊。 當ROS程式啟動
時, 第一步首先啟動master, 由節點管理器處理依次啟動node

3、啟動masternode

當我們要啟動ROS時, 首先輸入命令:

$ roscore

此時ROS master啟動, 同時啟動的還有 rosout parameter server ,其中 rosout 是負責日
志輸出的一個節點, 其作用是告知使用者當前系統的狀態, 包括輸出系統的errorwarning
等, 並且將log記錄於日誌檔案中, parameter server 即是引數伺服器, 它並不是一個node
而是儲存引數配置的一個伺服器

啟動node的語句是: 

$ rosrun pkg_name node_name

Master

Node之間以及Node之間的關係如下圖所示:

4、rosrunrosnode命令

rosrun命令的詳細用法如下:

$ rosrun [--prefix cmd] [--debug] pkg_name node_name [ARGS]

rosrun將會尋找PACKAGE下的名為EXECUTABLE的可執行程式, 將可選引數ARGS傳入。
例如在GDB下執行ros程式:

$ rosrun --prefix 'gdb -ex run --args' pkg_name node_name

rosnode命令的詳細作用列表如下: