ROS基础(二)|创建工作空间并编译ROS功能包

关键词:ROS

ROS使用练习

ROS文件系统

我们通过命令行工具来浏览ROS的文件系统。

为了获得功能包和功能包集的信息,比如,其路径、依赖关系等,我们将使用rospackrosstack命令进入功能包和功能包集,并列出其中 的内容。

例如,如果你想要找turtlesim包的路径,可以使用以下命令:

1
rospack find turtlesim 

你将要获得以下信息:

如果你想要找到已经在系统安装过的某个元功能包,示例如下:

1
rospack find ros_comm

你将获得ros-comm元功能包的路径:

注意:功能包是rospack ,元功能包是rosstack,要注意区分。

要获得功能包或者功能包集下面的文件列表,需要使用:

1
rosls turtlesim

更改当前目录,尤其是进入某个文件夹,可以使用roscd命令完成:

1
roscd turtlesim
1
pwd

将获得以下新路径:

创建工作空间

我们会在工作空间完成本书使用的所有代码。

要查看ROS正在使用的工作空间,请使用下面的命令:

1
echo $ROS_PACKAGE_PATH

会看到如下类似信息:

我们将要创建的文件夹位于/root/dev/catkin_ws/src中。要新建文件夹,使用以下命令:

1
2
3
mkdir -p /root/dev/catkin_ws/src
cd /root/dev/catkin_ws/src
catkin_init_workspace

当创建工作空间文件夹后,里面并没有功能包,只有CMakeList.txt文件。使用下面的命令来编译工作空间

1
2
cd /root/dev/catkin_ws
catkin_make

你将看到类似信息:

现在输入ls命令,可以看到创建的新文件夹,分别是build和devel文件夹。

输入以下命令,再次初始化ros环境,至此,工作空间创建完毕。

1
source devel/setup.bash

这一步只重新加载了setup.bash文件,如果关闭并打开一个新的命令行窗口,也将得到同样的效果。

输入以下命令,将ROS的初始化脚本加入到bash的配置文件中,这样,每次打开一个新的bash shell窗口时,就自动完成了ROS的初始化。

1
echo "source /opt/ros/kinetic/setup.bash" >> ~/.bashrc

创建ROS功能包和元功能包

使用以下命令在之前建立的工作空间中创建新的功能包:

1
2
cd /root/dev/catkin_ws/src
catkin_create_pkg TEST std_msgs roscpp

此命令的格式包括包的名称和依赖项。在这个示例中,依赖项包括 std_msgsroscpp.

如下所示:

1
2
3
4
catkin_create_pkg name [dependencies [dependencies ...]]
positional arguments:
name The name for the package
dependencies Catkin package Dependencies

这些依赖项主要包括以下几个:

  • std_msgs:包含了常见的消息类型,表示基本数据类型和其他基本的消息构造,如多维数组。
  • roscpp:使用C++实现了ROS的各种功能。它提供了一个客户端库,让C++程序员能够调用这些接口快速完成与ROS的主题、服务和参数相关的开发工作。

如果所有步骤一切顺利,结果如下图所示:

正如我们看到的,可以使用rospack、roscd和rosls命令来获取新的功能包信息。下面是可以执行的一些操作。

  • rospack profile:此命令用于通知用户ROS中新添加的内容。在安装任何功能包之后使用它。
  • rospack find TEST:此命令用于查看依赖关系。
  • rosls TEST:此命令用于查看内容
  • roscd TEST:此命令会切换到TEST功能包所在的路径。

编译ROS功能包

编译功能包的的时候,主要是代码的编译过程,不仅包括用户添加的代码,还包括由消息和服务生成的代码。

为了编译功能包,可以使用catin_make工具:

1
2
cd /root/dev/catkin_ws/
catkin_make

如果没有看到错误提示信息,说明功能包编译成功。

必须在workspace文件夹中运行catkin_make命令。如果在其他文件这样做,命令将无法执行!

当你在TEST文件夹中试图使用catkin_make编译工具包时,你会看到如下错误:

当你在catkin_ws文件夹中执行catkin_make命令时,则会编译成功。

如果编译单个工具包,可以使用如下格式的命令:

1
catkin_make --pkg <package name>