警告

您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.

使用 胶管 来构建软件包

目标 使用 胶管.

辅导水平: 初学者

时间 20 分钟

本教程简要介绍了如何创建和构建 ROS 2 工作区,并使用 胶管.这是一本实用教程,并不是用来取代核心文档的。

背景介绍

胶管 是对 ROS 构建工具的迭代 catkin_make, catkin_make_isolated, catkin_tools工具.有关 colcon 设计的更多信息,请参见 本文件.

源代码可在 colcon GitHub 组织.

先决条件

安装 colcon

苏都 适切 安装 python3-colcon-common-extensions

安装 ROS 2

要构建样本,您需要安装 ROS 2。

按照 安装说明.

请注意

如果从 Debian 软件包安装,本教程需要使用 桌面安装.

基础知识

ROS 工作区是一个具有特定结构的目录。通常有一个 来源 子目录。该子目录中包含 ROS 软件包的源代码。通常情况下,该目录开始时是空的。

colcon 会进行源代码编译。默认情况下,它将创建以下目录作为 来源 目录:

  • "(《世界人权宣言》) 构建 目录中存放中间文件。每个软件包都将创建一个子文件夹,例如 CMake 将在其中调用。

  • "(《世界人权宣言》) 安装 目录是每个软件包的安装目录。默认情况下,每个软件包都将安装到一个单独的子目录中。

  • "(《世界人权宣言》) 登录 目录中包含有关每次调用 colcon 的各种日志信息。

备注

与柔荑花序相比,没有 发展 目录。

创建工作区

首先,创建一个目录 (ros2_ws) 来包含我们的工作区:

mkdir -p ~/ros2_ws/src
CD ~/ros2_ws

此时,工作区只包含一个空目录 来源:

.└── 来源

1 目录、 0 文件

添加一些资料来源

让我们克隆 例子 库中的 来源 工作区的目录:

笨蛋 复制 https://github.com/ros2/examples src/examples -b 狐狸

现在,工作区中应该有 ROS 2 示例的源代码:

.└── 来源
    └── 例子
        ├── 贡献.md
        ├── 许可证
        ├── rclcpp
        ├── rclpy
        └── README.md

4 目录、 3 文件

寻找底层材料

重要的是,我们要为现有的 ROS 2 安装提供环境,以便为我们的工作区提供示例软件包所需的构建依赖项。这可以通过二进制安装或源安装(即另一个 colcon 工作区)提供的设置脚本来实现(参见 安装).我们称这种环境为 基座.

我们的工作空间 ros2_ws将是一个 覆盖物 在现有的 ROS 2 安装程序之上。一般来说,当你计划迭代少量软件包时,建议使用覆盖层,而不是将所有软件包放到同一个工作区。

建立工作区

请注意

要在 Windows 上构建软件包,您需要进入 Visual Studio 环境,请参阅 构建 ROS 2 代码 了解更多详情。

在工作区的根目录下,运行 胶管 构建.由于构建类型如 ament_cmake 不支持 发展 空间并要求安装软件包时,colcon 支持以下选项 --symlink-install.这样就可以通过更改 消息来源 空间(如 Python 文件或其他非编译资源),以加快迭代速度。

colcon build --symlink-install

构建完成后,我们应该能看到 构建, 安装登录 目录:

.├── 建设├── 安装 ├── log └── 来源

4 目录、 0 文件

运行测试

要运行我们刚刚构建的软件包的测试,请运行以下程序:

胶体磨试验

环境来源

当 colcon 成功完成构建后,输出将在 安装 目录中。在使用任何已安装的可执行文件或库之前,您需要将它们添加到您的路径和库路径中。 安装 目录来帮助设置环境。这些文件将在路径和库路径中添加所有必要元素,并提供软件包导出的任何 bash 或 shell 命令。

消息来源 install/setup.bash

试用演示

有了源环境,我们就可以运行由 colcon 构建的可执行文件。让我们运行示例中的一个用户节点:

玫瑰2 运行 examples_rclcpp_minimal_subscriber 订阅者成员功能

在另一个终端,让我们运行一个发布节点(别忘了源设置脚本):

玫瑰2 运行 examples_rclcpp_minimal_publisher 出版商成员功能

您应该会看到来自发布者和订阅者的信息,数字会递增。

创建自己的套餐

colcon 使用 package.xml 中定义的规范 REP 149 (格式 2 也支持)。

colcon 支持多种构建类型。推荐的构建类型有 ament_cmakeament_python.还支持纯 cmake 打包。

举例说明 ament_python 构建是 ament_index_python 软件包 其中 setup.py 是构建的主要入口。

一个软件包,如 演示节点 使用 ament_cmake 构建类型,并使用 CMake 作为构建工具。

为方便起见,您可以使用以下工具 玫瑰2 创建 来创建一个基于模板的新软件包。

备注

对于 柔荑花序 用户,这相当于 catkin_create_package.

设置 colcon_cd

命令 colcon_cd 可以快速将 shell 的当前工作目录更改为软件包的目录。例如 colcon_cd some_ros_package 很快就会进入目录 ~/ros2_ws/src/some_ros_package.

echo "source /usr/share/colcon_cd/function/colcon_cd.sh" >> ~/.bashrc
echo "export _colcon_cd_root=/opt/ros/foxy/" >> ~/.bashrc

取决于您安装的方式 colcon_cd 以及您的工作空间位置,上述说明可能会有所不同,请参阅 文件 了解更多详情。要在 Linux 和 macOS 中撤销此操作,请找到系统的 shell 启动脚本,并删除附加的源代码和导出命令。

设置 胶管 选项卡完成

命令 胶管 支持命令完成 为 bash 和类 bash shell 服务,如果 Colcon-argcomplete 软件包已安装。

echo "source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash" >> ~/.bashrc

取决于您安装的方式 胶管 以及您的工作空间位置,上述说明可能会有所不同,请参阅 文件 了解更多详情。要在 Linux 和 macOS 中撤销此操作,请找到系统的 shell 启动脚本并删除附加的源代码命令。

小贴士

  • 如果不想构建特定软件包,请将名为 COLCON_IGNORE 就不会被索引。

  • 如果你想避免在 CMake 包中配置和构建测试,你可以通过: --cmake-args -dbuild_testing=0.

  • 如果您想从软件包中运行单个特定测试:

    胶管 测试 --软件包--选择 YOUR_PKG_NAME --测试参数 -R 你的测试在_pkg 中