ROS檔案系統導航
描述:這個教程描述了ROS檔案系統的概念,并且涵蓋了roscd, rosls, and rospack指令行工具
教程:針對初學者
下個教程:建立ROS包
内容
1. 前提
2. 檔案系統快速浏覽
3. 檔案系統工具
3.1 rospack使用
3.2 roscd使用
3.3 roscd log
3.4 Using rosls
3.5 Tab Completion
4 回顧
1 前提
對于這個教程我們将檢查ros-tutorials包,請安裝按照下面的阿指令。
$ sudo apt-get install ros-<distro>-ros-tutorials
替代 '<distro>' 用你自己的版本 (e.g. hydro, groovy, electric, fuerte etc.),參見上篇文章。
2. 快速浏覽檔案系統的概念
2.1 Packages(包):包是ROS軟體組織單元,每一個包都包含庫檔案,可執行檔案,腳本,其它的檔案。
2.2 Manifest (package.xml),Manifest 是一個包的描述,他服務于定義依存關系,即包和擷取的元資訊(版本,維護者,許可證)之前的關系。
Show note about stacks
檔案系統工具
代碼在交叉的多個ROS包之間展開,帶有指令行的導航工具如ls cd 可能是非常備援的,這就是為什麼ROS提供工具來幫助我們。
rospack的使用
rospack讓你能夠擷取包的資訊,在這個教程中,我們僅僅涉及find 選項,它将傳回包的路徑。
用法:
# rospack find [包名稱]
Example:
$ rospack find roscpp
傳回:
-
YOUR_INSTALL_PATH/share/roscpp
如果你是采用apt 方式安裝的系統,你們結果傳回:
indigo:版本号
-
/opt/ros/indigo/share/roscpp
- -----------------------------------------------------------------
- 我的是hydro版本
[email protected]:~/catkin_ws/devel$ rospack find roscpp
/opt/ros/hydro/share/roscpp
-----------------------------------------------------------------------------
roscd使用
ros是rosbash 集的一部分,他允許你直接切換目錄到包中。
用法:
# roscd [locationname[/subdir]]
Run this example:
$ roscd roscpp
用pwd顯示目前所在檔案夾子
$ pwd
你會看到:
-
[email protected]:~/catkin_ws/devel$ roscd roscpp [email protected]:/opt/ros/hydro/share/roscpp$ pwd /opt/ros/hydro/share/roscpp
備注: roscd像其它的ROS工具一樣,他僅發現ROS包在ROS_PACKAGE_PATH内,通過echo $ROS_PACKAGE_PATH察看ROS 目錄,
$ echo $ROS_PACKAGE_PATH
結果如下,目錄之間用;号隔開。
/opt/ros/indigo/base/install/share:/opt/ros/indigo/base/install/stacks
Subdirectories
roscd 能夠移動到一個包的子目錄
$ roscd roscpp/cmake
$ pwd
結果:
-
YOUR_INSTALL_PATH/share/roscpp/cmake
roscd log
roscd log将帶你到ROS儲存log的檔案夾,如果你沒有運作過任何ROS程式,他将産生錯誤,因為log不存在
$ roscd log
Using rosls
rosls 直接進入包中,并列出檔案名稱。
# rosls [locationname[/subdir]]
$ rosls roscpp_tutorials
-
cmake launch package.xml srv
TAB /符号
它将冗長的列印處整個包的名字。
I
# roscd roscpp_tut 按下TAB
After pushing the TAB key, the command line should fill out the rest:
$ roscd roscpp_tutorials/
按鍵聯想
# roscd tur<<< now push the TAB key >>>
$ roscd turtle
-
turtle_actionlib/ turtlesim/ turtle_tf/
$ roscd turtle
# roscd turtles<<< now push the TAB key >>>
$ roscd turtlesim/
回顧:
觀察前文ROS的命名風格
- rospack = ros + pack(age)
- roscd = ros + cd
- rosls = ros + ls
This naming pattern holds for many of the ROS tools.
Now that you can get around in ROS, let's create a package.