【ROS2指南-11】创建ROS2功能包

这篇具有很好参考价值的文章主要介绍了【ROS2指南-11】创建ROS2功能包。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目标:使用 CMake 或 Python 创建一个新包,并运行其可执行文件。

教程级别:初学者

时间: 15分钟

内容

  • 背景

    • 1 什么是 ROS 2 包?

    • 2 什么构成了 ROS 2 包?

    • 3 工作区中的包

  • 先决条件

  • 任务

    • 1 创建一个包

    • 2 构建一个包

    • 3 获取安装文件

    • 4 使用包

    • 5 检查包装内容

    • 6 自定义 package.xml

  • 概括

  • 下一步

背景

1 什么是 ROS 2 包?

一个包可以被认为是你的 ROS 2 代码的容器。如果您希望能够安装您的代码或与他人共享,那么您需要将其组织在一个包中。借助软件包,您可以发布您的 ROS 2 作品并允许其他人轻松构建和使用它。

ROS 2 中使用 ament 作为包编译构建系统,并使用 colcon 作为其构建工具。您可以使用官方支持的 CMake 或 Python 创建包,也有其他创建方式。

2 什么构成了 ROS 2 包?

ROS 2 Python 和 CMake 包都有自己的最低要求内容:

  • package.xml 包含有关包的元信息的文件

  • CMakeLists.txt 描述如何在包中构建代码的文件

最简单的包可能具有如下所示的文件结构:

my_package/
     CMakeLists.txt
     package.xml

3 工作区中的包

一个工作区可以包含任意数量的包,每个包都在自己的文件夹中。您还可以在一个工作区(CMake、Python 等)中包含不同构建类型的包。但不能有嵌套的包!

最佳做法是在您的工作区中有一个src文件夹,并在其中创建您的包。这会使工作区的顶层保持“干净”。

一个普通的工作区可能看起来像:

workspace_folder/
    src/
      package_1/
          CMakeLists.txt
          package.xml

      package_2/
          setup.py
          package.xml
          resource/package_2
      ...
      package_n/
          CMakeLists.txt
          package.xml

先决条件

按照上一教程中的说明进行操作后,您应该拥有一个 ROS 2 工作区。您将在此工作区中创建包。

任务

1 创建一个包

首先,记得先 source 你的ros2环境变量。

这里使用上一章节创建的 dev_ws 工作空间。

在运行包创建命令之前,请确保您位于该文件夹中。

cd ~/dev_ws/src

在 ROS 2 中创建新包的命令语法是:

ros2 pkg create --build-type ament_cmake <package_name>

对于本教程,您将使用可选参数 --node-name 在包中创建一个简单的 Hello World 类型可执行文件。

在您的终端中输入以下命令:

ros2 pkg create --build-type ament_cmake --node-name my_node my_package

现在,您的工作区目录中将有一个名为 my_package 的文件夹.

运行命令后,终端将返回信息:

going to create a new package
package name: my_package
destination directory: /home/user/dev_ws/src
package format: 3
version: 0.0.0
description: TODO: Package description
maintainer: ['<name> <email>']
licenses: ['TODO: License declaration']
build type: ament_cmake
dependencies: []
node_name: my_node
creating folder ./my_package
creating ./my_package/package.xml
creating source and include folder
creating folder ./my_package/src
creating folder ./my_package/include/my_package
creating ./my_package/CMakeLists.txt
creating ./my_package/src/my_node.cpp

您可以看到为新包自动生成的文件。

2 构建一个包

将包放在工作区中特别有价值,因为您可以通过在工作区根目录中运行来一次构建许多包。否则,您将不得不单独构建每个包。

返回到工作区的根目录:

cd ~/dev_ws

现在你可以构建你的包了:

colcon build

回想一下上一教程,ros_tutorials 也在 dev_ws 中。您可能已经注意到也运行构建了这个包。当您的工作区中只有几个包时,这很好,但是当有很多包时,可能会花费很长时间。

下次只构建包 my_package ,你可以运行:

colcon build --packages-select my_package

3 获取安装文件

要使用您的新包和可执行文件,首先打开一个新终端并source 你的 ros2 源。

然后,从 dev_ws 目录内部运行以下命令来获取您的工作区:

. install/setup.bash

现在您的工作区已添加到您的路径中,您将能够使用新包的可执行文件。

4 使用包

要运行您在包创建期间使用参数创建的可执行文件--node-name,请输入命令:

ros2 run my_package my_node

这将向您的终端返回一条消息:

hello world my_package package

5 检查包装内容

dev_ws/src/my_package 里面,你会看到自动生成的文件和文件夹:

CMakeLists.txt  include  package.xml  src

my_node.cppsrc目录内。这是您所有自定义 C++ 节点将来的位置。

6 自定义 package.xml

您可能已经在创建包后的返回消息中注意到字段descriptionlicense包含TODO注释。这是因为包描述和许可证声明不会自动设置,但如果您想要发布包,则它们是必需的。maintainer字段可能也需要填写。

使用您喜欢的文本编辑器打开 dev_ws/src/my_package/package.xml

