ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 3 创建一个ROS包

1. 创建一个包

本节的重点是使用catkin创建一个包(也可以使用rospack_create,这里不讲解),并讲解如何使用rospack来列出包。

2. caktin包的组成

*包必须包含package.xml文件,它是提供包的元信息的(前面说过)。
*包必须包含CMakeLists.txt文件,catkin提供这个文件的模板,后期根据自己需要修改。
*每个包是独立的文件夹中,不允许嵌套。
类似的包结构如下图:
这里写图片描述

3.catkin工作空间中的包结构

使用catkin包的推荐方法使使其在一个catkin workspace中,但是也可以独立的编译一个包,一个正常的工作空间可能如下图架构:
ROS学习(基于Ubuntu 15.04 和ROS Jade)第三章 ROS核心教程 之 3 创建一个ROS包_第1张图片

4. 创建一个catkin包

4.1 step1 切换到工作空间的源码目录:

$ cd ~/catkin_ws/src      //这个源码目录是在创建工作空间时创建的

4.2 step2 使用catkin_create_pkg创建包

$ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

这将会创建一个名为beginner_tutorials的包,包中包括packages.xml和CMakeList.txt文件,并且已经根据给出的创建信息填充了部分文件。
catkin_create_pkg需要给出包的名字和可选地给出包的依赖,依赖项可以在以后手动添加到package.xml中。

5. 编译catkin工作空间、执行setup脚本

$ cd catkin_ws     //切换到工作空间顶层目录
$ catkin_make  //make

在编译完成后,如果之前没有配置当前工作空间相关信息到ROS环境变量中,则需要执行以下:

$ . ~/catkin_ws/devel/setup.bash

这里就类似安装ROS时将/opt/ros/jade/setup.bash添加到shell启动脚本一样。一个是在shell中建立ROS环境变量,一个是将当前工作空间变量信息添加到ROS环境变量中。
并不是每次catkin_make后都需要执行这个脚本,从建立工作空间后一次就够了。

6. 包依赖

6.1 一级依赖

可以使用rospack工具的depends1(1指一级依赖)选项查看包的一级依赖:

$ rospack depends1 beginner_tutorials
//会看到以下一级依赖
std_msgs
rospy
roscpp

可以看出来,这些依赖和我们使用catkin_create_okg创包时使用的参数一样,这些依赖都在packages.xml中:

$ roscd beginner_tutorials
$ cat package.xml

//会看到如下内容

...
  catkin
  roscpp
  rospy
  std_msgs
...

6.2 简介依赖

每个依赖包都可能有很多自己的依赖,rospack可以使用depends选项递归地列出所有嵌套的依赖:

$ rospack depends beginner_tutorials
//会看到很多依赖
std_msgs
rospy
roscpp
...
...
...

7. 定制自己的包

7.1 定制package.xml文件

package.xml文件位于包目录中,它是catkin生成的,我们需要根据我们的实际情况来修改该文件:

7.1.1 修改描述标签

 The beginner_tutorials package
 这里填写包的基本描述信息

7.1.2 修改维护信息

维护信息很重要,当你的包在网上流传,那么使用者会通过该信息来联系你。
一个包可能会有多个维护者,那么每个维护者占用一条消息。

Toggle line numbers 
   7    
   8   
   9   
  10   "[email protected]">user

7.1.3 修改许可标签

许可标签十分重要,它描述了你的包具有什么样的权限。

Toggle line numbers 
  12   
  13   
  14   
  15   TODO

7.1.4 修改依赖标签

依赖分为4种: build_depend, buildtool_depend, run_depend, test_depend. 在xml文件中都有体现,如下:

12   catkin
  13 
  14   roscpp
  15   rospy
  16   std_msgs
  17 
  18   roscpp
  19   rospy
  20   std_msgs

  27   
  28   
  29   
  30   
  31   
  32   
  33   
  34   
  35   
  36   
  37   
  38   catkin
  39   roscpp
  40   rospy
  41   std_msgs

7.1.5 最终的package.xml文件

把注释和未使用的标签清除后,简洁的package.xml文件如下:

"1.0"?>

  beginner_tutorials
  0.1.0
  The beginner_tutorials package

  "[email protected]">Your Name
  BSD
  "website">http://wiki.ros.org/beginner_tutorials
  "[email protected]">Jane Doe

  catkin

  roscpp
  rospy
  std_msgs

  roscpp
  rospy
  std_msgs


7.2 定制CMakeList.txt文件

经过以上的步骤我们已经定制完成了属于我们自己包的package.xml文件,接下来我们要修改CMakeList.txt文件,并构建我们的包。看下一节教程。

你可能感兴趣的:(ROS,ROS,创建ROS包,ROS-packag)