ROS2-6-创建Package

Catalogue
  1. 1. 学习创建一个ROS 2 Package
    1. 1.1. 什么是ROS 2软件包
    2. 1.2. Package 的构成
  2. 2. 工作空间中的Package
  3. 3. 开始
    1. 3.1. 创建包
    2. 3.2. 编译(构建)包
    3. 3.3. 运行包里面的可执行文件(节点)

学习创建一个ROS 2 Package

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

什么是ROS 2软件包

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

Package 的构成

C++

  • package.xml file containing meta information about the package
  • CMakeLists.txt file that describes how to build the code within the package

Python

  • package.xml file containing meta information about the package
  • setup.py containing instructions for how to install the package
  • setup.cfg is required when a package has executables, so ros2 run can find them
  • your_package_name - a file used by ROS 2 tools to find your package

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

C++

1
2
3
my_package/
CMakeLists.txt
package.xml

Python

1
2
3
4
my_package/
setup.py
package.xml
resource/my_package

工作空间中的Package

一个工作空间可以包含所需数量的程序包,每个程序包都位于其自己的文件夹中。您还可以在一个工作空间(CMake,Python等)中拥有不同构建类型的软件包。您不能有嵌套的程序包。

最佳做法是src在工作区中有一个文件夹,然后在其中创建包。这样可以使工作空间的顶层保持“干净”。

一个琐碎的工作区可能看起来像:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
workspace_folder/
src/
package_1/
CMakeLists.txt
package.xml

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

开始

创建包

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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
going to create a new package
package name: my_package
destination directory: 工作空间路径/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

编译(构建)包

现在,您可以构建软件包:

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
image-20200229021320444