Catalogue
学习创建一个ROS 2 Package
目标:使用CMake或Python创建一个新程序包,并运行其可执行文件
什么是ROS 2软件包
可以将包视为ROS 2代码的容器。如果您希望能够安装代码或与他人共享代码,则需要将其组织在一个软件包中。使用软件包,您可以发布ROS 2的工作,并允许其他人轻松构建和使用它。
Package 的构成
C++
package.xml
file containing meta information about the packageCMakeLists.txt
file that describes how to build the code within the package
Python
package.xml
file containing meta information about the packagesetup.py
containing instructions for how to install the packagesetup.cfg
is required when a package has executables, soros2 run
can find themyour_package_name
- a file used by ROS 2 tools to find your package
最简单的程序包可能具有如下所示的文件结构:
C++
1 | my_package/ |
Python
1 | my_package/ |
工作空间中的Package
一个工作空间可以包含所需数量的程序包,每个程序包都位于其自己的文件夹中。您还可以在一个工作空间(CMake,Python等)中拥有不同构建类型的软件包。您不能有嵌套的程序包。
最佳做法是src
在工作区中有一个文件夹,然后在其中创建包。这样可以使工作空间的顶层保持“干净”。
一个琐碎的工作区可能看起来像:
1 | workspace_folder/ |
开始
创建包
src
运行软件包创建命令之前,请确保您位于文件夹中。
1 | cd 工作空间路径/src |
在ROS 2中创建新程序包的命令语法为:
1 | ros2 pkg create --build-type ament_cmake <package_name> |
对于本教程,您将使用可选参数--node-name
,该参数在包中创建一个简单的Hello World类型的可执行文件。
在终端中输入以下命令:
1 | ros2 pkg create --build-type ament_cmake --node-name my_node my_package |
现在,在工作区的src
目录中将有一个名为的新文件夹my_package
。
运行命令后,您的终端将返回以下消息:
1 | going to create a new package |
编译(构建)包
现在,您可以构建软件包:
1 | colcon build |
若只构建某个Package,可以如下
1 | colcon build --packages-select my_package |
运行包里面的可执行文件(节点)
先运行以下命令来获取工作空间:
1 | . install/setup.bash |
要--node-name
在包创建期间运行使用参数创建的可执行文件,请输入以下命令:
1 | ros2 run my_package my_node |
它将向您的终端返回一条消息:
1 | hello world my_package package |