首页 > 代码库 > ROS文件系统介绍

ROS文件系统介绍

1.ROS文件系统中的基本概念

Packages: Package是ROS系统中最底层最基本的组织,里面存放各种文件:库、工具、可执行文件等.
Manifest: 一个package描述xml文件,定义package之间的依赖关系.
Stacks: package的集合,比package这个概念高一级别
Stack Manifest: 作用类似package manifest文件,但是它是针对stack的.

在文件系统中很容易识别packagestack:
package是一个包含 manifest.xml 文件的目录.
stack是一个包含 stack.xml 文件的目录.

2.文件系统工具

 

ROS中大量代码分散在众多的packagesstacks之中命令工具ls 和 cd已不能满足检索要求。因此ROS提供了一套自己的命令工具来完成与这些命令相似的工作.

 

(1) 使用rospack和rosstack

 

两个命令用于获取相应package或者stack的目录路径. 

 

$ rospack find [package_name]    $ rosstack find [stack_name]

 

$ rospack find roscpp   
结果:/opt/ros/indigo/share/roscpp

 

(2) 使用roscd

 

【1】改变当前目录,允许你直接切换(cd)工作目录到某个package或者stack的目录. 

 

$ roscd [locationname[/subdir]]     Eg:$ roscd roscpp

 

为了验证我们已经切换到了roscpp package 目录. 我们使用unix的命令查看路径pwd: 

 

$ pwd   
结果:/opt/ros/indigo/share/roscpp

 

可以看到YOUR_INSTALL_PATH/share/roscpp和之前使用rospack find得到的路径是一样的。 

 

命令 roscd及其它的ROS命令仅适用于环境变量$ROS_PACKAGE_PATH中存在的目录路径. 使用下面的命令查看环境变量$ROS_PACKAGE_PATH:

 

$ echo $ROS_PACKAGE_PATH

结果:/home/wj/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks

 

$ROS_PACKAGE_PATH可以添加任意目录路径,目录路径之间 ‘:‘ 分开。

 

【2】roscd 也能够直接进入一个 package 或 stack的子目录中. 

 

$ roscd roscpp/cmake
$ pwd
结果:/opt/ros/indigo/share/roscpp/cmake

 

(3)roscd log 

 

命令切换到ROS储存日志文件的目录。注意如果从未运行过任何ROS程序,命令会返回目录不存在的错误。

 

(4)使用 rosls

 

作用是列出指定的package或stack中的文件及目录.

 

$ rosls [locationname[/subdir]]

 

$ rosls roscpp_tutorials
结果:cmake  launch  package.xml  srv

 

(5)Tab 自动完成输入

 

当要输入一个完整的软件包名称时会变得比较繁琐。在之前的例子中roscpp tutorials是个相当长的名称,幸运的是,一些ROS工具支持TAB 自动完成输入的功能。 

 

Eg:roscd roscpp_tut<<< 现在请按TAB键 >>>

命令行中应该会自动补充剩余部分: $ roscd roscpp_tutorials/

 

总结: 

ROS命令工具的的命名方式: 

 

     rospack = ros + pack(age) 

 

     roscd = ros + cd 

 

     rosls = ros + ls 

 

ROS文件系统介绍