<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
  <name>my_package</name>
  <version>0.0.0</version>
  <description>TODO: Package description</description>
  <maintainer email="cas5144@163.com">rust</maintainer>
  <license>Apache License 2.0</license>

  <buildtool_depend>ament_cmake</buildtool_depend>

  <test_depend>ament_lint_auto</test_depend>
  <test_depend>ament_lint_common</test_depend>

  <export>
    <build_type>ament_cmake</build_type>
  </export>
</package>

如果尚未自动为您填充,请在第 7 行输入您的姓名和电子邮件。然后,编辑第 6 行的描述以总结包:

<description>Beginner client libraries tutorials practice package</description>

然后,在第 8 行更新许可证。您可以在此处阅读有关开源许可证的更多信息。

由于此包仅用于练习,因此使用任何许可证都是安全的。我们使用:Apache License 2.0

<license>Apache License 2.0</license>

完成编辑后不要忘记保存。

在许可证标签下方,您会看到一些以 . 结尾的标签名称_depend。这是您package.xml将列出它对其他包的依赖项的地方,供 colcon 搜索。my_package很简单,没有任何依赖关系,但您会在接下来的教程中看到这个标签的使用。

你现在已经完成了!

概括

您已经创建了一个包来组织您的代码并使其易于为他人使用。

您的包会自动填充必要的文件,然后您使用 colcon 构建它,以便您可以在本地环境中使用它的可执行文件。

下一步

接下来,让我们向包中添加一些有意义的东西。您将从一个简单的发布者/订阅者系统开始,您可以选择用C++或Python编写它。文章来源地址https://www.toymoban.com/news/detail-758690.html

到了这里,关于【ROS2指南-11】创建ROS2功能包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【ROS2机器人入门到实战】ROS2节点介绍

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn ROS2中每一个节点也是只负责一个单独的模块化的功能(比如一个

    2024年02月06日
    浏览(57)
  • 【ROS2机器人入门到实战】ROS2服务入门

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 大家好,帅鱼又蹬蹬蹬的游回来了。本节小鱼将要带大家一起了解

    2024年02月07日
    浏览(61)
  • 【ROS2机器人入门到实战】ROS2接口介绍

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 本节小鱼将会带你学习认识一个新的概念,叫做interface,即接口。

    2024年02月05日
    浏览(52)
  • 【ROS2机器人入门到实战】4.ROS2初体验

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 通过几个简单的小例子来体验ROS2软件库和工具集。 游戏内容:很

    2024年02月04日
    浏览(73)
  • 【ROS2机器人入门到实战】3.动手安装ROS2

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 到了这一节,终于可以开始安装ROS2了。安装ROS2本来是一件比较麻

    2024年02月13日
    浏览(59)
  • 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令

    目录 【手把手做ROS2机器人系统开发二】熟悉ROS2基本命令 一、上讲回顾 二、ROS2核心命令讲解 1、daemon-各种守护进程相关的子命令 2、node-各种节点进程相关的子命令  3、pkg-各种包进程相关的子命令  4、run运行特定软件包的可行性文件 5、topic各种话题进程相关的子命令 6、

    2024年02月14日
    浏览(45)
  • 木叶飞舞之【机器人ROS2】篇章_第一节、ROS2 humble及cartorgrapher安装

    假如长期使用ros2,建议是ubuntu系统或者双系统下安装操作,不要在虚拟机中进行。 ubuntu系统能用最新的大系统就用最新的,比如22.04。等明年24.04出来可以用24.04 ros版本选择humble版本,比较稳定,各公司用的多一点。 2.1、一键安装 利用鱼香ROS的安装指令一键安装即可 (1)

    2024年02月10日
    浏览(47)
  • 【ROS2机器人入门到实战】

    当前平台文章汇总地址:ROS2机器人从入门到实战 获取完整教程及配套资料代码,请关注公众号鱼香ROS获取 教程配套机器人开发平台:两驱版| 四驱版 为方便交流,搭建了机器人技术问答社区:地址 fishros.org.cn 第 1 章 ROS2介绍与安装 基础篇-Linux基础 1.Linux与Ubuntu系统介绍 2.在

    2024年02月16日
    浏览(56)
  • 机器人项目:从 ROS2 切换到 ROS1 的原因

             机器人操作系统ROS是使用最广泛的机器人中间件平台。它在机器人社区中使用了10多年,无论是在业余爱好者领域还是在工业领域。ROS可用于各种微控制器和计算机,从Arduino到Raspberry Pi再到Linux工作站,它为电机控制器,视觉传感器,深度摄像头和激光扫描仪提供

    2024年02月12日
    浏览(40)
  • ros2机器人在gazebo中移动方案

    很重要的地方:使用虚拟机运行Ubuntu的时候,需要关闭”加速3D图形“的那个选项,否则gazebo无法正常显示。 In this tutorial we will learn how to move our robot. We will use the robot we built in the Build your own robot tutorial. You can download the robot from here. You can also find the finished world of this tutoria

    2024年01月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包