ROS基础(二)——创建工作空间和功能包

ROS基础(二)——创建工作空间和功能包


使用ROS实现机器人开发的主要手段是写代码,这些代码文件就需要放置到一个固定的空间内,即工作空间。

1、什么是工作空间

工作空间(workspace)是一个存放工程开发相关文件的文件夹。Fuerte版本之后的ROS默认使用的是Catkin编译系统,一个典型Catkin编译系统下的工作空间结构如下。
典型的工作空间中一般包括以下四个目录空间。
1)src:代码空间(Source Space),开发过程中最常用的文件夹,用来存储所有ROS功能包的源码文件。
2)build:编译空间(Build Space),用来存储工作空间编译过程中产生的缓存信息和中间文件。
3)devel:开发空间(Development Space),用来放置编译生成的可执行文件。
4)install:安装空间(Install Space),编译成功后,可以使用make install命令将可执行文件安装到该空间中,运行该空间中的环境变量脚本,即可在终端中运行这些可执行文件。安装空间并不是必需的,很多工作空间中可能并没有该文件夹。

2、创建工作空间

创建工作空间的命令比较简单,首先使用系统命令创建工作空间目录,然后运行ROS的工作空间初始化命令即可完成创建过程:

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace

创建完成后,可以在工作空间的根目录下使用catkin_make命令编译整个工作空间:

cd ~/catkin_ws/
catkin_make

编译过程中,在工作空间的根目录里会自动产生build和devel两个文件夹及其中的文件。编译完成后,在devel文件夹中已经产生几个setup.*sh形式的环境变量设置脚本。使用source命令运行这些脚本文件,则工作空间中的环境变量可以生效。

source devel/setup.bash

为确保环境变量已经生效,可使用如下命令进行检查:

echo $ROS_PACKAGE_PATH

若打印的路径中已经包含当前工作空间的路径,则说明环境变量设置成功。

3、创建功能包

ROS中功能包的形式如下:

my_package/
    CMakeLists.txt
    package.xml
    ......

package.xml文件提供了功能包的元信息,也就是描述功能包属性的信息。CMakeLists.txt文件记录了功能包的编译规则。
ROS提供直接创建功能包的命令catkin_create_pkg,该命令的使用方法如下:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

在运行catkin_create_pkg命令时,用户需要输入功能包的名称(package_name)和所依赖的其他功能包名称(depend1、depend2、depend3)。例如,我们需要创建一个learning_communication功能包,该功能包依赖于std_msgs、roscpp、rospy等功能包。
首先进入代码空间,使用catkin_create_pkg命令创建功能包:

cd ~/catkin_ws/src
catkin_create_pkg learning_communication std_msgs rospy roscpp

创建完成后,代码空间src中会生成一个learning_communication功能包,其中已经包含package.xml和CMakeLists.txt文件。
然后回到工作空间的根目录下进行编译,并且设置环境变量:

cd ~/catkin_ws
catkin_make
source ~/catkin_ws/devel/setup.bash

猜你喜欢

转载自blog.csdn.net/weixin_45661757/article/details/112746482