ROS学习-创建一个Package包

Package由什么组成?

每一个Package中都必须包括以下两个文件:

  • package.xml
    能够提供当前Package包的描述(元)信息

  • CMakeLists.txt
    如果它是一个catkin元包,它必须具有相关的样板文件CMakeLists.txt文件。

此外,每个Package包必须有其自己的文件夹,这就意味着没有嵌套的包,也不存在多个package包共享同一个文件夹。
最简单的package包可能结构如下所示:

my_package/
  CMakeLists.txt
  package.xml

工作空间的组成

(工作空间创建方法参考:ROS学习-创建一个工作空间

同时,假如在工作空间 Workspace下创建n个包package1、package2 … packagen,则整体文件结构如下所示:

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

创建一个package包

首先,使用cd切换到工作空间的src文件夹下。

cd ~/catkin_ws/src

使用catkin_create_pkg命令,创建一个package包,同时这个包依赖于std_msgs rospy roscpp等ros包。

catkin_create_pkg beginner_tutorials std_msgs rospy roscpp

即其用法为:

catkin_create_pkg <package_name> [depend1] [depend2] [depend3]

接着,我们回到src文件夹的上一级目录,即工作空间catkin_ws中,使用catkin_make对工作空间中的package包进行编译

catkin_make

查看package包的依赖

我们在上述创建beginner_tutorials包时依赖了std_msgs rospy roscpp等常用的ros包,可以通过rospack命令进行查看。

rospack depends1 beginner_tutorials 

注意这个depends1是指的是beginner_tutorials所直接依赖的包,即我们在catkin_create_pkg命令创建时所指定的包,返回结果应该如下所示:

roscpp
rospy
std_msgs

同时上述的roscpp、rospy、std_msgs等包也都依赖于其他包,比如我们使用:

rospack depends1 rospy

可以查看得到rospy所依赖的包包括:

genpy
roscpp
rosgraph
rosgraph_msgs
roslib
std_msgs

上述这些rospy所依赖的包都是beginner_tutorials的间接依赖包,那我们怎么知道beginner_tutorials所有的间接依赖包呢?
可以通过rospack depends(depends1变为depends)来进行查看:
输入命令:

rospack depends beginner_tutorials

返回结果:

cpp_common
rostime
roscpp_traits
roscpp_serialization
catkin
genmsg
genpy
message_runtime
gencpp
geneus
gennodejs
genlisp
message_generation
rosbuild
rosconsole
std_msgs
rosgraph_msgs
xmlrpcpp
roscpp
rosgraph
ros_environment
rospack
roslib
rospy

package.xml文件的描述

description tag(这是一个描述性的tag)

<description>The beginner_tutorials package</description>

这一部分的内容可以由我们自主设定,通过一句简单的描述来说明包的内容和功能就行了。

maintainer tag(说明这个包的维护者,或者说作者,让使用者可以联系到你)

   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>

把email和名字替换成我们自己的就可以。

license tag(包的许可满足什么开源政策)

  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>

因为我们依赖的包是BSD,所以这里我们也是相同的。

 <license>BSD</license>

dependencies.tag(对自定义包所依赖包的描述)

  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>

最终一个通用的package.xml文件形式如下:

<?xml version="1.0"?>
<package format="2">
  <name>beginner_tutorials</name>
  <version>0.1.0</version>
  <description>The beginner_tutorials package</description>

  <maintainer email="you@yourdomain.tld">Your Name</maintainer>
  <license>BSD</license>
  <url type="website">http://wiki.ros.org/beginner_tutorials</url>
  <author email="you@yourdomain.tld">Jane Doe</author>

  <buildtool_depend>catkin</buildtool_depend>

  <build_depend>roscpp</build_depend>
  <build_depend>rospy</build_depend>
  <build_depend>std_msgs</build_depend>

  <exec_depend>roscpp</exec_depend>
  <exec_depend>rospy</exec_depend>
  <exec_depend>std_msgs</exec_depend>

</package>
  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
创建一个ROS的launch文件,你可以按照以下步骤进行操作: 1. 首先,在你的ROS工作空间中找到你想要创建launch文件的功能。可以使用命令`cd <workspace>/src/<package_name>`进入该功能的目录。 2. 在功能的目录下创建一个名为`launch`的文件夹。你可以使用命令`mkdir launch`来创建。 3. 进入`launch`文件夹,使用文本编辑器创建一个新的launch文件。你可以使用命令`touch <launch_file_name>.launch`来创建一个空的launch文件。 4. 打开这个新创建的launch文件,并按照你的需求编写launch文件的内容。你可以参考ROS的launch文件语法和示例来编写你的launch文件。在launch文件中,你可以指定要启动的节点、节点的参数配置以及节点之间的关系等。 5. 保存并关闭launch文件。 6. 现在,你可以使用`ros2 launch`命令来启动你的launch文件。使用命令`ros2 launch <package_name> <launch_file_name>`,将会启动整个系统,括所有在launch文件中指定的节点和它们的配置。 总结起来,要创建一个ROS的launch文件,你需要在功能创建一个名为`launch`的文件夹,并在其中创建一个launch文件。然后,按照你的需求编写launch文件的内容,并使用`ros2 launch`命令来启动该launch文件。 #### 引用[.reference_title] - *1* *3* [ROS2入门教程—创建一个launch文件](https://blog.csdn.net/qq_29923461/article/details/120404577)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ROS学习(4)——launch文件的编写](https://blog.csdn.net/bulletstart/article/details/130794565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓晨的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值