安装与设置你的ROS环境(rawmeat:wiki.ros.org/ROS/Tutorials/NavigatingTheFilesystem)
描述:这个教程介绍了ROS文件系统的概念,包括使用roscd, rosls, and rospack命令行工具。
教程等级:初学者
下一个教程:创建一个ROS package
(只介绍catkin)
内容:
- 预先条件
- 文件系统概念的快速浏览
- 文件系统工具
- 使用rospack
- 使用roscd
1. 子目录 - roscd log
- 使用rosls
- Tab 补全
- 复习
1.预先条件
对于这篇教程我们将会检查ROS-tutorial中的一个教程,请使用以下命令安装:
$ sudo apt-get install ros--ros-tutorials
将‘< distro >‘(包括’< >’)替换成你的ROS版本名(例如indigo, kinetic, lunar等)
2.文件系统概念的快速浏览
- Package: package是ROS代码的软件组织单位。每个package可以包含库,可执行文件,脚本,或其他的artifact
- Manifest(package.xml):一个manifest是一个package的描述。它定义了package之间的依赖文件,捕捉package的测试文件,例如版本,维护者,证书等。
Show - - - - - Note about stacks
3.文件系统工具
代码在许多ROS package之间传播,使用类似于ls与cd的命令行工具导航是非常无聊的,所以ROS为您提供工具。
3.1使用 rospack
rospack允许你得到关于package的信息。在这个教程中我们只会使用find选项,返回package的路径。
用法:
$ rospack find [package_name]
例子:
$ rospack find roscpp
将会返回:
YOUR_INSTALL_PATH/share/roscpp
如果你从Ubuntu Linux的apt安装了ROS kinetic你将会看见:
/opt/ros/kinetic/share/roscpp
3.2使用roscd
roscd是rosbash套装的一部分。它允许你直接改变到一个packaeg或者栈的目录(cd)。
用法:
$ roscd [locationname[/subdir]]
为了证明我们已经改变了roscpp package目录,运行这个实例:
$ roscd roscpp
现在让我们打印工作目录,使用Unix命令pwd:
$ pwd
你应该看见:
YOUR_INSTALL_PATH/share/roscpp
你将会看见YOUR_INSTALL_PATH/share/roscpp与rospack find在先前例子中给出的是相同的路径。
注意到roscd,和其他的ROS工具一样,只会找到在你的ROS_PACKAGE_PATH中列举出来的ROSpackage。为了看见你的ROS_PACKAGE_PATH中有什么,输入:
$ echo $ROS_PACKAGE_PATH
你的 ROS_PACKAGE_PATH应该包含一个目录的名单,其中ROSpackage被冒号分开。一个典型的ROS_PACKAGE_PATH看起来类似于:
/opt/ros/kinetic/base/install/share
类似于其他的环境路径,你可以向ROS_PACKAGE_PATH增加额外的目录,每个路径被一个冒号’:’分开。
3.2.1 子目录
roscd 可以移动到一个package或者stack的子目录。
尝试:
$ roscd roscpp/cmake
$ pwd
你将会看见:
YOUR_INSTALL_PATH/share/roscpp/cmake
3.3 roscd log
roscd log将会带你去ROS储存log文件的文件夹。注意到如果你没有运行任何ROS程序,这个将会报告一个错误,说这个不存在。
如果你之前已经运行了一些ROS程序,尝试:
$ roscd log
3.4 使用 rosls
rosls是roabash组件的一部分。它允许你在一个package中ls目录,使用名称而不是绝对的路径。
用法:
$ rosls [locationname[/subdir]]
例子:
$ rosls roscpp_tutorials
将会返回:
cmake launch package.xml srv
3.5 Tab 补全
打出完整的package名称可能是无聊的,在之前的例子中,roscpp_tutorials是一个相当长的名字。幸运的是,有一些ROS工具可以支持TAB补全
输入以下内容开始:
$ roscd roscpp_tut<<< now push the TAB key >>>
在按TAB键之后,命令行将会尽可能多地填充:
$ roscd turtle
但是,当有许多package以turtle开头的情况下,再按TAB一次,这将会展示所有的以turtle开头的ROS package:
turtle_actionlib/ turtlesim/ turtle_tf/
在命令行你将会有:
$ roscd turtle
现在打一个s在turtle之后,按TAB:
$ roscd turtles<<< now push the TAB key >>>
既然现在只有一个以turtle开头的package,你将会看见:
$ roscd turtlesim/
如果你想要看看最近安装的package的名称,你可以使用tab实现:
$ rosls <<< now push the TAB key twice >>>
4.复习
你可能会注意到ROS的命名模式:
- rospack = ros + pack(age)
- roscd = ros + cd
- rosls = ros + ls
这个模式适用于许多ROS工具。
现在你可以在ROS中遨游了,让我们创造一个package。