考试首页 | 考试用书 | 培训课程 | 模拟考场 | 考试论坛  
  当前位置:Linux认证 > 综合辅导 > 文章内容
  

Linux教程:机器人操作系统ROS学习教程

来源:robotos.net [ 2016年2月14日 ] 【

描述:这篇文章介绍如何用roscreate-pkg或catkin创建一个新的功能包,并用rospack列出功能包的依赖关系。

1、catkin功能包的组成

要组成一个catkin功能包,必须满足如下相关条件:
•      功能包必须包含一个catkin兼容的注释文件package.xml。
o      package.xml文件提供有关功能包的元信息;
•      功能包必须包含采用catkin的CmakeLists.txt文件
o      例外情况是metapackages不必包含CmakeLists.txt
•      在一个文件夹中不允许出现多个功能包
o      这意味着多个功能包不能共享一个路径,也不允许功能包之间相互嵌套包;

最简单的功能包组成如下所示:
•      my_package/
•        CMakeLists.txt
•        package.xml

2、catkin Workspace里的功能包
推荐在catkin workspace下生成并编译catkin 功能包,当然,catkin功能包也可单独编译。catkin  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

在创建catkin功能包之前,我们先创建一个空的catkin workspace,命名为catkin_ws,接下来的练习都在这个catkin_ws下进行;

3、创建catkin功能包

接下来将会阐述如何利用catkin_create_pkg命令工具生成一个新的catkin功能包,并介绍catkin功能包的用途;

首先,改变路径到catkin workspace的src目录内;

# You should have created this in the Creating a Workspace Tutorial
$cd~/catkin_ws/src


现在使用catkin_create_pkg命令创建名字为beginner_tutorials的功能包,并设置这个新功能包依赖于std_msg,roscpp和rospy;

?1 $ catkin_create_pkg beginner_tutorials std_msgs rospy roscpp


这将会创建一个beginner_tutorials的文件夹,这个文件夹内会自动生成package.xml文件和CmakeLists.txt文件,这个两个文件会依据你对catin_create_pkg命令的设置参数填写一些信息;
Catkin_create_pkg后面的参数需包含功能包的名字及所创建功能包的一些依赖选项:

# This is an example, do not try to run this
# catkin_create_pkg [depend1] [depend2] [depend3]


4、功能包依赖关系

4.1 直接(一级)依赖关系

在使用catkin_create_pkg时,一些依赖的功能包需要提供出来,这些直接(一级)依赖关系可以通过命令工具rospack查看;

?1 $ rospack depends1 beginner_tutorials


•      std_msgs
•      rospy
•      roscpp

就像看到的一样,rospack列出了用catkin_create_pkg创建时设置的依赖功能包。这些依赖功能包信息被保存在package.xml文件内;

$ roscd beginner_tutorials
$catpackage.xml


•     
•      ...
•        catkin
•        roscpp
•        rospy
•        std_msgs
•      ...
•     

4.2 间接依赖关系

在很多情况下,依赖功能包本身也需要自己的依赖功能包,例如,rospy就会需要一些依赖功能包;

$ 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

5、 设置生成的功能包

这一部分将会逐行查看catkin_create_pkg自动生成的各个文件,并根据需要修正它们;

5.1 设置文件package.xml

在你新创建的功能包内会产生一个package.xml文件,现在我们查看一下文件package.xml,看哪些元素是我们尤其要关注的;

5.1.1 描述标签

首先需要更新的是描述标签:

    The beginner_tutorials package

根据你的需要,改变这些描述信息,顺便提示一下,最好采用一句话描述这个功能包的用途信息;

5.1.2 维护者标签

接下来我们可以看到维护者标签:

   
   
   
    user

这在package.xml文件里是一个非常重要的标签,它可以让其它人知道维护这个功能包的联系人信息。至少提供一个维护者信息,当然,如果需要,你可以添加任何一个维护者的信息。维护者的标签处于body的位置,属性里面的email信息也需要填写完整:

    Your Name

5.1.3 许可标签

接下来是许可标签,这个标签也是必要的:

   
   
   
    TODO

可以选择一种license填写到里面。常用的license信息为BSD,MIT,Boost Software License,GPLv2,GPLv3,LGPLv2.1和LGPLv3等,针对这篇文章,我们使用BSD许可。

    BSD

5.1.4 依赖功能包标签

接下一组标签是描述这个功能包的依赖关系的。这些依赖关系被 build_depend,buildtool_depend,run_depend,test_depend等分隔开,有关这些标签的更详细的描述可以查看catkin dependencies。因为我们设置了catkin_create_pkg命令的std_msg,roscpp,rospy参数,因此可以看到下面的依赖项:

   
   
   
   
   
   
   
   
   
   
   
    catkin
    roscpp
    rospy
    std_msgs

在catkin功能包里,除了默认的buildtool_dependon,所有列出的依赖包被作为build_depend添加进来。我们希望在编译和运行时均指定相关的依赖包,因此我们为每一个依赖包添加一下run_depend标签:

    catkin

    roscpp
    rospy
    std_msgs

    roscpp
    rospy
    std_msgs

5.1.5 最终的package.xml

去除注解及没有用到的标签,最终的package.xml文件如下所示,看起来更简洁,

   
   
    beginner_tutorials
    0.1.0
    The beginner_tutorials package

    Your Name
    BSD
    //wiki.ros.org/beginner_tutorials
    Jane Doe

    catkin

    roscpp
    rospy
    std_msgs

    roscpp
    rospy
    std_msgs

 

6、设置生成的CMakeLists.txt文件

既然包含元信息的package.xml已经根据需要做了修改,你已经做好了练习的准备了吧。Catkin_create_pkg产生的文件CMakeLists.txt将在以后编译功能包时进行修正完善;

本文纠错】【告诉好友】【打印此文】【返回顶部
将考试网添加到收藏夹 | 每次上网自动访问考试网 | 复制本页地址,传给QQ/MSN上的好友 | 申请链接 | 意见留言 TOP
关于本站  网站声明  广告服务  联系方式  站内导航  考试论坛
Copyright © 2007-2013 中华考试网(Examw.com) All Rights Reserved