1、Node
在ROS的世界里, 最小的進程單元就是節點( node) 。 一個軟件包里可以有多個可執行文
件, 可執行文件在運行之后就成了一個進程(process), 這個進程在ROS中就叫做節點。
2、Master
由於機器人的元器件很多, 功能龐大, 因此實際運行時往往會運行眾多的node, 負責感知世
界、 控制運動、 決策和計算等功能。 那么如何合理的進行調配、 管理這些node? 這就要利用
ROS提供給我們的節點管理器master, master在整個網絡通信架構里相當於管理中心, 管理着
各個node。 node首先在master處進行注冊, 之后master會將該node納入整個ROS程序中。
node之間的通信也是先由master進行“牽線”, 才能兩兩的進行點對點通信。 當ROS程序啟動
時, 第一步首先啟動master, 由節點管理器處理依次啟動node。
3、啟動master和node
當我們要啟動ROS時, 首先輸入命令:
$ roscore
此時ROS master啟動, 同時啟動的還有 rosout 和 parameter server ,其中 rosout 是負責日
志輸出的一個節點, 其作用是告知用戶當前系統的狀態, 包括輸出系統的error、 warning等
等, 並且將log記錄於日志文件中, parameter server 即是參數服務器, 它並不是一個node,
而是存儲參數配置的一個服務器
啟動node的語句是:
$ rosrun pkg_name node_name
Master、 Node之間以及Node之間的關系如下圖所示:
4、rosrun和rosnode命令
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命令的詳細作用列表如下: