ROS Learning
  • 简介
  • Related Links
  • ROS Overview
  • ROS Env Configuration
    • Kinetic Installation
    • Noetic Installation
    • IDE & Tools Configuration
  • My Notes
    • Getting Start
    • ROS Concepts
      • ROS Topic 理论模型
      • ROS Service 理论模型
    • ROS Tutorials
      • ROS 文件系统 & 命令行工具
      • ROS Topic 通信简单示例
      • ROS Service 通信简单示例
      • ROS 参数服务器
      • ROS 分布式通信
    • Rotors Simulator
      • RotorS Simulator Installation
      • RotorS with virtual joystick
      • Rotors Simulator Usage
      • RotorS 分布式通信综合案例
  • ROS Official Docs
    • ROS Official Tutorials
      • Beginner Level
        • Installing and Configuring Your ROS Environment
        • Navigating the ROS Filesystem
        • Creating a ROS Package
        • Building a ROS Package
        • Understanding ROS Nodes
        • Understanding ROS Topics
        • Understanding ROS Services and Parameters
    • ROS Concepts
    • ROS Command Line Tools
  • ROS 2
    • Action
Powered by GitBook
On this page
  • 必要準備
  • 相關概念
  • 文件系統工具
  • rospack
  • roscd
  • rosls
  • Tab 補全(Tab-completion)
  • 幫助
  • 總結
  • Reference
  1. ROS Official Docs
  2. ROS Official Tutorials
  3. Beginner Level

Navigating the ROS Filesystem

PreviousInstalling and Configuring Your ROS EnvironmentNextCreating a ROS Package

Last updated 2 years ago

/ /

描述:介紹ROS文件系統相關概念,包括使用roscd, rosls, rospack 命令行工具。

下一节:

必要準備

爲了配合使用後面的ROS命令行工具,需要安裝ros-tutorials元功能包,使用以下命令:

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

'<distro>' 替換成你安裝的ROS版本名稱(如:kinetic、lunar)。不過,通常完整安裝包安裝時,已安裝完成,這一步僅做檢查之用。

相關概念

Packages:ROS中的代碼組織單元,包含庫文件、可執行文件、脚本文件和其他手動加入的文件。

**Manifests(package.xml):**當前功能包的描述文件,用於定義衆多包之間的依賴和獲取版本、維護者、許可證等信息。

文件系統工具

ROS代碼組織方式較爲分散,ROS命令行工具能夠幫助快速找到功能包的位置。

rospack

作用:獲取packages相關信息;

rospack find可以獲取package的路徑信息。下面將簡單演示rospack find的使用。

用法:

$ rospack find [package]

示例:

$ rospack find roscpp

將會返回以下信息:

ROS_INSTALL_PATH/share/roscpp

如果是在Ubuntu下安裝的ROS Kinetic,將返回以下信息:

/opt/ros/kinetic/share/roscpp

roscd

作用:直接切換到ROS package的路徑下;

ROS package 根目錄

用法:

$ roscd <package-or-stack>[/subdir]

切換到roscpp包下:

$ roscd roscpp

爲了驗證確實切換到了roscpp下,輸入pwd打印當前路徑:

$ pwd

可以發現,這一路徑與rospack find給出的路徑是一樣的:

ROS_INSTALL_PATH/share/roscpp

Notes:與其他ROS Tools一樣,roscd只會查找ROS_PACKAGE_PATH中列出的目录中的 ROS package。輸入以下命令可查看當前ROS_PACKAGE_PATH内容:

$ echo $ROS_PACKAGE_PATH

在Ubuntu下安裝的ROS Kinetic通常能夠收到以下信息:

/opt/ros/kinetic/share

與其他環境變量一樣的是,可以向ROS_PACKAGE_PATH添加其他目錄,不同路徑用 : 分割。

ROS package 子目錄

示例:

$ roscd roscpp/cmake
$ pwd

返回以下信息:

ROS_INSTALL_PATH/share/roscpp/cmake

roscd log

roscd log將切換到ROS日志文件的存放路徑。

Notes:如果在此之前尚未運行過任何ROS節點,將返回錯誤信息并表示路徑不存在。

$ roscd log

rosls

作用:通過ROS package名稱即可列出其子目錄,而不需要完整的路徑;

用法:

$ rosls <package-or-stack>[/subdir]

示例:

$ rosls roscpp_tutorials

收到以下信息:

cmake launch package.xml  srv

Tab 補全(Tab-completion)

輸入完整的package名稱是一件冗長乏味的事情。在前面的例子中,roscpp_tutorials無疑是一個相當長的名字了。所幸的是,一些ROS工具支持Tab補全。

可以輸入以下内容:

$ roscd roscpp_tut<<< now push the TAB key >>>

然後按下TAB鍵,命令行就會補全剩下的部分:

$ roscd roscpp_tutorials/

當然,這是因爲在在當前ROS package中,僅有roscpp_tutorials以roscpp_tut開頭。

現在我們嘗試輸入以下内容:

$ roscd tur<<< now push the TAB key >>>

按下TAB鍵后,命令行内容可能將補充至以下内容:

$ roscd turtle

然而,當前有多個packages以turtle開頭。再次按下TAB鍵,將會輸出所有以turtle開頭的ROS package。

turtle_actionlib/  turtlesim/ turtle_tf/

然后,命令行仍然顯示如下内容:

$ roscd turtle

如果想要定位到turtlesim/ ,則需要至少再繼續在turtle後面輸入一個s,然後按下TAB:

$ roscd turtles<<< now push the TAB key >>>

當僅有一個package以turtles開頭時, 將出現以下内容:

$ roscd turtlesim/

如果想看到當前所有的以安裝packages的列表,可以在rosls后,連續點擊兩次TAB:

$ rosls <<< now push the TAB key twice >>>

幫助

當不明確ROS Tools使用規則時,可以在命令後鍵入-h獲得使用説明,如下:

$ rospack -h

總結

可以注意到ROS Tools的命名格式:

rospack = ros + pack(age)

roscd = ros + cd

rosls = ros + ls

其實,這個命名格式在許多ROS Tools都適用。

Reference

  1. http://wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem

ROS
Tutorials
NavigatingTheFilesystem
Creating a ROS Package