描述:这篇文章介绍如何用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
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
•
• ...
•
•
•
•
• ...
•
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 描述标签
首先需要更新的是描述标签:
根据你的需要,改变这些描述信息,顺便提示一下,最好采用一句话描述这个功能包的用途信息;
5.1.2 维护者标签
接下来我们可以看到维护者标签:
这在package.xml文件里是一个非常重要的标签,它可以让其它人知道维护这个功能包的联系人信息。至少提供一个维护者信息,当然,如果需要,你可以添加任何一个维护者的信息。维护者的标签处于body的位置,属性里面的email信息也需要填写完整:
5.1.3 许可标签
接下来是许可标签,这个标签也是必要的:
可以选择一种license填写到里面。常用的license信息为BSD,MIT,Boost Software License,GPLv2,GPLv3,LGPLv2.1和LGPLv3等,针对这篇文章,我们使用BSD许可。
5.1.4 依赖功能包标签
接下一组标签是描述这个功能包的依赖关系的。这些依赖关系被 build_depend,buildtool_depend,run_depend,test_depend等分隔开,有关这些标签的更详细的描述可以查看catkin dependencies。因为我们设置了catkin_create_pkg命令的std_msg,roscpp,rospy参数,因此可以看到下面的依赖项:
在catkin功能包里,除了默认的buildtool_dependon,所有列出的依赖包被作为build_depend添加进来。我们希望在编译和运行时均指定相关的依赖包,因此我们为每一个依赖包添加一下run_depend标签:
5.1.5 最终的package.xml
去除注解及没有用到的标签,最终的package.xml文件如下所示,看起来更简洁,
6、设置生成的CMakeLists.txt文件
既然包含元信息的package.xml已经根据需要做了修改,你已经做好了练习的准备了吧。Catkin_create_pkg产生的文件CMakeLists.txt将在以后编译功能包时进行修正完善;
2015职称计算机考试书PowerPoint2007中 .. 定价:¥45 优惠价:¥42 更多书籍 | |
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 |