【ROS實踐學習入門系列(二)ROS文件概念和工作空間】
本內容經官網實例以及一些參考書總結而成,歡迎留言評論交流~
聯繫方式:ziyuanw#foxmail.com(#換成@)
一、ROS文件系統級別
在ROS設計的架構中,經過發展,目前被設計爲三個部分,各自代表三個層級。
文件系統級:後面以小海龜案例中文件組成來說明ROS內部構成,文件夾結構,以及實現功能必要核心文件。
計算圖級:體現進程與系統之間通信。
社區級:開發者之間互相共享代碼、問題。
1.ROS文件系統級:
①功能包(package):ROS中的最小結構單位,包含ROS運行時的進程(節點),配置文件。
②功能包清單(package manifest):提供關於功能包的許可,依賴關係,編譯標誌等信息,包清單爲package.xml文件管理。
③元功能包(metapackage):將多個功能包組合在一起成爲元功能包。
④元功能包清單(metapackage manifest):類似第二個同樣有package.xml,但存在一個XML格式導出標記。結構也稍有不同。
⑤消息類型(message(msg)type):一個進程發送到其他進程的信息被稱爲消息。ROS中有許多標準類型消息。存儲在*.msg文件。
⑥服務類型(service(srv)type):服務說明存儲在*.srv文件中。
二、工作空間
還是先看一下上篇博客中分析小海龜案例:
打開ubuntu終端,輸入:
$roscd turtlesim
切換至ROS官方案例的turtlesim文件夾下。(這裏可以直觀感受一下cd和roscd的區別,roscd可以在配置好的ROS工作空間中,頂層目錄切換至它下面的任意存在的文件目錄;但是從底層級往高層文件目錄切換就要一步一步切換了,或者給出絕對路徑)
查看turtlesim的文件結構:(之前的版本里面還有一個src文件放着.cpp源程序)
images裏面放着各種小海龜的圖片每次打開小海龜外觀都不一樣。
1.工作空間創建
下列操作方法只適用於ROS Groovy及後期版本,對於ROS Fuerte及早期版本請選擇rosbuild。
下面開始創建一個名爲:catkin_ws的工作空間,幷包含一個空src目錄。
打開一個新的終端,我這裏直接在家目錄下創建了。可以自己根據需求任意自行選擇目錄。
- (mkdir -p 檢測catkin_ws/src是否存在,不存在目錄則創建。)
$ mkdir -p ~/catkin_ws/src
即這個工作空間是空的。
- (catkin_make可以簡單的理解爲cmake的ros版本集成形式。該命令在catkin 工作空間中是一個非常方便的工具。)
進入catkin_ws下進行編譯catkin_make:
$ cd ~/catkin_ws/
$ catkin_make
完成編譯後,查看一下當前目錄多出'build'和'devel'這兩個文件夾。'src'中多出了一個CMakeLists.txt文件。在'devel'文件夾裏面你可以看到幾個setup.*sh文件。source這些文件中的任何一個都可以將當前工作空間設置在ROS工作環境的最頂層,(.catkin_workspace爲隱藏文件,僅標記catkin工作區的位置以進行工具集成)。更多請參考catkin文檔。
每次自己建立完成一個catkin工作空間後使其生效就需要:接下來首先source一下新生成的setup.*sh文件:
$ source devel/setup.bash
同樣,roscd 可以在當前catkin_ws內跳轉任意一個文件目錄,而cd命令只能在給出絕對路徑或相對路徑時才能跳轉。
要想保證工作空間已配置正確,需確保ROS_PACKAGE_PATH環境變量包含你的工作空間目錄,採用以下命令查看:
$ echo $ROS_PACKAGE_PATH
輸出顯示:
/home/<youruser>/catkin_ws/src:/opt/ros/melodic/share:/opt/ros/melodic/stacks
到此你的工作環境已經搭建完成,接下來可以繼續學習ROS常用命令與節點等操作。
參考資料:
【1】ROS官網:http://wiki.ros.org/cn
【2】ROS機器人高效編程
【3】機器人操作系統ROS淺析