Windows ROS2使用教程03-首个功能包的创建
上一篇在win11下验证了ROS2开发环境(编译),其中使用了官方提供的demo程序,而非自行创建的功能包;本章将自行创建功能包熟悉ROS2开发流程.
背景
1 什么是 ROS 2 包?
包是 ROS 2 代码的组织单位。如果您希望能够安装代码或与其他人共享代码,那么您需要将其组织在包中。通过包,您可以发布您的 ROS 2 作品并允许其他人轻松构建和使用它。
ROS 2 中的包创建使用 ament 作为其构建系统,并使用 colcon 作为其构建工具。您可以使用官方支持的 CMake 或 Python 创建包,但也存在其他构建类型。
2 ROS 2 包由哪些部分组成?
ROS 2 Python 和 CMake 包各自有自己的最低要求内容:
-
CMakeLists.txt描述如何在包中构建代码的文件
-
include/<package_name>包含包的公共标头的目录
-
package.xml包含有关包的元信息的文件
-
src包含包的源代码的目录
最简单的包可能具有如下所示的文件结构:
my_package/ CMakeLists.txt include/my_package/ package.xml src/
先决条件
按照上一教程中的说明进行操作后,您应该拥有一个 ROS 2 工作区。您将在此工作区中创建包。Win11下其实就是创建好指定文件夹。
操作步骤
1 创建包
首先,获取 ROS 2 安装的源码。
让我们将您在上一教程ros2_ws中创建的工作区用于您的新包。
src在运行包创建命令之前,请确保您位于该文件夹中。
cd os2_wssrc
在本教程中,您将使用可选参数–node-name在包中创建一个简单的 Hello World 类型可执行文件。
在终端中输入以下命令:
ros2 pkg create --build-type ament_cmake --node-name my_node my_package
运行命令后,您的终端将返回消息:
2 构建
略,参考上一篇开发环境验证
3 应用环境变量
install/local_setup.bat
4 使用包
要运行您–node-name在包创建期间使用参数创建的可执行文件,请输入以下命令:
ros2 run my_package my_node
这将向您的终端返回一条消息:
hello world my_package package
5 自定义package.xml
您可能已经注意到,在创建包后的返回消息中,字段description和license包含TODO注释。这是因为包描述和许可证声明不会自动设置,但如果您想要发布包,则需要它们。该maintainer字段可能还需要填写。
从,使用您喜欢的文本编辑器ros2_ws/src/my_package打开:package.xml
CMake
<?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="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行。您可以在此处阅读有关开源许可证的更多信息。由于该软件包仅用于练习,因此使用任何许可证都是安全的。我们将使用:Apache License 2.0
<license>Apache License 2.0</license>
完成编辑后不要忘记保存。
在许可证标签下方,您将看到一些以_depend.您可以在此处package.xml列出其对其他包的依赖关系,以供 colcon 搜索。 my_package很简单并且没有任何依赖项,但是您将在接下来的教程中看到这个空间的使用。
概括
您已经创建了一个包来组织您的代码并使其易于其他人使用。
您的包会自动填充必要的文件,然后您使用 colcon 来构建它,以便您可以在本地环境中使用它的可执行文件。千里之行始于足下,基础环境已参考官方链接验证完成,后面才是真正的开始,加油,继续我的Windows踩坑之路。
参考连接
https://docs.ros.org/en/foxy/Tutorials/Beginner-Client-Libraries/Colcon-Tutorial.html
https://docs.ros.org/en/foxy/Tutorials/Beginner-CLI-Tools/Configuring-ROS2-Environment.html