[具身智能-802]:ROS2 colcon 构建系统 超详细通俗详解
·
用最通俗、最完整、最贴近实战的方式讲清楚:colcon 是什么、为什么用、怎么用、原理、目录结构、常见命令、面试题。
一、一句话说清:colcon 是什么?
colcon = ROS2 专用的项目构建工具(编译工具)全称:collective construction
统一负责:编译 → 链接 → 安装 → 环境配置
你可以把它理解为:ROS2 项目的 “自动化包工头”,自动把你写的 Python/C++ 代码、功能包、消息、配置文件,变成可运行的程序。
二、colcon 解决什么问题?
- 自动编译多个功能包
- 自动处理包之间的依赖关系
- 自动区分 C++ / Python / 消息接口
- 自动生成环境变量(setup.bash)
- 替代 ROS1 的
catkin_make
三、ROS2 工作空间目录结构(必须记住)
一个标准 ROS2 工作空间长这样:
plaintext
ros2_ws/ # 工作空间根目录
├── src/ # 【最重要】所有功能包都放这里
├── build/ # 编译中间文件(自动生成)
├── install/ # 【最终可执行文件】(自动生成)
├── log/ # 编译日志(自动生成)
- src:你写代码的地方
- build、install、log:colcon 自动生成,不用手动改
四、colcon 核心工作流程(通俗版)
- 扫描 src 目录,找到所有功能包
- 分析依赖顺序,先编译被依赖的包
- 分别编译 C++ / Python /msg 接口
- 安装到 install 目录
- 生成环境脚本,让系统能找到可执行文件
五、最常用 colcon 命令(开发 90% 用这些)
1. 完整编译(最常用)
bash
运行
colcon build
2. 只编译一个包(开发必用)
bash
运行
colcon build --packages-select 包名
3. 编译时打印详细信息(查错用)
bash
运行
colcon build --event-handlers console_direct+
4. 编译后自动生效环境
bash
运行
colcon build && source install/setup.bash
5. 清理编译文件(重新编译)
bash
运行
rm -rf build install log
六、关键知识点:source 命令是什么?
bash
运行
source install/setup.bash
作用:让系统识别你编译好的功能包、节点、话题、消息
不执行 source → ROS2 找不到你的包!
七、colcon 编译的两种功能包类型
1. C++ 包(ament_cmake)
- 用 CMake 编译
- 适合高性能、导航、控制、算法
2. Python 包(ament_python)
- 不用编译,直接安装
- 适合工具、脚本、应用层
colcon 会自动识别,不用你管
八、自定义消息 / 服务 / 动作编译规则
- 必须放在单独的
interfaces包 - 依赖:
plaintext
find_package(rosidl_default_generators REQUIRED) - 编译后自动生成头文件 / Python 类
- 必须 source 才能使用
九、colcon 与 ROS1 catkin 区别(面试题)
| 特性 | colcon (ROS2) | catkin (ROS1) |
|---|---|---|
| 支持语言 | C++ / Python / 所有 | C++ / Python |
| 编译系统 | ament_cmake | catkin_make |
| 依赖管理 | 自动顺序编译 | 手动依赖 |
| 工作空间 | 自动生成 build/install | devel/build |
| 扩展性 | 强,支持分布式 | 弱 |
一句话:colcon 比 catkin 更强大、更自动化
十、面试高频 colcon 题目(必背)
1. colcon 是什么?
ROS2 的官方构建编译工具,负责编译、安装、依赖管理。
2. ROS2 工作空间目录结构?
src、build、install、log。
3. 为什么每次编译要 source?
让系统识别新编译的功能包、节点、消息接口。
4. ament_cmake 与 ament_python 区别?
ament_cmake:C++ 包编译ament_python:Python 包安装
5. colcon 如何只编译一个包?
plaintext
colcon build --packages-select 包名
十一、终极总结(最精简记忆版)
- colcon = ROS2 编译工具
- 代码放 src,编译生成 install
- 编译完必须 source
- 自动处理依赖、自动区分语言
- 是 ROS2 开发的基础工具
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)