Navigating the ROS Filesystem
Last updated
Last updated
/ /
描述:介紹ROS文件系統相關概念,包括使用roscd
, rosls
, rospack
命令行工具。
下一节:
爲了配合使用後面的ROS命令行工具,需要安裝ros-tutorials
元功能包,使用以下命令:
'<distro>' 替換成你安裝的ROS版本名稱(如:kinetic、lunar)。不過,通常完整安裝包安裝時,已安裝完成,這一步僅做檢查之用。
Packages:ROS中的代碼組織單元,包含庫文件、可執行文件、脚本文件和其他手動加入的文件。
**Manifests(package.xml):**當前功能包的描述文件,用於定義衆多包之間的依賴和獲取版本、維護者、許可證等信息。
ROS代碼組織方式較爲分散,ROS命令行工具能夠幫助快速找到功能包的位置。
作用:獲取packages
相關信息;
rospack find
可以獲取package
的路徑信息。下面將簡單演示rospack find
的使用。
用法:
示例:
將會返回以下信息:
如果是在Ubuntu
下安裝的ROS Kinetic
,將返回以下信息:
作用:直接切換到ROS package
的路徑下;
用法:
切換到roscpp
包下:
爲了驗證確實切換到了roscpp
下,輸入pwd
打印當前路徑:
可以發現,這一路徑與rospack find
給出的路徑是一樣的:
Notes:與其他ROS Tools
一樣,roscd
只會查找ROS_PACKAGE_PATH
中列出的目录中的 ROS package
。輸入以下命令可查看當前ROS_PACKAGE_PATH
内容:
在Ubuntu
下安裝的ROS Kinetic
通常能夠收到以下信息:
與其他環境變量一樣的是,可以向ROS_PACKAGE_PATH
添加其他目錄,不同路徑用 :
分割。
示例:
返回以下信息:
roscd log
將切換到ROS日志文件的存放路徑。
Notes:如果在此之前尚未運行過任何ROS節點,將返回錯誤信息并表示路徑不存在。
作用:通過ROS package
名稱即可列出其子目錄,而不需要完整的路徑;
用法:
示例:
收到以下信息:
輸入完整的package
名稱是一件冗長乏味的事情。在前面的例子中,roscpp_tutorials
無疑是一個相當長的名字了。所幸的是,一些ROS工具支持Tab補全。
可以輸入以下内容:
然後按下TAB
鍵,命令行就會補全剩下的部分:
當然,這是因爲在在當前ROS package
中,僅有roscpp_tutorials
以roscpp_tut
開頭。
現在我們嘗試輸入以下内容:
按下TAB
鍵后,命令行内容可能將補充至以下内容:
然而,當前有多個packages
以turtle
開頭。再次按下TAB
鍵,將會輸出所有以turtle
開頭的ROS package
。
然后,命令行仍然顯示如下内容:
如果想要定位到turtlesim/
,則需要至少再繼續在turtle
後面輸入一個s
,然後按下TAB
:
當僅有一個package
以turtles
開頭時, 將出現以下内容:
如果想看到當前所有的以安裝packages
的列表,可以在rosls
后,連續點擊兩次TAB
:
當不明確ROS Tools
使用規則時,可以在命令後鍵入-h
獲得使用説明,如下:
可以注意到ROS Tools
的命名格式:
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls
其實,這個命名格式在許多ROS Tools
都適用。
http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem