<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檔案中使用的兩個典型标記是<build_depend>和<run_depend>。
<build_depend>标記會顯示目前功能包安裝之前必須先安裝哪些功能包。這是因為新的功能包會使用其他包的一些功能。
<run_depend>标記顯示運作功能包代碼所需要的包。右面截圖是package.xml檔案的示例。