文件系统
本博客是对http://wiki.ros.org/上ROS教程的学习总结,欢迎大家交流学习。本部分主要讲ROS文件系统,包括命令行工具rospack、roscd、rosls、和Tab 自动完成输入的使用。
1.准备工作
本部分会用到ros-tutorials程序包,请先安装ros-indigo-ros-tutorials:
$ sudo apt-get install ros-indigo-ros-tutorials
note:如果你所安装的ros版本为hydro,将indigo替换为hydro
Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。
Manifest (package.xml): 清单,是对于’软件包’相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。
2.rospack的使用
rospack可以获取软件包的有关信息,可以通过 $ rospack -h
查看具体用法,在这里以rospack中find参数选项为例,该选项可以返回软件包的路径信息,基本用法:
rospack find [包名称]
eg:
$ rospack find roscp
/opt/ros/indigo/share/roscpp
3.roscd的使用
roscd是rosbash命令集中的一部分,可以直接切换(cd)工作目录到某个软件包或者软件包集当中,基本用法:
roscd [本地包名称[/子目录]]
eg:
$ roscd roscpp
$ pwd
/opt/ros/indigo/share/roscpp
使用roscd也可以切换到一个软件包或软件包集的子目录中:
$ roscd roscpp/cmake
$ pwd
/opt/ros/indigo/share/roscpp/cmake
使用roscd log可以切换到ROS保存日记文件的目录下。需要注意的是,如果没有执行过任何ROS程序,系统会报错说该目录不存在。
$ roscd log
4.rosls的使用
rosls是rosbash命令集中的一部分,可以直接按软件包的名称而不是绝对路径执行ls命令(罗列目录),基本用法:
rosls [本地包名称[/子目录]]
eg:
$ rosls roscpp_tutorials
cmake launch package.xml srv
5.Tab 自动完成输入
当要输入一个完整的软件包名称时会变得比较繁琐,在之前的例子中roscpp tutorials是个相当长的名称,幸运的是一些ROS工具支持TAB 自动完成输入的功能。
eg:
输入
$ roscd roscpp_tut<<<按TAB键>>>
当按TAB键后,命令行中应该会自动补充剩余部分:
$ roscd roscpp_tutorials/
因为roscpp tutorials是当前唯一一个名称以roscpp tut作为开头的ROS软件包。
从上面命令形式可知,ROS命令工具的的命名方式:
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls
这种命名方式在许多ROS命令工具中都会用到。