文章目錄
ROS系列文章
ROS的架構
ROS的架構經過設計並劃分成了三部分, 每一部分都代表一個層級的概念:
- 文件系統級(Filesystem level)
主要有ROS的內部構成、 文件夾結構, 以及工作所需的核心文件。
- 計算圖級(Computation Graph level)
主要是進程和系統之間的通信,包括建立系統、 處理各類進程、 與多臺計算機通信等。
- 社區級(Community level)
主要是在開發人員之間共享知識、 算法和代碼,塑造了ROS強大的開源社區。
本章的準備工作
本文章中我們將會用到ros-tutorials
程序包,要先用apt命令去安裝:
sudo apt-get install -y ros-<distro>-ros-tutorials
將 <distro>
替換成你所安裝的版本(比如 kinetic、melodic 等)。
從我們上一篇文章安裝的是melodic
版本,那麼命令就是:
sudo apt-get install -y ros-melodic-ros-tutorials
ROS文件系統的概念
ROS文件系統可以將項目構建過程集中化, 同時提供很好的靈活性和工具來分散之間的依賴性。
Packages
功能包,也可以被稱之爲軟件包,是ROS應用程序代碼的組織單元,每個功能包都可以包含程序庫、可執行文件、腳本或者其它手動創建的東西。
Manifest
清單,它包含了關於Packages
的維護者、許可協議、依賴關係以及編譯標誌等的信息,由一個名爲package.xml
的文件管理。
Metapackage
元功能包:多個具有某些功能的包組織在一起,稱爲元功能包。
Metapackage Manifest
元功能包清單:由一個名字爲package.xml
的文件管理,類似普通功能包但有一個XML格式的導出標記。
文件系統工具
由於ROS中大量代碼分散在衆多的packages和Metapackage之中,linux本身的命令工具ls和cd已不能滿足檢索要求,因此ROS提供了一套自己的命令工具來完成與這些命令相似的工作。
rospack
rospack
允許用戶獲取功能包的有關信息,比如我們找一個roscpp
功能包所在的位置,可以通過以下命令:
➜ ~ rospack find roscpp
/opt/ros/melodic/share/roscpp
rospack
的用法是:
rospack find [功能包名稱]
roscd
roscd
是rosbash
命令集中的一部分,它允許你直接切換(cd)工作目錄到某個軟件包或者軟件包集當中。
roscd
的用法是:
roscd [功能包名稱[/子目錄]]
比如切換到roscpp
目錄下:
roscd roscpp
比如切換到roscpp
的子目錄msg
下:
roscd roscpp/msg
rosls
這個命令更linux下的ls很像,但它允許你在任何位置列出某個功能包的當前目錄或者其子目錄的內容,而不需要在絕對路徑執行ls。
rosls
的用法是:
rosls [功能包名稱[/子目錄]]
比如列出roscpp
目錄下的內容:
rosls roscpp
比如列出roscpp
的子目錄msg
下的內容:
rosls roscpp/msg
同時它們都支持Tab補全
,非常方便