本教程介紹ROS文件系統概念,包括命令行工具roscd、rosls和rospack的使用。
內容:
預備工作 快速瞭解文件系統概念 文件系統工具
使用 rospack
使用 roscd
roscd log
使用 rosls
Tab 自動完成輸入 回顧
預備工作
本教程中我們將會用到ros-tutorials程序包,請先安裝:
$ sudo apt-get install ros-<distro>-ros-tutorials
將 替換成你所安裝的版本(比如Jade、Indigo、hydro、groovy、fuerte等)。
快速瞭解文件系統概念
Packages: 軟件包,是ROS應用程序代碼的組織單元,每個軟件包都可以包含程序庫、可執行文件、腳本或者其它手動創建的東西。
Manifest (package.xml): 清單,是對於'軟件包'相關信息的描述,用於定義軟件包相關元信息之間的依賴關係,這些信息包括版本、維護者和許可協議等。
Show note about stacks
文件系統工具
程序代碼是分佈在衆多ROS軟件包當中,當使用命令行工具(比如ls和cd)來瀏覽時會非常繁瑣,因此ROS提供了專門的命令工具來簡化這些操作。
使用 rospack
rospack允許你獲取軟件包的有關信息。在本教程中,我們只涉及到rospack中find參數選項,該選項可以返回軟件包的路徑信息。
# rospack find [包名稱]
$ rospack find roscpp
應 YOUR_INSTALL_PATH/share/roscpp是在Ubuntu Linux操作系統上通過apt來安裝ROS,你應該會準確地看到:
/opt/ros/groovy/share/roscpp
使用 roscd
roscd是rosbash命令集中的一部分,它允許你直接切換(cd)工作目錄到某個軟件包或者軟件包集當中。
用法:
# roscd [本地包名稱[/子目錄]]
示例:
$ roscd roscpp
爲了驗證我們已經切換到了roscpp軟件包目錄下,現在我們可以使用Unix命令pwd來輸出當前工作目錄:
$ pwd
你應該會看到:
YOUR_INSTALL_PATH/share/roscpp
你可以看到YOUR_INSTALL_PATH/share/roscpp和之前使用rospack find得到的路徑名稱是一樣的。
注意,就像ROS中的其它工具一樣,roscd只能切換到那些路徑已經包含在ROS_PACKAGE_PATH環境變量中的軟件包,要查看ROS_PACKAGE_PATH中包含的路徑可以輸入:
$ echo $ROS_PACKAGE_PATH
你的ROS_PACKAGE_PATH環境變量應該包含那些保存有ROS軟件包的路徑,並且每個路徑之間用冒號分隔開來。一個典型的ROS_PACKAGE_PATH環境變量如下:
/opt/ros/groovy/base/install/share:/opt/ros/groovy/base/install/stacks
跟其他路徑環境變量類似,你可以在ROS_PACKAGE_PATH中添加更多其它路徑,每條路徑使用冒號’:’分隔。
子目錄
使用roscd也可以切換到一個軟件包或軟件包集的子目錄中。
執行:
$ roscd roscpp/cmake
$ pwd
應該會看到:
YOUR_INSTALL_PATH/share/roscpp/cmake
roscd log
使用roscd log可以切換到ROS保存日記文件的目錄下。需要注意的是,如果你沒有執行過任何ROS程序,系統會報錯說該目錄不存在。
如果你已經運行過ROS程序,那麼可以嘗試:
$ roscd log
使用 rosls
rosls是rosbash命令集中的一部分,它允許你直接按軟件包的名稱而不是絕對路徑執行ls命令(羅列目錄)。
用法:
# rosls [本地包名稱[/子目錄]]
示例:
$ rosls roscpp_tutorials
應輸出:
cmake package.xml srv
Tab 自動完成輸入
當要輸入一個完整的軟件包名稱時會變得比較繁瑣。在之前的例子中roscpp tutorials是個相當長的名稱,幸運的是,一些ROS工具支持TAB 自動完成輸入的功能。
輸入:
# roscd roscpp_tut<<< 現在請按TAB鍵 >>>
當按TAB鍵後,命令行中應該會自動補充剩餘部分:
$ roscd roscpp_tutorials/
這應該有用,因爲roscpp tutorials是當前唯一一個名稱以roscpp tut作爲開頭的ROS軟件包。
現在嘗試輸入:
# roscd tur<<< 現在請按TAB鍵 >>>
按TAB鍵後,命令應該會盡可能地自動補充完整:
$ roscd turtle
但是,在這種情況下有多個軟件包是以turtle開頭,當再次按TAB鍵後應該會列出所有以turtle開頭的ROS軟件包:
turtle_actionlib/ turtlesim/ turtle_tf/
這時在命令行中你應該仍然只看到:
$ roscd turtle
現在在turtle後面輸入s然後按TAB鍵:
# roscd turtles<<< 請按TAB鍵 >>>
因爲只有一個軟件包的名稱以turtles開頭,所以你應該會看到:
$ roscd turtlesim/
原文地址:http://wiki.ros.org/cn/ROS/Tutorials/NavigatingTheFilesystem