天天看點

ROS機器人程式設計(原書第2版)2.1 了解ROS檔案系統級

<b>2.1 了解ros檔案系統級</b>

如果你剛接觸ros,無論是準備使用ros系統還是準備開發ros項目,你都會覺得ros中的各種概念非常奇怪。而一旦你駕輕就熟,那麼這些概念就會變得熟悉了。

與其他作業系統類似,一個ros程式的不同元件要被放在不同的檔案夾下。這些檔案夾是根據功能的不同來對檔案進行組織的:

功能包(package):功能包是ros中軟體組織的基本形式。一個功能包具有用于建立ros程式的最小結構和最少内容。它可以包含ros運作的程序(節點)、配置文

件等。

功能包清單(package manifest):功能包清單提供關于功能包、許可資訊、依賴關系、編譯标志等的資訊。一個包的清單由一個名為package.xml的檔案管理。

綜合功能包(metapackage):如果你将幾個具有某些功能的功能包組織在一起,那麼你将會獲得一個綜合功能包。在ros fuerte中,這種包的組織形式被稱為功能包集(stack)。為了保持ros簡潔,功能包集被移除,現在使用綜合功能包實作這個功能。在ros系統中,存在大量不同用途的綜合功能包,例如導航功能包集。

綜合功能包清單(metapackage manifest):綜合功能包清單(package.xml)類似普通功能包但有一個xml格式的導出标記。它在結構上也有一定的限制。

消息類型(message(msg)type):消息是一個程序發送到其他程序的資訊。ros系統有很多的标準類型消息。消息類型的說明存儲在my_package/msg/mymessagetype.msg中,也就是對應功能包的msg檔案夾下。

服務類型(service(srv)type):服務描述說明存儲在my_package/srv/myservicetype.srv中,定義了在ros中由每個程序提供的關于服務請求和響應的資料結構。

在右側的截圖中,可以看到turtlesim功能包的内容。你看到的是一系列檔案和檔案夾,包含代碼、圖檔、啟動檔案、服務和消息。記住,截圖顯示檔案的一個簡短清單,真正的功能包會更多。