1.ROS文件系统中的基本概念
Packages: Package是ROS系统中最底层最基本的组织,里面存放各种文件:库、工具、可执行文件等.
Manifest: 一个package描述xml文件,定义package之间的依赖关系.
Stacks: package的集合,比package这个概念高一级别
Stack Manifest: 作用类似package manifest文件,但是它是针对stack的.
在文件系统中很容易识别package和stack:
package是一个包含 manifest.xml 文件的目录.
stack是一个包含 stack.xml 文件的目录.
2.文件系统工具
ROS中大量代码分散在众多的packages和stacks之中. 命令工具ls 和 cd已不能满足检索要求。因此ROS提供了一套自己的命令工具来完成与这些命令相似的工作。
先下载一个 ros-tutorials
程序包:
$ sudo apt-get install ros-indigo-ros-tutorials
(1) 使用rospack和rosstack
rospack
查找软件包。返回信息:软件包的路径。 $ rospack find [package_name]
rosstack 查找stack。返回信息:stack的路径。 $ rosstack find [stack_name]
$ rospack find roscpp
结果:/opt/ros/indigo/share/roscpp
(2) 使用roscd
【1】直接切换(cd)到某个package或者stack的目录.
$ roscd [locationname[/subdir]]
$ roscd roscpp
为了验证我们已经切换到了roscpp p软件包目录. 我们使用unix的命令查看路径pwd:
$ pwd
结果:/opt/ros/indigo/share/roscpp
(3)使用 rosls
作用是列出指定的package或stack中的文件及目录.
$ rosls [locationname[/subdir]]
$ rosls roscpp_tutorials
结果:cmake launch package.xml srv
(5)Tab 自动完成输入
当要输入一个完整的软件包名称时会变得比较繁琐,ROS工具支持TAB 自动完成输入的功能。
Eg:roscd roscpp_tut<<< 现在请按TAB键 >>> ,命令行中应该会自动补充剩余部分。
总结:
ROS命令工具的的命名方式:
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls