最通俗、最完整、最贴近实战的方式讲清楚:colcon 是什么、为什么用、怎么用、原理、目录结构、常见命令、面试题。


一、一句话说清:colcon 是什么?

colcon = ROS2 专用的项目构建工具(编译工具)全称:collective construction

统一负责:编译 → 链接 → 安装 → 环境配置

你可以把它理解为:ROS2 项目的 “自动化包工头”,自动把你写的 Python/C++ 代码、功能包、消息、配置文件,变成可运行的程序。


二、colcon 解决什么问题?

  1. 自动编译多个功能包
  2. 自动处理包之间的依赖关系
  3. 自动区分 C++ / Python / 消息接口
  4. 自动生成环境变量(setup.bash)
  5. 替代 ROS1 的 catkin_make

三、ROS2 工作空间目录结构(必须记住)

一个标准 ROS2 工作空间长这样:

plaintext

ros2_ws/          # 工作空间根目录
├── src/          # 【最重要】所有功能包都放这里
├── build/        # 编译中间文件(自动生成)
├── install/      # 【最终可执行文件】(自动生成)
├── log/          # 编译日志(自动生成)
  • src:你写代码的地方
  • build、install、log:colcon 自动生成,不用手动改

四、colcon 核心工作流程(通俗版)

  1. 扫描 src 目录,找到所有功能包
  2. 分析依赖顺序,先编译被依赖的包
  3. 分别编译 C++ / Python /msg 接口
  4. 安装到 install 目录
  5. 生成环境脚本,让系统能找到可执行文件

五、最常用 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 会自动识别,不用你管


八、自定义消息 / 服务 / 动作编译规则

  1. 必须放在单独的 interfaces
  2. 依赖:

    plaintext

    find_package(rosidl_default_generators REQUIRED)
    
  3. 编译后自动生成头文件 / Python 类
  4. 必须 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 开发的基础工具
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