1、準備
這篇文章介紹 ROS 文件系統相關工具的使用,需要提前安裝個 pkg:
sudo apt-get install ros-kinetic-ros-tutorials
2、ROS 文件系統基本概念
- Package:ros pkg 是 ros 中代碼的基本組織結構,每個包中都包含庫文件,可執行文件,腳本和其他文件。
- Manifests(package.xml):這個文件定義了 ros 包的基本屬性,包括 pkg 的依賴關係,維護者,版本,license 等信息。
3、文件系統工具
ros 提供了 roscd,rosls 等命令來代替 shell 中的 cd,ls 等,可以非常方便我們在 ros 環境中使用,下面分別來學習常用的基礎 ros 工具。
3.1 rospack
rospack 可以得到一個包的信息,比如用 find 來得到一個包的路徑:
rospack find [pkg name]
例如:
rospack find roscpp
返回這個包的路徑:
/opt/ros/kinetic/share/roscpp
3.2 roscd
使用 roscd 可以直接進入一個 pkg 中,不用像使用 cd 那樣用絕對路徑:
roscd [pkgname[/subdir]]
比如進入 roscpp 包的路徑:
roscd roscpp
用 linux 命令打印當前的路徑看看:
pwd
輸出:
/opt/ros/kinetic/base/install/share/roscpp
這裏要注意一點:roscd 只會在 ROS_PACKAGE_PATH 環境變量指定的路徑中查找 ros 包,並進入這個包中,所以在使用 roscd 來進入一個 pkg 前,一定要保證 pkg 包的路徑在 ROS_PACKAGE_PATH 中。
使用下面的命令來查看你當前的 pkg path:
echo $ROS_PACKAGE_PATH
另外,roscd 也支持進入一個 pkg 的子目錄:
roscd roscpp/cmake
你可以再使用 pwd 來輸出當前路徑。
3.3 rosls
使用 rosls 來直接列出一個 ros pkg 的目錄,也不用使用絕對路徑,只需要一個 pkg name 即可:
rosls [pkgname[/subdir]]
例如:
rosls roscpp_tutorials
輸出該 pkg 的目錄:
cmake launch package.xml srv
3.4 Tab 補全
ROS 的命令也都支持 Tab 補全,如果對 shell 比較熟悉的同學應該都知道,不用完全手動輸入一個 pkg 的全名,輸入一些關鍵字符,然後按 Tab 鍵即可出現候選項了:
roscd tur <<< Push Tab key
roscd turtle
本文原創首發於同名微信公號「程序小哥」,微信搜索關注回覆「1024」你懂的!