ROS 2 Jazzy Jalisco 编译工具 colcon 总结和习题_ros2 jazzy 编译-zhangrelay

 

仅一个colcon就可以开设一门高校常规2学分的课程。

这份文件是colcon的官方文档,主要介绍了colcon的安装、配置、使用及其工作空间的管理等内容。以下是总结和详细学习大纲:

colcon官方文档总结与学习大纲

一、colcon简介与安装

  • 安装基础
    • colcon-core提供了命令行工具colcon及一些基本扩展。额外功能由独立包提供,如colcon-cmake支持CMake包。
    • 安装指令包括使用pip从PyPI安装标准版本,或从源码安装自定义分支。
  • 安装自定义分支
    • 从源码构建colcon时,生成的设置文件会自动包含argcomplete钩子。
    • 安装特定分支使用pip install -U git+https://github.com/colcon/colcon-core.git@branch_name

二、快速上手

  • 启动colcon
    • 通过source install/local_setup.bash(或其他shell的对应脚本)源入工作空间。
    • 详细映射信息可参考ament_tools、catkin_make_isolated和catkin_tools的迁移指南。

三、配置

  • 配置文件
    • defaults.yaml用于自定义CLI的默认行为,位置可通过COLCON_DEFAULTS_FILE环境变量修改。
    • 配置文件的第一层是字典,支持names(基于包名提供设置)和paths(基于路径提供设置)两个键。

四、工作空间

  • 工作空间概念
    • 工作空间包含所有要构建的软件源代码。Colcon会搜索工作空间的所有子目录以查找包,但通常约定将所有包放入名为src的目录中。
  • 构建与安装
    • 使用colcon build构建软件,会产生buildinstalllog目录。
    • log目录包含每次构建的日志,通过符号链接(如latest_build)指向最新的构建。

五、测试

  • 运行测试
    • colcon test运行测试,不构建任何包。
    • 使用colcon test-result查看测试结果的摘要。

六、日志文件

  • 日志输出
    • 安装colcon-common-extensions后,控制台输出较少,但日志被写入log目录。
    • --event-handlers参数可用于控制日志输出。

七、隔离与合并工作空间

  • 隔离工作空间
    • 默认情况下,colcon构建隔离工作空间。测试包时,只给予测试对声明的依赖项的安装工件访问权限。
    • 允许通过删除目录来移除单个包的安装工件。

八、覆盖包

  • 覆盖机制
    • 可以在一个工作空间中覆盖另一个工作空间中的包。例如,pong_ws可以覆盖ping_ws中的包,但ping_ws不能覆盖pong_ws中的包。
    • 仅需源入链中的最后一个工作空间。

九、扩展点

  • 扩展点机制
    • colcon易于通过单独包贡献扩展。
    • 为确保长期维护和可发现性,建议将代码托管在GitHub上的colcon组织单元下的存储库中。

十、发布与贡献

  • 发布流程
    • Python包通常发布到PyPI,遵循Python项目的打包说明。
    • 对于colcon包,建议使用publish-python,它不仅上传wheel到PyPI,还创建并上传Debian包。
  • 贡献指南
    • 包含许多在线可用的优秀贡献指南的摘要。
    • 鼓励在包含colcon扩展的包中使用keywords=colcon来声明,以提高可发现性。

以上是对colcon官方文档内容的总结和详细学习大纲,通过此大纲,学习者可以系统地掌握colcon的安装、配置、使用及其工作空间管理等方面的知识。


colcon官方文档总结与学习大纲(中文版)

一、colcon简介

colcon是一个命令行工具,旨在改进多个软件包的构建、测试和使用的工作流程。它自动化了这一过程,处理了顺序问题,并设置了使用环境这些软件包所需的环境。

二、文档目录(中文版)及详细说明
  1. 用户文档(User Documentation)
    • 第1章 安装(Chapter 1 Installation)
      • 介绍colcon的功能如何分布在多个Python包中。
      • 详细指导如何从PyPI安装colcon,以及如何从源代码安装自定义分支。
    • 第2章 快速入门(Chapter 2 Quick Start)
      • 提供colcon命令的高层次概述,包括如何构建、测试和安装软件包。
      • 介绍如何为ROS1和ROS2包以及Gazebo和Ignition包设置和使用colcon。
    • 第3章 配置(Chapter 3 Configuration)
      • 详细说明colcon的配置系统,包括如何创建和修改配置文件,以及如何使用环境变量来覆盖默认设置。
    • 第4章 构建与测试(Chapter 4 Building and Testing)
      • 介绍如何使用colcon构建和测试软件包,包括如何处理编译命令、运行特定测试以及生成测试报告。
    • 第5章 工作空间(Chapter 5 Workspace)
      • 解释colcon工作空间的概念,包括如何创建、构建和管理工作空间中的软件包。
  2. 迁移到其他构建工具(Migrate from Other Build Tools)
    • 提供从其他构建工具(如catkin_make、catkin_tools等)迁移到colcon的指南和注意事项。
  3. 开发者文档(Developer Documentation)
    • 贡献指南(Contribution Guidelines)
      • 列出为colcon项目做出贡献的指南和建议,包括如何提交问题报告、拉取请求以及参与社区讨论。
    • 扩展点(Extension Points)
      • 介绍colcon的扩展机制,允许开发者创建自定义的colcon扩展来添加新功能或修改现有行为。
    • 发布Python包(Publishing Python Packages)
      • 提供发布colcon相关Python包到PyPI和Debian仓库的指南和最佳实践。
  4. 附录(Appendix)
    • 常见问题解答(FAQ)
      • 列出在使用colcon时可能遇到的常见问题及其解决方案。
    • 术语表(Glossary)
      • 定义colcon文档中使用的关键术语和概念。
三、详细学习大纲
  1. 安装colcon
    • 学习如何从PyPI安装colcon。
    • 掌握如何从源代码安装自定义分支,以便尝试新的功能或修复。
  2. 快速入门
    • 了解colcon的基本命令和用法。
    • 学习如何为ROS1、ROS2以及Gazebo和Ignition包设置和使用colcon。
  3. 配置colcon
    • 深入理解colcon的配置系统。
    • 学习如何创建和修改配置文件,以满足特定的构建和测试需求。
  4. 构建与测试
    • 掌握如何使用colcon构建和测试软件包。
    • 学习如何处理编译命令、运行特定测试以及生成测试报告。
  5. 管理工作空间
    • 理解colcon工作空间的概念。
    • 学习如何创建、构建和管理工作空间中的软件包。
  6. 迁移到colcon
    • 如果你之前使用过其他构建工具(如catkin_make、catkin_tools等),学习如何迁移到colcon。
  7. 开发者文档
    • 如果你有兴趣为colcon项目做出贡献,学习贡献指南和扩展点。
    • 了解如何发布colcon相关的Python包。
  8. 附录
    • 查阅常见问题解答和术语表,以解决在使用colcon时可能遇到的问题。

中文总结

这是一个关于如何使用colcon创建和构建ROS 2工作空间的简短教程。它是一个实践教程,并非旨在替代核心文档。

背景

colcon是对ROS构建工具catkin_make、catkin_make_isolated、catkin_tools和ament_tools的迭代。有关colcon设计的更多信息,请参阅相关文档。

colcon的源代码可以在colcon GitHub组织中找到。

先决条件

  1. 安装colcon
    • Linux/macOS/Windows:使用sudo apt install python3-colcon-common-extensions(Linux示例)安装。
  2. 安装ROS 2
    • 要构建示例,需要安装ROS 2。遵循安装说明。
    • 注意:如果从deb包安装,本教程需要桌面安装。

基础知识

ROS工作空间是一个具有特定结构的目录。通常包含一个src子目录,源代码将位于该子目录中。通常,目录开始时是空的,除了src目录。

colcon执行源外构建。默认情况下,它将在src目录的同级目录中创建以下目录:

  • build目录:存储中间文件。每个包都会在其中创建一个子文件夹,例如在其中调用CMake。
  • install目录:每个包将被安装到此处。默认情况下,每个包将安装到单独的子目录中。
  • log目录:包含有关每次colcon调用的各种日志信息。

