本文主要是介绍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创建一个软件包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!