机器人操作系统ROS Indigo 入门学习(4)——创建一个ROS Package

 1.创建一个ROS Package

这个教程包括使用roscreate-pkg或者catkin去创建一个新的package,以及使用rospack去列出package的依赖。

 

2.catkin Package由什么组成

一个package被认为是catkin packageross必须满足这些要求:

a.必须包含一个catkin compliant(编译) package.xml文件(提供关于package信息);

b.必须包含一个使catkinCMakeLists.txt文件Catkin metapackages(package)必须有一个CMakeLists.txt样本文件;

c.在一个文件夹中不允许有超过两个的package(这就着意味着没有其他packages共享这个目录)。

 

这个简单的package可能像这个样子:

my_package/

  CMakeLists.txt

  package.xmlls

3.catkin工作空间中的Packages 

推荐使用catkin packages 的方式是使用catkin工作空间,但是你也可以单独使用catkin建立packages。一般的工作空间看起来像这样:

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

4、创建一个catkin package

这里将会用catkin_create_pkg脚本去创建一个新的catkin package

 

首先去到你之前创建的工作空间目录:

 

$ cd ~/catkin_ws/src

 

catkin_create_pkg 脚本创建一个做'beginner_tutorials'package,它依赖于std_msgsroscpp,和roscpy

命令:

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

 

现在创建了一个 beginner_tutorials文件夹,包含有package.xml , CMakeLists.txt文件,其中部分填写了由提供catkin_create_pkg的信息

 

catkin_create_pkg要求你提供一个package的名字和它所需要的依赖。

 

catkin_create_pkgcatkin/commands/catkin_create_pkg.中有对更加高级功能的描叙。

 

5.建立一个catkin工作空间并且启用setup 文件

现在需要在catkin工作空间编译package。

$ cd ~/catkin_ws

$ catkin_make

执行该命令后会在devel文件夹下生成一个和在/opt/ros/$ROSDISTRO_NAMEROS版本名这里是/opt/ros/indigo)下相似的结构。

为把工作空间添加到ROS环境变量你需要执行:

$ source ~/catkin_ws/devel/setup.bash

使setup文件生效

 ro

6.package 的依赖

6.1第一层依赖

catkin_create_pkg时,一些package提供了依赖。这些第一层依赖可以通过rospack工具重现。

 

$ rospack depends1 beginner_tutorials 

 

输出

std_msgs

rospy

roscpp

列出了运行catkin_create_pkg命令时的一些依赖,这些依赖储存在package.xml文件中

$ roscd beginner_tutorials

$ cat package.xml

输出

...

  catkin

  roscpp

  rospy

  std_msgs

...

 

6.2间接依赖

许多情况下,依赖也有它的依赖。

比如:

 

$ rospack depends1 rospy

 

输出

genpy

rosgraph

rosgraph_msgs

roslib

std_msgs

rospack可以显示所有递归的嵌套依赖

$ rospack depends beginner_tutorials

cpp_common

rostime

roscpp_traits

roscpp_serialization

genmsg

genpy

message_runtime

rosconsole

std_msgs

rosgraph_msgs

xmlrpcpp

roscpp

rosgraph

catkin

rospack

roslib

rospy

 

 

7.定制你的package

这部分将教你怎样定制自己的package

 

7.1定制package.xml

package.xml包含在package

7.1.1描叙标签

首先更新描叙标签

可以根据你的爱好改变description,但是最好短一些并且能够概括package

   7    

   8   

   9   

  10   user

 

7.1.2维护者标签

这个非常重要因为他可以让其他人知道和谁去交流这个package,这个维护者的名字会作为标签,邮箱也应该填写:

 7   Your Name

 

 

 

 

7.1.协议标签

  12   

  13   

  14   

  15   TODO

选择一个协议填写。

 

   8   BSD

 