注意:与catkin不同,没有devel目录。

创建工作空间

  1. 创建一个目录(ros2_ws)来包含工作空间:
    • 创建~/ros2_ws/src目录并切换到~/ros2_ws
  2. 此时,工作空间包含一个空的src目录。

添加源代码

  • 将示例存储库克隆到工作空间的src目录中:
    • 使用git clone命令克隆https://github.com/ros2/examplessrc/examples,并指定jazzy分支。

引用底层环境

  • 必须引用现有ROS 2安装的环境,以为工作空间提供示例包的必要构建依赖项。这通过引用二进制安装或源安装(即另一个colcon工作空间)提供的setup脚本来实现。我们称此环境为底层。
  • ros2_ws将成为现有ROS 2安装上的覆盖层。一般建议,当计划对少量包进行迭代时,使用覆盖层,而不是将所有包放入同一工作空间。

构建工作空间

  • 在工作空间的根目录中运行colcon build --symlink-install。由于ament_cmake等构建类型不支持devel空间的概念并要求安装包,colcon支持--symlink-install选项。这允许通过更改源空间中的文件(例如Python文件或其他非编译资源)来更改已安装的文件,以加快迭代速度。

运行测试

  • 要运行刚构建的包的测试,运行colcon test

引用环境

  • colcon成功构建后,输出将位于install目录中。要使用任何已安装的可执行文件或库,需要将其添加到路径和库路径中。colcon将在install目录中生成bash/bat文件,以帮助设置环境。这些文件会将所有所需的元素添加到路径和库路径中,并提供包导出的任何bash或shell命令。
  • 使用source install/setup.bash引用环境。

尝试演示

  • 引用环境后,可以运行colcon构建的可执行文件。从示例中运行一个订阅者节点,并在另一个终端中运行一个发布者节点。应该能看到发布者和订阅者之间的消息和数字递增。

创建自己的包

  • colcon使用REP 149中定义的package.xml规范(也支持格式2)。
  • colcon支持多种构建类型。建议的构建类型是ament_cmake和ament_python。还支持纯cmake包。
  • 可以使用ros2 pkg create工具基于模板创建新包。

设置colcon_cd

  • colcon_cd命令允许快速将当前shell工作目录更改为包的目录。

设置colcon标签补全

  • colcon命令支持bash和bash类shell的命令补全。必须安装colcon-argcomplete包,并可能需要进行一些设置才能使其工作。

提示

  • 如果不想构建特定包,请在目录中放置一个名为COLCON_IGNORE的空文件,它将不会被索引。
  • 如果想在CMake包中避免配置和构建测试,可以传递--cmake-args -DBUILD_TESTING=0
  • 如果想运行包中的单个特定测试,可以使用colcon test --packages-select YOUR_PKG_NAME --ctest-args -R YOUR_TEST_IN_PKG

中文总结

本教程介绍了如何使用colcon创建和构建ROS 2工作空间,包括安装colcon和ROS 2、创建工作空间、添加源代码、引用底层环境、构建工作空间、运行测试、引用环境以及尝试演示。还介绍了如何创建自己的包、设置colcon_cd和colcon标签补全,以及一些有用的提示。

本文简要介绍了如何使用colcon命令来快速构建和测试ROS(Robot Operating System)包,包括ROS 1和ROS 2。colcon是一个用于构建和测试基于CMake和Python setuptools的ROS包的工具。以下是关键步骤的总结:

  1. 创建工作空间:首先,创建一个包含src子目录的工作空间目录。
  2. 填充src目录:将ROS包放入src目录中。
  3. 列出和可视化包:使用colcon list列出所有包,使用colcon graph以拓扑顺序列出包并可视化它们的依赖关系。
  4. 构建和测试包:使用colcon build构建所有包,使用colcon test测试所有包,并使用colcon test-result --all枚举所有测试结果。
  5. 设置环境:为了使用构建的包,需要运行install/local_setup.<ext>脚本来设置环境。

对于ROS 1和ROS 2,构建过程略有不同,但colcon都可以替代原有的构建工具(如ament_toolscatkin_make_isolated)。此外,colcon还支持构建Gazebo和Ignition包等复杂项目。

题目设计

单选题

  1. colcon主要用于构建哪种类型的项目?
    A. Web应用
    B. 机器人操作系统(ROS)包
    C. 移动应用
    D. 游戏

  2. 要列出工作空间中的所有包,应使用哪个colcon命令?
    A. colcon build
    B. colcon test
    C. colcon list
    D. colcon graph(注意:虽然graph也显示包,但它还显示依赖关系)

  3. 构建ROS包后,为了使用它们,需要运行哪个脚本?
    A. install/setup.bash
    B. install/local_setup.bash
    C. setup.bash
    D. local_setup.bash

  4. colcon不支持ROS 1中的哪个概念?
    A. devel space
    B. install space
    C. source space
    D. build space

  5. 在构建Gazebo时,需要哪个版本的catkin
    A. 任意版本
    B. 0.7.13或更高版本
    C. 1.0.0或更高版本
    D. 2.0.0或更高版本

多选题

  1. 使用colcon构建ROS包时,以下哪些步骤是常见的?
    A. 创建工作空间
    B. 填充src目录
    C. 运行colcon build
    D. 运行ament build(注意:这是ament_tools的命令,不是colcon的)

  2. 以下哪些是关于colcon构建Gazebo时的正确说法?
    A. 需要指定Gazebo和Ignition库的版本
    B. 可以使用.repos文件来指定仓库
    C. 不需要额外的元数据来构建Gazebo
    D. 构建后需要设置环境变量来运行Gazebo

判断题

  1. colcon可以自动检测src目录中的所有包并进行构建。
    • 正确
    • 错误
  2. 在ROS 1中,使用colcon构建包时,每个包都必须声明一个安装步骤。
    • 正确
    • 错误

答案

  • 单选题:1.B 2.C 3.B 4.A 5.B
  • 多选题:1.A, B, C 2.A, B, D
  • 判断题:1.正确 2.正确

练习题

为了设计相关的题目,我需要先假设一些colcon(一个常用于ROS 2(Robot Operating System 2)项目的构建和测试工具)的内容或功能。以下是基于一般colcon知识和功能的假设性题目:

单选题

  1. colcon主要用于哪个领域的项目构建和测试?
    A. 机器学习
    B. 机器人操作系统(ROS 2)
    C. Web开发
    D. 移动应用开发

  2. colcon中,哪个命令用于构建工作空间中的所有包?
    A. colcon build --all
    B. colcon compile
    C. colcon install
    D. colcon build

  3. 当你想要清理colcon工作空间中的所有构建输出时,应使用哪个命令?
    A. colcon clean
    B. colcon delete
    C. colcon reset
    D. colcon remove

  4. colcon工作空间中的src目录通常用于存放什么?
    A. 源代码
    B. 构建输出
    C. 日志文件
    D. 配置文件

  5. colcon中,哪个文件用于定义包的依赖关系和构建配置?
    A. CMakeLists.txt
    B. package.xml
    C. setup.py
    D. colcon.meta

多选题

  1. colcon支持哪些类型的构建系统?(选择所有适用的)
    A. CMake
    B. Bazel
    C. Python setuptools
    D. Makefile

  2. 在使用colcon进行ROS 2项目开发时,以下哪些步骤通常是必需的?(选择所有适用的)
    A. 初始化工作空间
    B. 安装ROS 2发行版
    C. 编写源代码
    D. 配置环境变量

判断题

  1. colcon可以自动检测工作空间中的所有包,并构建它们,而无需手动指定。
    • 正确
    • 错误
  2. colcon仅支持在Linux系统上运行,不支持Windows或macOS。
    • 正确
    • 错误

答案

  • 单选题:1.B 2.D 3.A 4.A 5.B
  • 多选题:1.A, C 2.A, B, C, D
  • 判断题:1.正确 2.错误(colcon支持多种操作系统,包括Windows和macOS,但可能需要一些额外的配置或依赖)

请注意,这些题目和答案都是基于colcon的一般功能和用途的假设,实际使用中可能会有所不同。




教程

COURSE