ROS学习笔记(三)学会创建一个ROS package

总结:把总结写在前面,如果不想看大段文字只想跑通ROS的话只要看总结就好了。

  • 创建和编译catkin workspace
mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
  • 创建catkin package
cd ~/catkin_ws/src
catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

正文:在创建一个ROS package之前,会遇到这几个概念:catkin、catkin workspace。通俗的来讲,catkin workspace是可以创建、安装、修改catkin package的文件夹,可以类比于我们的一个工程,一个工程里面可以包含很多个package,至于catkin是啥,目前我也没搞清楚,还需要进一步深入学习。在这里catkin package就是我们说的ROS package。

1.catkin package的组成

  • 每个package必须要有自己的文件夹
  • 必须要有catkin compliant,即一个 package.xml文件用来描述package信息
  • 必须要有使用catkin的CMakeList.txt文件

一个简单的package长这样,以下是一个名为my_package的ros package

my_package/
  CMakeLists.txt
  package.xml

2.创建一个catkin workspace
workspace可以类比于我们的一个工程,一个工程里面可以包含很多个package,每个package执行着各自的功能,他们一起合作就构成了机器人的软件功能。一个典型的workspace长这样

workspace_folder/        -- WORKSPACE
  src/                   -- SOURCE SPACE
    CMakeLists.txt       -- 'Toplevel' CMake file, provided by catkin
    package_1/
      CMakeLists.txt     -- CMakeLists.txt file for package_1
      package.xml        -- Package manifest for package_1
    ...
    package_n/
      CMakeLists.txt     -- CMakeLists.txt file for package_n
      package.xml        -- Package manifest for package_n

下面我们讲解如何创建一个workspace。新建一个包含有src文件夹的workspace文件夹:catkin_ws/src,然后去到catkin_ws目录下,执行一下编译指令catkin_make

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

这个过程只需要在你新建package时执行一次就可以了。它会帮你初始化好你的工作空间,创建一些必要的文件夹以及文件,此时你的src文件夹里面创建了一个CMakeList.txt文件

接着执行

source devel/setup.bash

使当前的工作空间能够被遍历(这句指令的作用我还没搞懂,大家可以参看原网页,官网tutorial原文:Sourcing any of these files will overlay this workspace on top of your environment. )

3.创建一个catkin package

3.1 定位到catkin workspace文件夹

cd ~/catkin_ws/src

3.2 用catkin_create_pkg创建一个参考std_msgs,roscpp以及rospy的名叫’beginner_tutorials’的package

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

至此,一个工作在catkin worksace的叫’beginner_tutorials’的package创建好了。

catkin_create_pkg 使用方法

# catkin_create_pkg  [depend1] [depend2] [depend3]

4.编译package和把workspace加入ros环境

4.1 编译package
新建了package之后需要重新编译一下

$ cd ~/catkin_ws
$ catkin_make

4.2 把workspace加入ros环境

$ . ~/catkin_ws/devel/setup.bash

5.Package依赖

5.1 一级依赖
刚刚使用catkin_create_pkg时我们给新建的package提供了一些依赖,我们可以通过下面这个命令查看某个包的一级依赖。

$ rospack depends1 beginner_tutorials

运行上述命令查看一级依赖,运行结果:

roscpp
rospy
std_msgs

这些依赖都被存储在package.xml里,也可运行以下指令查看xml里的内容。

$ roscd beginner_tutorials
$ cat package.xml

5.2 非直接依赖
一般来说依赖里面还会有其他依赖,比如说我们想查看rospy的依赖

$ rospack depends1 rospy

运行结果:

genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs

一个package会有一阶依赖以及非直接依赖,可以执行下面的语句查看所有的依赖

$ rospack depends beginner_tutorials

6.定制你的package

本节我们将会逐行地看catkin_create_pkg生成的文件,然后学习怎么定制自己的package文件
6.1 定制package.xml
生成的package.xml文件在包文件夹里面,我们去到beginner_tutorials文件夹下面,打开package.xml文件
6.1.1 description tags

<description>The beginner_tutorials packagedescription>

该标签描述了包的基本信息,可以任意修改

6.1.2 maintainer tags

<maintainer email="[email protected]">julismaintainer>

该标签描述了该包的维护人员的基本信息,包括了名字和邮件

6.1.3 license tags




<license>TODOlicense>

该标签描述了许可证类型,请根据自己的需要填入许可证类型

6.1.4 dependencies tags

<buildtool_depend>catkinbuildtool_depend>
<build_depend>roscppbuild_depend>
<build_depend>rospybuild_depend>
<build_depend>std_msgsbuild_depend>
<build_export_depend>roscppbuild_export_depend>
<build_export_depend>rospybuild_export_depend>
<build_export_depend>std_msgsbuild_export_depend>
<exec_depend>roscppexec_depend>
<exec_depend>rospyexec_depend>
<exec_depend>std_msgsexec_depend>

该标签描述了依赖项,我们希望这些依赖在编译阶段和运行阶段都其作用,于是分别在下都注明了依赖项。

你可能感兴趣的:(ROS,ros)