当前位置: 首页 > news >正文

详细介绍colcon和ament的关系,以及它们在 ROS 2 构建系统中的角色和区别

Colcon 与 Ament 的关系详解

在 ROS 2 的构建系统里,两个名字经常同时出现:amentcolcon。很多初学者会混淆它们的作用。实际上,它们处在不同的层级:ament 是构建工具链(build system),colcon 是构建任务管理器(build orchestration tool)

本文将从发展历史、功能定位、关系逻辑、使用场景等方面详细阐述。


1. 背景与历史

ROS 1时代
  • 使用的是 catkin 构建系统(基于 CMake + Python 工具)。
  • 使用 catkin_makecatkin build(来自 catkin_tools)进行工作空间编译。
  • 一次编译时可以处理多个包,但对跨语言、多种构建类型的支持有限。
ROS 2的过渡
  • 需要更加灵活、可扩展的构建系统,支持:
    • CMake、Python、非ROS软件包的混合
    • 更强的依赖管理
    • 更好的可扩展性和插件机制
  • 因此诞生了 ament,对应的是 ROS 2 的核心构建架构。
  • 随着项目规模扩大,开发了 colcon 来替代 ROS 2 早期的 ament_tools,实现更强的批量构建与任务调度能力。

2. 两者的功能定位

Ament
  • 性质:一种构建系统(build system)和包管理框架,专为 ROS 2 定制。
  • 核心作用
    • 定义 ROS 2 软件包的构建规则(CMake 宏、Python 构建支持等)。
    • 提供 ament_cmake, ament_python 等插件来支持不同类型的包。
    • 管理包的元数据(package.xml),并生成安装结构、测试规则等。
  • 底层构建依赖
    • C++/C 项目 → 调用 CMake
    • Python 项目 → 调用 setuptools
  • 本质角色构建单个软件包的工具链
Colcon
  • 性质:批量构建工具(multi-package build tool)。
  • 核心作用
    • 读取工作区(workspace)的多个包,根据依赖拓扑决定构建顺序。
    • 调用特定的构建系统(例如 amentcmakesetuptools)来构建每个包。
    • 提供并行构建、增量构建、日志管理、测试批量运行等功能。
    • 可扩展插件以支持非ROS项目。
  • 本质角色任务调度器 + 构建流程管理器

3. 关系逻辑

我们可以把两者的关系类比成 “高铁调度系统”“造车厂”

  • ament = 工厂:定义如何制造一辆车(即构建一个 ROS 2 包),包括用什么零件(CMake宏)、装配顺序、测试流程等。
  • colcon = 高铁调度中心:负责在一个大地图(workspace)上安排多辆车的生产和出厂顺序,调度并行任务,按依赖图排序。

具体关系

  1. colcon build 启动构建流程。
  2. colcon 扫描工作区内所有包及其依赖关系。
  3. 对于每个包,colcon 会调用它对应的构建系统插件:
    • ROS 2 C++包:ament_cmake
    • ROS 2 Python包:ament_python
    • 其他类型包:cmake, setup.py, 甚至是 make(如果插件支持)
  4. ament 实际执行构建动作,生成二进制文件、安装目录、测试目标等。
  5. colcon 收集日志、处理错误、控制并发和增量编译。

4. 使用场景示例

构建 ROS 2 工作区:
# 假设 src/ 下有多个 ROS 2 软件包
colcon build --symlink-install
  • colcon
    • 找到所有包,分析依赖。
    • 调度不同构建任务(可能是 ament 或其他系统)。
  • ament
    • 按包类型执行 ament_cmakeament_python 宏来构建每个包。
测试:
colcon test
  • colcon 批量运行测试
  • ament 提供测试集成(ament_lint, ament_cmake_gtest 等)

5. 总结对照表

方面amentcolcon
角色构建系统(单包构建工具链)批量构建工具(多包任务调度)
主要职责定义和执行单个 ROS 2 包的构建规则在整个工作区中协调构建所有包
能否单独使用可以(只构建一个包时)不行,需要依赖实际构建系统(ament/cmake等)
可扩展性支持不同类型的包构建插件支持多种构建系统插件
与 ROS 关系ROS 2 核心构建系统ROS 2 官方推荐的批量构建工具

6. 关系一句话总结

Colcon 是 orchestrator(调度器),Ament 是 builder(构建器)。在 ROS 2 中,colcon 负责总体构建任务,而 ament 决定每个 ROS 2 包如何具体构建。

http://www.dtcms.com/a/611997.html

相关文章:

  • 建设银行新乡分行城南支行网站网站建设与管理课程报告
  • 做直播哪个网站好php网站开发框架有哪些
  • 天津餐饮网站建设品牌成功案例100个
  • 建网站基础需要学什么做云教育集群网站
  • 几台服务器做集群网站新网站先做外链还是内容
  • 中国临海门户网站工程建设禹州做网站的公司
  • 辽宁网站备案企业网站展示
  • 17.【NXP 号令者RT1052】开发——实战-输入捕获
  • 网站的数据库选择网址我的上网主页
  • 百度突然搜不到网站网站建设可行性报告
  • 专业做设计的网站一个域名两个网站
  • 什么内容能提高网站流量wordpress手机端怎么用
  • 怎么做文化传播公司网站成华区微信网站建设公
  • 网站后台登入密码忘记了合肥科技网站建设
  • 13.vector(上)
  • 阿里云免费网站备案房地产基础知识300问
  • 第35节:全局光照与路径追踪探索
  • 企业网站建设方案书范文百度做任务的网站
  • 郑州做花店网站大学生做爰网站
  • 工程施工行业在哪个网站容易找事做社交网站制作
  • 廊坊网站自助建站网站内页跳转wap
  • 营销网站建设与管理无锡新吴区建设局网站
  • 数据结构与算法 第一天
  • 武威市凉州区建设局网站佛山深圳建网站
  • wordpress 缩略图裁剪贵阳seo排名
  • C语言--位段(Struct)
  • 睢县网站建设有哪些做西点及烘焙的网站
  • 仪陇建设局网站wordpress 幻灯片主题
  • 广西建设厅网站绿色建筑标识个人主页页面
  • 海南美容网站建设网站界面设计方案