通常用的一些协议是BSDMITBoost Software License, GPLv2, GPLv3, LGPLv2.1, and LGPLv3。可以在这里读到一些其他的开源协议。(http://opensource.org/licenses/alphabetical。这里作为新手教程,我选择BSD协议,因为ROS的其他核心部分已经遵从BSD协议了。

 

 

7.1.4依赖标签

一系列标签描叙依赖。这些依赖被分为build_dependbuildtool_dependrun_dependtest_depend。

 

  27   

  28   

  29   

  30   

  31   

  32   

  33   

  34   

  35   

  36   

  37   

  38   catkin

  39   roscpp

  40   rospy

  41   std_msgs

 

所有列出来的都是build_depend,除了之外,我们需要指定的所有依赖在buildrun time时都是可用的,我们需要增加run_depend标签在每个依赖后面

 

 12   catkin

  13 

  14   roscpp

  15   rospy

  16   std_msgs

  17 

  18   roscpp

  19   rospy

  20   std_msgs

 

 

7.1.5最终的package.xml

 

   1 

   2 

   3   beginner_tutorials

   4   0.1.0

   5   The beginner_tutorials package

   6 

   7   Your Name

   8   BSD

   9   http://wiki.ros.org/beginner_tutorials

  10   Jane Doe

  11 

  12   catkin

  13 

  14   roscpp

  15   rospy

  16   std_msgs

  17 

  18   roscpp

  19   rospy

  20   std_msgs

  21 

  22 

 

 

7.2定制CMakeLists.txt

含有信息的package.xml文件已经为你的package裁剪好了,接下来的教程将会讨论CMakeLists.txt文件。由catkin_create_pkg创建的CMakeLists.txt文件将会在下面的关于编译代码的教程中涉及.


 1.创建一个ROS Package

这个教程包括使用roscreate-pkg或者catkin去创建一个新的package,以及使用rospack去列出package的依赖。

 

2.catkin Package由什么组成

一个package被认为是catkin packageross必须满足这些要求:

a.必须包含一个catkin compliant(编译) package.xml文件(提供关于package信息);

b.必须包含一个使catkinCMakeLists.txt文件Catkin metapackages(package)必须有一个CMakeLists.txt样本文件;

c.在一个文件夹中不允许有超过两个的package(这就着意味着没有其他packages共享这个目录)。

 

这个简单的package可能像这个样子:

my_package/

  CMakeLists.txt

  package.xmlls

3.catkin工作空间中的Packages 

推荐使用catkin packages 的方式是使用catkin工作空间,但是你也可以单独使用catkin建立packages。一般的工作空间看起来像这样:

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

4、创建一个catkin package

这里将会用catkin_create_pkg脚本去创建一个新的catkin package

 

首先去到你之前创建的工作空间目录:

 

$ cd ~/catkin_ws/src

 

catkin_create_pkg 脚本创建一个做'beginner_tutorials'package,它依赖于std_msgsroscpp,和roscpy

命令:

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

 

现在创建了一个 beginner_tutorials文件夹,包含有package.xml , CMakeLists.txt文件,其中部分填写了由提供catkin_create_pkg的信息

 

catkin_create_pkg要求你提供一个package的名字和它所需要的依赖。

 

catkin_create_pkgcatkin/commands/catkin_create_pkg.中有对更加高级功能的描叙。

 

5.建立一个catkin工作空间并且启用setup 文件

现在需要在catkin工作空间编译package。

$ cd ~/catkin_ws

$ catkin_make

执行该命令后会在devel文件夹下生成一个和在/opt/ros/$ROSDISTRO_NAMEROS版本名这里是/opt/ros/indigo)下相似的结构。

为把工作空间添加到ROS环境变量你需要执行:

$ source ~/catkin_ws/devel/setup.bash

使setup文件生效

 ro

6.package 的依赖

6.1第一层依赖

catkin_create_pkg时,一些package提供了依赖。这些第一层依赖可以通过rospack工具重现。

 

$ rospack depends1 beginner_tutorials 

 

输出

std_msgs

rospy

roscpp

列出了运行catkin_create_pkg命令时的一些依赖,这些依赖储存在package.xml文件中

$ roscd beginner_tutorials

$ cat package.xml

输出

...

  catkin

  roscpp

  rospy

  std_msgs

...

 

6.2间接依赖

许多情况下,依赖也有它的依赖。

比如:

 

$ rospack depends1 rospy

 

输出

genpy

rosgraph

rosgraph_msgs

roslib

std_msgs

rospack可以显示所有递归的嵌套依赖

$ rospack depends beginner_tutorials

cpp_common

rostime

roscpp_traits

roscpp_serialization

genmsg

genpy

message_runtime

rosconsole

std_msgs

rosgraph_msgs

xmlrpcpp

roscpp

rosgraph

catkin

rospack

roslib

rospy

 

 

7.定制你的package

这部分将教你怎样定制自己的package

 

7.1定制package.xml

package.xml包含在package

7.1.1描叙标签

首先更新描叙标签

可以根据你的爱好改变description,但是最好短一些并且能够概括package

   7    

   8   

   9   

  10   user

 

7.1.2维护者标签

这个非常重要因为他可以让其他人知道和谁去交流这个package,这个维护者的名字会作为标签,邮箱也应该填写:

 7   Your Name

 

 

 

 

7.1.协议标签

  12   

  13   

  14   

  15   TODO

选择一个协议填写。

 

   8   BSD

 

通常用的一些协议是BSDMITBoost Software License, GPLv2, GPLv3, LGPLv2.1, and LGPLv3。可以在这里读到一些其他的开源协议。(http://opensource.org/licenses/alphabetical。这里作为新手教程,我选择BSD协议,因为ROS的其他核心部分已经遵从BSD协议了。

 

 

7.1.4依赖标签

一系列标签描叙依赖。这些依赖被分为build_dependbuildtool_dependrun_dependtest_depend。

 

  27   

  28   

  29   

  30   

  31   

  32   

  33   

  34   

  35   

  36   

  37   

  38   catkin

  39   roscpp

  40   rospy

  41   std_msgs

 

所有列出来的都是build_depend,除了之外,我们需要指定的所有依赖在buildrun time时都是可用的,我们需要增加run_depend标签在每个依赖后面

 

 12   catkin

  13 

  14   roscpp

  15   rospy

  16   std_msgs

  17 

  18   roscpp

  19   rospy

  20   std_msgs

 

 

7.1.5最终的package.xml

 

   1 

   2 

   3   beginner_tutorials

   4   0.1.0

   5   The beginner_tutorials package

   6 

   7   Your Name

   8   BSD

   9   http://wiki.ros.org/beginner_tutorials

  10   Jane Doe

  11 

  12   catkin

  13 

  14   roscpp

  15   rospy

  16   std_msgs

  17 

  18   roscpp

  19   rospy

  20   std_msgs

  21 

  22 

 

 

7.2定制CMakeLists.txt

含有信息的package.xml文件已经为你的package裁剪好了,接下来的教程将会讨论CMakeLists.txt文件。由catkin_create_pkg创建的CMakeLists.txt文件将会在下面的关于编译代码的教程中涉及.


你可能感兴趣的:(linux)