仅一个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会搜索工作空间的所有子目录以查找包,但通常约定将所有包放入名为
- 构建与安装:
- 使用
colcon build
构建软件,会产生build
、install
和log
目录。 log
目录包含每次构建的日志,通过符号链接(如latest_build
)指向最新的构建。
- 使用
五、测试
- 运行测试:
colcon test
运行测试,不构建任何包。- 使用
colcon test-result
查看测试结果的摘要。
六、日志文件
- 日志输出:
- 安装colcon-common-extensions后,控制台输出较少,但日志被写入
log
目录。 --event-handlers
参数可用于控制日志输出。
- 安装colcon-common-extensions后,控制台输出较少,但日志被写入
七、隔离与合并工作空间
- 隔离工作空间:
- 默认情况下,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是一个命令行工具,旨在改进多个软件包的构建、测试和使用的工作流程。它自动化了这一过程,处理了顺序问题,并设置了使用环境这些软件包所需的环境。
二、文档目录(中文版)及详细说明
- 用户文档(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工作空间的概念,包括如何创建、构建和管理工作空间中的软件包。
- 第1章 安装(Chapter 1 Installation)
- 迁移到其他构建工具(Migrate from Other Build Tools)
- 提供从其他构建工具(如catkin_make、catkin_tools等)迁移到colcon的指南和注意事项。
- 开发者文档(Developer Documentation)
- 贡献指南(Contribution Guidelines)
- 列出为colcon项目做出贡献的指南和建议,包括如何提交问题报告、拉取请求以及参与社区讨论。
- 扩展点(Extension Points)
- 介绍colcon的扩展机制,允许开发者创建自定义的colcon扩展来添加新功能或修改现有行为。
- 发布Python包(Publishing Python Packages)
- 提供发布colcon相关Python包到PyPI和Debian仓库的指南和最佳实践。
- 贡献指南(Contribution Guidelines)
- 附录(Appendix)
- 常见问题解答(FAQ)
- 列出在使用colcon时可能遇到的常见问题及其解决方案。
- 术语表(Glossary)
- 定义colcon文档中使用的关键术语和概念。
- 常见问题解答(FAQ)
三、详细学习大纲
- 安装colcon
- 学习如何从PyPI安装colcon。
- 掌握如何从源代码安装自定义分支,以便尝试新的功能或修复。
- 快速入门
- 了解colcon的基本命令和用法。
- 学习如何为ROS1、ROS2以及Gazebo和Ignition包设置和使用colcon。
- 配置colcon
- 深入理解colcon的配置系统。
- 学习如何创建和修改配置文件,以满足特定的构建和测试需求。
- 构建与测试
- 掌握如何使用colcon构建和测试软件包。
- 学习如何处理编译命令、运行特定测试以及生成测试报告。
- 管理工作空间
- 理解colcon工作空间的概念。
- 学习如何创建、构建和管理工作空间中的软件包。
- 迁移到colcon
- 如果你之前使用过其他构建工具(如catkin_make、catkin_tools等),学习如何迁移到colcon。
- 开发者文档
- 如果你有兴趣为colcon项目做出贡献,学习贡献指南和扩展点。
- 了解如何发布colcon相关的Python包。
- 附录
- 查阅常见问题解答和术语表,以解决在使用colcon时可能遇到的问题。
中文总结
这是一个关于如何使用colcon创建和构建ROS 2工作空间的简短教程。它是一个实践教程,并非旨在替代核心文档。
背景
colcon是对ROS构建工具catkin_make、catkin_make_isolated、catkin_tools和ament_tools的迭代。有关colcon设计的更多信息,请参阅相关文档。
colcon的源代码可以在colcon GitHub组织中找到。
先决条件
- 安装colcon
- Linux/macOS/Windows:使用
sudo apt install python3-colcon-common-extensions
(Linux示例)安装。
- Linux/macOS/Windows:使用
- 安装ROS 2
- 要构建示例,需要安装ROS 2。遵循安装说明。
- 注意:如果从deb包安装,本教程需要桌面安装。
基础知识
ROS工作空间是一个具有特定结构的目录。通常包含一个src子目录,源代码将位于该子目录中。通常,目录开始时是空的,除了src目录。
colcon执行源外构建。默认情况下,它将在src目录的同级目录中创建以下目录:
- build目录:存储中间文件。每个包都会在其中创建一个子文件夹,例如在其中调用CMake。
- install目录:每个包将被安装到此处。默认情况下,每个包将安装到单独的子目录中。
- log目录:包含有关每次colcon调用的各种日志信息。
注意:与catkin不同,没有devel目录。
创建工作空间
- 创建一个目录(ros2_ws)来包含工作空间:
- 创建
~/ros2_ws/src
目录并切换到~/ros2_ws
。
- 创建
- 此时,工作空间包含一个空的src目录。
添加源代码
- 将示例存储库克隆到工作空间的src目录中:
- 使用
git clone
命令克隆https://github.com/ros2/examples
到src/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包的工具。以下是关键步骤的总结:
- 创建工作空间:首先,创建一个包含
src
子目录的工作空间目录。 - 填充
src
目录:将ROS包放入src
目录中。 - 列出和可视化包:使用
colcon list
列出所有包,使用colcon graph
以拓扑顺序列出包并可视化它们的依赖关系。 - 构建和测试包:使用
colcon build
构建所有包,使用colcon test
测试所有包,并使用colcon test-result --all
枚举所有测试结果。 - 设置环境:为了使用构建的包,需要运行
install/local_setup.<ext>
脚本来设置环境。
对于ROS 1和ROS 2,构建过程略有不同,但colcon
都可以替代原有的构建工具(如ament_tools
和catkin_make_isolated
)。此外,colcon
还支持构建Gazebo和Ignition包等复杂项目。
题目设计
单选题
-
colcon
主要用于构建哪种类型的项目?
A. Web应用
B. 机器人操作系统(ROS)包
C. 移动应用
D. 游戏 -
要列出工作空间中的所有包,应使用哪个
colcon
命令?
A.colcon build
B.colcon test
C.colcon list
D.colcon graph
(注意:虽然graph
也显示包,但它还显示依赖关系) -
构建ROS包后,为了使用它们,需要运行哪个脚本?
A.install/setup.bash
B.install/local_setup.bash
C.setup.bash
D.local_setup.bash
-
colcon
不支持ROS 1中的哪个概念?
A.devel space
B.install space
C.source space
D.build space
-
在构建Gazebo时,需要哪个版本的
catkin
?
A. 任意版本
B. 0.7.13或更高版本
C. 1.0.0或更高版本
D. 2.0.0或更高版本
多选题
-
使用
colcon
构建ROS包时,以下哪些步骤是常见的?
A. 创建工作空间
B. 填充src
目录
C. 运行colcon build
D. 运行ament build
(注意:这是ament_tools
的命令,不是colcon
的) -
以下哪些是关于
colcon
构建Gazebo时的正确说法?
A. 需要指定Gazebo和Ignition库的版本
B. 可以使用.repos
文件来指定仓库
C. 不需要额外的元数据来构建Gazebo
D. 构建后需要设置环境变量来运行Gazebo
判断题
colcon
可以自动检测src
目录中的所有包并进行构建。- 正确
- 错误
- 在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
知识和功能的假设性题目:
单选题
-
colcon
主要用于哪个领域的项目构建和测试?
A. 机器学习
B. 机器人操作系统(ROS 2)
C. Web开发
D. 移动应用开发 -
在
colcon
中,哪个命令用于构建工作空间中的所有包?
A.colcon build --all
B.colcon compile
C.colcon install
D.colcon build
-
当你想要清理
colcon
工作空间中的所有构建输出时,应使用哪个命令?
A.colcon clean
B.colcon delete
C.colcon reset
D.colcon remove
-
colcon
工作空间中的src
目录通常用于存放什么?
A. 源代码
B. 构建输出
C. 日志文件
D. 配置文件 -
在
colcon
中,哪个文件用于定义包的依赖关系和构建配置?
A.CMakeLists.txt
B.package.xml
C.setup.py
D.colcon.meta
多选题
-
colcon
支持哪些类型的构建系统?(选择所有适用的)
A. CMake
B. Bazel
C. Python setuptools
D. Makefile -
在使用
colcon
进行ROS 2项目开发时,以下哪些步骤通常是必需的?(选择所有适用的)
A. 初始化工作空间
B. 安装ROS 2发行版
C. 编写源代码
D. 配置环境变量
判断题
colcon
可以自动检测工作空间中的所有包,并构建它们,而无需手动指定。- 正确
- 错误
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
的一般功能和用途的假设,实际使用中可能会有所不同。