描述:這篇文章主要介紹ROS文件系統(tǒng)的概念,包括roscd,rosls和rospack等命令工具的用法;
1.1 ROS文件系統(tǒng)中的相關(guān)概念
功能包(Packages):功能包是ROS中比較基礎(chǔ)的軟件組織方式,每個(gè)功能包可包含依賴庫,可執(zhí)行文件,腳本文件及其它的相關(guān)文件;
Manifest(package.xml):Manifest是功能包的描述文件,它主要定義功能包與其他功能包之間的依賴關(guān)系,并提供關(guān)于功能包的版本信息,維護(hù)者信息和許可信息等。
1.2 文件系統(tǒng)工具集
由于ROS代碼分布在許多功能包中,如果采用ls和cd等命令將會(huì)非常繁瑣,因此ROS提供一些自定義的工具集輔助操作;
1.2.1 rospack使用介紹
rospack用于獲取功能包的相關(guān)信息,在這篇文章中,我們只涉及其中的find參數(shù),它返回功能包的路徑信息;
用法:
# rospack find [package_name]
示例:
$ rospack find roscpp
執(zhí)行結(jié)果如下:
YOUR_INSTALL_PATH/share/roscpp
如果你的ROS是從apt安裝到Ubuntu系統(tǒng)中的,將會(huì)顯示如下結(jié)果:
/opt/ros/groovy/share/roscpp
1.2.2 roscd使用介紹
roscd 是rosbash套件中的一部分,利用它可以改變路徑到指定的功能包或功能包集中;
用法:
# roscd [locationname[/subdir]]
示例:
$ roscd roscpp
為了驗(yàn)證是否改變到roscpp功能包的路徑下,可采用Uinx的命令pwd打印出當(dāng)前的路徑信息;
$ pwd
得到如下執(zhí)行結(jié)果:
YOUR_INSTALL_PATH/share/roscpp
這個(gè)路徑和上一個(gè)示例中rospack find roscpp查找出的路徑是一致的;
注意,roscd和其他ROS命令工具一樣,只會(huì)查找ROS_PACKAGE_PATH變量中包含的packages,通過下面的命令可以查看ROS_PACKAGE_PATH包含的信息:
$ echo $ROS_PACKAGE_PATH
ROS_PACKAGE_PATH變量包含一系列被冒號(hào)“:”隔開的路徑,通常情況下,ROS_PACKAGE_PATH變量值如下所示:
/opt/ros/groovy/base/install/share:/opt/ros/groovy/base/install/stacks
與其他環(huán)境變量的用法一致,可以添加路徑到ROS_PACKAGE_PATH中,路徑間必須用冒號(hào)隔開;
子目錄
roscd也可以改變到一個(gè)功能包或者功能包集的子目錄中;
試用如下命令:
$ roscd roscpp/cmake
$ pwd
執(zhí)行結(jié)果如下所示:
YOUR_INSTALL_PATH/share/roscpp/cmake
1.2.3 roscd log
roscd log 將會(huì)把你引導(dǎo)到ROS日志所在的目錄下;需要注意的是,如果你沒有運(yùn)行任何ROS程序,它將顯示日志目錄不存在的錯(cuò)誤信息;
如果你已經(jīng)運(yùn)行過ROS程序,可以嘗試如下命令:
$ roscd log
1.2.4 rosls使用介紹
rosls是rosbash套件的一部分,它可以通過功能包的名稱列出其下面包含的文件,而不必使用絕對(duì)路徑;
用法:
# rosls [locationname[/subdir]]
示例:
$ rosls roscpp_tutorials
執(zhí)行結(jié)果如下:
cmake package.xml srv
1.2.5 使用Tab鍵
有時(shí)拼寫出整個(gè)功能包的名稱會(huì)比較繁瑣,在上一個(gè)示例中, roscpp_tutorials是一個(gè)相當(dāng)長的名稱,幸運(yùn)的是大部分ROS的命令工具支持TAB鍵操作;
按照如下所示操作:
# roscd roscpp_tut<<< 此處按下TAB鍵 >>>
按下TAB鍵后,命令行會(huì)自動(dòng)填充完余下的字符,如下所示:
$ roscd roscpp_tutorials/
1.2.6 ROS命令工具的風(fēng)格
經(jīng)過上面的一些示例可以總結(jié)出關(guān)于ROS命令的命名風(fēng)格:
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls
在ROS系統(tǒng)中,大部分的命令工具均采用這樣的命名方式;