天天看點

ROS機器人程式設計(原書第2版)2.1.2 功能包

<b>2.1.2 功能包</b>

功能包指的是一種特定的檔案結構和檔案夾組合。這種結構如下所示:

include/package_name/:此目錄包含了你需要的庫的頭檔案。

msg/:如果你要開發非标準消息,請把檔案放在這裡。

scripts/:其中包括bash、python或任何其他腳本的可執行腳本檔案。

src/:這是存儲程式源檔案的地方。你可能會為節點建立一個檔案夾或按照你希望的方式去組織它。

srv/:這表示服務(srv)類型。

cmakelists.txt:這是cmake的生成檔案。

package.xml:這是功能包清單檔案。

為了建立、修改或使用功能包,ros給我們提供了一些工具:

rospack使用此指令來擷取資訊或在系統中查找工作空間。

catkin_create_pkg 當你想要建立一個新的功能包時,使用此指令。

catkin_make 使用此指令來編譯工作空間。

rosdep 此指令安裝功能包的系統依賴項。

rqt_dep:這個指令用來檢視包的依賴關系圖。如果你想看包的依賴關系圖,你會在rqt發現一個稱為包圖(package graph)插件。選擇一個包并檢視依賴關系。

若要在檔案夾和功能包之間移動檔案,ros提供了非常有用的rosbash功能包,其中包含了一些非常類似于linux指令的指令。例如:

roscd 此指令用于更改目錄,類似于linux中的cd指令。

rosed 此指令用來編輯檔案。

roscp 此指令用于從一些功能包複制檔案。

rosd 此指令列出功能包的目錄。

rosls 此指令列出功能包下的檔案,類似于linux中的ls指令。

檔案package.xml必須在功能包中,用來說明此功能包相關的各類資訊。如果你發現在某個檔案夾内包含此檔案,那麼這個檔案夾很可能是一個功能包或綜合功能包。

打開一個package.xml檔案,可以看到包的名稱、依賴關系等資訊。功能包清單的作用就是為了更容易地安裝和分發這些功能包。

在package.xml檔案中使用的兩個典型标記是&lt;build_depend&gt;和&lt;run_depend&gt;。

&lt;build_depend&gt;标記會顯示目前功能包安裝之前必須先安裝哪些功能包。這是因為新的功能包會使用其他包的一些功能。

&lt;run_depend&gt;标記顯示運作功能包代碼所需要的包。右面截圖是package.xml檔案的示例。

繼續閱讀