安装完ROS操作系统之后,先要对脚本环境进行相应的配置。为了确保已经正确设置了类似于ROS_ROOT和ROS_PACKAGE_PATH这样的环境变量,在终端输入命令
$ export | grep ROS
如果发现没有配置,我们就需要'source'某些'setup.*sh'文件了。通过ubuntu上的apt工具安装好ROS操作系统后,我们将在'opt/ros/indigo/'目录下看到setup.*sh文件。在这里我安装的系统是ROS Indigo,执行如下命令:
$ source /opt/ros/indigo/setup.bash
在每次打开终端时你都需要先运行上面这条命令后才能运行ros相关的命令,为了避免这一繁琐过程,你可以事先在.bashrc文件(初学者请注意:该文件是在当前系统用户的home目录下)中添加这条命令,这样当你每次登录后系统已经帮你执行这些命令配置好环境。
接下来我们需要创建ROS工作空间,对于ROS Indigo版本的系统建议创建catkin工作空间。执行如下命令
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
通常在 src目录下没有任何软件包,只有CMakeLists.txt文件。我们可以尝试进行编译:
$ cd ~/catkin_ws/
$ catkin_make
catkin_make命令在catkin 工作空间中是一个非常方便的工具。要想保证工作空间已配置正确需确保ROS_PACKAGE_PATH环境变量包含你的工作空间目录,采用以下命令查看:
$ echo $ROS_PACKAGE_PATH
得到结果是
/home/<youruser>/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
这里<youruser>是当前计算机用户名。
至此ROS工作环境已经搭建完成。
接下来简单介绍ROS的文件系统,以及命令行工具rosls,roscd,rospack的使用。
文件系统的概念
Packages: 软件包,是ROS应用程序代码的组织单元,每个软件包都可以包含程序库、可执行文件、脚本或者其它手动创建的东西。
Manifest (package.xml): 清单,是对于'软件包'相关信息的描述,用于定义软件包相关元信息之间的依赖关系,这些信息包括版本、维护者和许可协议等。
ROS提供了专门的命令工具,方便管理文件系统。
1、rospack命令
rospack中find参数选项,该选项可以返回软件包的路径信息。用法:
# rospack find [包名称]
如果输入命令
$ rospack find roscpp
输出
/opt/ros/indigo/share/roscpp
2、roscd命令
roscd是rosbash命令集中的一部分,是直接切换(cd)工作目录的命令。用法:
# roscd [本地包名称[/子目录]]
示例:
$ roscd roscpp
应该输出:
YOUR_INSTALL_PATH/share/roscpp
在这里,YOUR_INSTALL_PATH/share/roscpp和之前使用rospack find得到的路径名称是一样的。
我们可以使用pwd命令查看当前的工作目录。
roscd只能切换到那些路径已经包含在ROS_PACKAGE_PATH环境变量中的软件包,要查看ROS_PACKAGE_PATH中包含的路径可以输入:
$ echo $ROS_PACKAGE_PATH
使用roscd也可以切换到一个软件包或软件包集的子目录中。
命令行输入:
$ roscd roscpp/cmake
$ pwd
输出:
YOUR_INSTALL_PATH/share/roscpp/cmake
3、roscd log命令
roscd log可以切换到ROS保存日记文件的目录。
4、rosls命令
用法:
# rosls [本地包名称[/子目录]]
举例说明:
$ rosls roscpp_tutorials
应该输出:
cmake package.xml srv
此外,一些ROS工具支持TAB 自动完成输入的功能。当我们要输入一个软件包名称时, TAB键可以自动补充完整名称,大大提高我们输入命令行代码的效率。
备注:
ROS命令工具的的命名方式:
rospack = ros + pack(age)
roscd = ros + cd
rosls = ros + ls
这种命名方式在许多ROS命令工具中都会用到。