1. 程式人生 > >ROS系列三:ROS檔案系統介紹

ROS系列三:ROS檔案系統介紹

轉自:http://wiki.ros.org/cn/ROS/Tutorials/NavigatingTheFilesystem 

目錄

預備工作

快速瞭解檔案系統概念

檔案系統工具

回顧


 

預備工作

本教程中我們將會用到ros-tutorials程式包,請先安裝:

$ sudo apt-get install ros-<distro>-ros-tutorials

將 <distro> 替換成你所安裝的版本(比如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

roslsrosbash命令集中的一部分,它允許你直接按軟體包的名稱而不是絕對路徑執行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/

 

回顧

你也許已經注意到了ROS命令工具的的命名方式:

  • rospack = ros + pack(age)
  • roscd = ros + cd
  • rosls = ros + ls

這種命名方式在許多ROS命令工具中都會用到。

到此你已經瞭解了ROS的檔案系統結構,接下來我們開始建立一個工作空間