ROS创建一个软件包

2024-06-16 16:04
文章标签 创建 ros 软件包

本文主要是介绍ROS创建一个软件包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


首先, 配置您的 ROS 2 安装环境。

让我们使用您在 先前教程 中创建的工作空间 ros2_ws 来创建您的新软件包。

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

LinuxmacOSWindows

cd ~/ros2_ws/src

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

CMakePython

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

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

在终端中输入以下命令:

CMakePython

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

现在,您的工作空间的``src``目录中将有一个名为``my_package``的新文件夹。

运行该命令后,您的终端会返回以下消息:

CMakePython

going to create a new package
package name: my_package
destination directory: /home/user/ros2_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 构建软件包

将软件包放入工作区尤其有价值,因为您可以通过在工作区根目录下运行``colcon build``一次性构建多个软件包。否则,您将需要逐个构建每个软件包。

返回工作区的根目录:

LinuxmacOSWindows

cd ~/ros2_ws

现在你可以构建你的软件包:

LinuxmacOSWindows

colcon build

从上个教程中你记得你的``ros2_ws``里也有``ros_tutorials``软件包。你可能已经注意到运行``colcon build``时还会构建``turtlesim``软件包。当你的工作区只有几个软件包时这没问题,但当有很多软件包时,``colcon build``会花费很长时间。

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

colcon build --packages-select my_package

3 导入设置文件

要使用您的新软件包和可执行文件,请首先打开一个新终端并导入您的主要ROS 2安装。

然后,在``ros2_ws``目录内运行以下命令以导入您的工作空间:

LinuxmacOSWindows

source install/local_setup.bash

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

4 使用软件包

要运行您使用``--node-name``参数在创建软件包时创建的可执行文件,请输入以下命令:

ros2 run my_package my_node

将在终端返回一条消息:

CMakePython

hello world my_package package

5 检查软件包内容

在 ros2_ws/src/my_package 内,您将看到 ros2 pkg create 自动创建的文件和文件夹:

CMakePython

CMakeLists.txt  include  package.xml  src

my_node.cpp 位于 src 目录中。这是您以后将放置所有自定义 C++ 节点的位置。

6 自定义 package.xml

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

从“ros2_ws/src/my_package”目录下,使用您喜欢的文本编辑器打开“package.xml”文件:

CMakePython

<?xml version="1.0"?>
<?xml-modelhref="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="user@todo.todo">user</maintainer><license>TODO: License declaration</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>

如果“maintainer”行没有自动填充,请在该行上输入您的姓名和电子邮件。然后,编辑“description”行以对包进行概括:

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

然后,更新“license”行。您可以在此处阅读有关开源许可证的更多信息:<Licenses – Open Source Initiative>。由于此包仅用于练习,使用任何许可证都是安全的。我们将使用“Apache License 2.0”:

<license>Apache License 2.0</license>

编辑完成后别忘了保存。

在许可证标签下面,你会看到一些以``_depend``结尾的标签名。这是你的``package.xml``文件列出了它对其他软件包的依赖关系,供colcon进行搜索。``my_package``很简单,并不依赖其他软件包,但你将在接下来的教程中看到这个空间被利用起来。

这篇关于ROS创建一个软件包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1066899

相关文章

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

Spring 中使用反射创建 Bean 实例的几种方式

《Spring中使用反射创建Bean实例的几种方式》文章介绍了在Spring框架中如何使用反射来创建Bean实例,包括使用Class.newInstance()、Constructor.newI... 目录1. 使用 Class.newInstance() (仅限无参构造函数):2. 使用 Construc

C#原型模式之如何通过克隆对象来优化创建过程

《C#原型模式之如何通过克隆对象来优化创建过程》原型模式是一种创建型设计模式,通过克隆现有对象来创建新对象,避免重复的创建成本和复杂的初始化过程,它适用于对象创建过程复杂、需要大量相似对象或避免重复初... 目录什么是原型模式?原型模式的工作原理C#中如何实现原型模式?1. 定义原型接口2. 实现原型接口3

Python中conda虚拟环境创建及使用小结

《Python中conda虚拟环境创建及使用小结》本文主要介绍了Python中conda虚拟环境创建及使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录0.前言1.Miniconda安装2.conda本地基本操作3.创建conda虚拟环境4.激活c

使用Python创建一个能够筛选文件的PDF合并工具

《使用Python创建一个能够筛选文件的PDF合并工具》这篇文章主要为大家详细介绍了如何使用Python创建一个能够筛选文件的PDF合并工具,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录背景主要功能全部代码代码解析1. 初始化 wx.Frame 窗口2. 创建工具栏3. 创建布局和界面控件4

Java中对象的创建和销毁过程详析

《Java中对象的创建和销毁过程详析》:本文主要介绍Java中对象的创建和销毁过程,对象的创建过程包括类加载检查、内存分配、初始化零值内存、设置对象头和执行init方法,对象的销毁过程由垃圾回收机... 目录前言对象的创建过程1. 类加载检查2China编程. 分配内存3. 初始化零值4. 设置对象头5. 执行

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Python创建Excel的4种方式小结

《Python创建Excel的4种方式小结》这篇文章主要为大家详细介绍了Python中创建Excel的4种常见方式,文中的示例代码简洁易懂,具有一定的参考价值,感兴趣的小伙伴可以学习一下... 目录库的安装代码1——pandas代码2——openpyxl代码3——xlsxwriterwww.cppcns.c

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt

解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题

《解决IDEA使用springBoot创建项目,lombok标注实体类后编译无报错,但是运行时报错问题》文章详细描述了在使用lombok的@Data注解标注实体类时遇到编译无误但运行时报错的问题,分析... 目录问题分析问题解决方案步骤一步骤二步骤三总结问题使用lombok注解@Data标注实体类,编译时