ROS学习(二)创建功能包

在上一讲中我们已经创建好工作空间catkin_ws,我们要在其src文件中创建功能包。

一、创建功能包

~$ cd ~/catkin_ws/src
$ catkin_create_pkg beginner_tutorials std_msgs roscpp rospy

catkin_create_pkg 是一条创建功能包的命令;
beginner_tutorials 是功能包的名字(可自定义);
std_msgs roscpp rospy 这是功能包的依赖。
在这里插入图片描述
在这里插入图片描述
可以看到现在这个功能包中有四部分(功能包可不止这四部分哦)。

include:此目录包含了需要的库的头文件;

src:储存程序源文件的地方;

package.xml:这是功能包清单;

CMakeLists.txt:这是CMake的生成文件。

二、编译功能包

$ cd〜/ catkin_ws
$ catkin_make
$ soure  devel / setup.bash

三、查看功能包的依赖

3.1一阶依赖

较早使用catkin_create_pkg时,提供了一些软件包依赖项。 现在可以使用rospack工具查看这些一阶依赖项

$ rospack depends1 beginner_tutorials 

在这里插入图片描述
如您所见,rospack列出了运行catkin_create_pkg时用作参数的依赖项。 程序包的这些依赖项存储在package.xml文件中:

$ roscd beginner_tutorials
$ cat package.xml

在这里插入图片描述

3.2间接依赖

在许多情况下,依赖项也将具有其自己的依赖项。例如,rospy具有其他依赖性。

$ rospack depends1 rospy

在这里插入图片描述
一个包可以有很多间接依赖。幸运的是,rospack可以递归确定所有嵌套的依赖项。

$ rospack depends beginner_tutorials 

在这里插入图片描述

四、定制功能包

自定义package.xml文件

4.1.1 描述标签


   5   <description> beginner_tutorials package</ description>

将描述更改为您喜欢的任何内容,但按照惯例,第一句话应简短,同时涵盖程序包的范围。

4.1.2 维护者标签

   7   <!-- One maintainer tag required, multiple allowed, one person per tag --> 
   8   <!-- Example:  -->
   9   <!-- <maintainer email="jane.doe@example.com">Jane Doe</maintainer> -->
  10   <maintainer email="user@todo.todo">user</maintainer>

这是package.xml的必需且重要的标记,因为它使其他人知道有关该软件包的联系人。至少需要一个维护者,但是如果您愿意,可以有很多。维护者的名称进入标签的主体,但还应填写一个电子邮件属性:

  7   <maintainer email="you@yourdomain.tld">Your Name</maintainer>

在这里插入图片描述

4.1.3 许可证标签

  12   <!-- One license tag required, multiple allowed, one license per tag -->
  13   <!-- Commonly used license strings: -->
  14   <!--   BSD, MIT, Boost Software License, GPLv2, GPLv3, LGPLv2.1, LGPLv3 -->
  15   <license>TODO</license>

4.1.4 依赖标签

下一组标记描述了程序包的依赖性。依赖分成build_depend,buildtool_depend,exec_depend,test_depend。因为我们通过std_msgs,roscpp和rospy作为功能包的依赖,其将是这样的:

  27   <!-- The *_depend tags are used to specify dependencies -->
  28   <!-- Dependencies can be catkin packages or system dependencies -->
  29   <!-- Examples: -->
  30   <!-- Use build_depend for packages you need at compile time: -->
  31   <!--   <build_depend>genmsg</build_depend> -->
  32   <!-- Use buildtool_depend for build tool packages: -->
  33   <!--   <buildtool_depend>catkin</buildtool_depend> -->
  34   <!-- Use exec_depend for packages you need at runtime: -->
  35   <!--   <exec_depend>python-yaml</exec_depend> -->
  36   <!-- Use test_depend for packages you need only for testing: -->
  37   <!--   <test_depend>gtest</test_depend> -->
  38   <buildtool_depend>catkin</buildtool_depend>
  39   <build_depend>roscpp</build_depend>
  40   <build_depend>rospy</build_depend>
  41   <build_depend>std_msgs</build_depend>

除了默认的buildtool_depend on catkin之外,我们列出的所有依赖项都被添加为build_depend。在这种情况下,我们希望所有指定的依赖项都在构建和运行时可用,所以我们将为它们每个添加一个exec_depend标签:

  12   <buildtool_depend>catkin</buildtool_depend>
  13 
  14   <build_depend>roscpp</build_depend>
  15   <build_depend>rospy</build_depend>
  16   <build_depend>std_msgs</build_depend>
  17 
  18   <exec_depend>roscpp</exec_depend>
  19   <exec_depend>rospy</exec_depend>
  20   <exec_depend>std_msgs</exec_depend>

4.1.5 最终的package.xml

如您所见,没有注释和未使用标签的最终package.xml更加简洁:

   1 <?xml version="1.0"?>
   2 <package format="2">
   3   <name>beginner_tutorials</name>
   4   <version>0.1.0</version>
   5   <description>The beginner_tutorials package</description>
   6 
   7   <maintainer email="you@yourdomain.tld">Your Name</maintainer>
   8   <license>BSD</license>
   9   <url type="website">http://wiki.ros.org/beginner_tutorials</url>
  10   <author email="you@yourdomain.tld">Jane Doe</author>
  11 
  12   <buildtool_depend>catkin</buildtool_depend>
  13 
  14   <build_depend>roscpp</build_depend>
  15   <build_depend>rospy</build_depend>
  16   <build_depend>std_msgs</build_depend>
  17 
  18   <exec_depend>roscpp</exec_depend>
  19   <exec_depend>rospy</exec_depend>
  20   <exec_depend>std_msgs</exec_depend>
  21 
  22 </package>
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值