【ROS2】ROS2 构建系统 colcon 介绍、安装与使用

目录

  • 一、ament 与 colcon
  • 二、colcon 模块化安装
  • 三、colcon 基本使用介绍
    • 3.1 常用命令
      • 构建工作空间
      • 清理构建结果
      • 构建特定的包
      • 指定构建系统
      • 并行构建
      • 扩展构建选项
    • 3.2 其他命令
      • 列出所有可用的包
      • 忽略某些包
      • 查看colcon文档

一、ament 与 colcon

ROS2采用了新的编译系统Ament,相比ROS1中的catkin,Ament更高效,支持跨平台编译,并能更好地集成现代构建工具链。ament_cmake和ament_python是ament生态系统中的两个重要组件,分别用于C/C++和Python软件包的构建。

ROS2采用colcon作为新的构建工具,它是一个命令行工具,用于改进构建、测试和使用多个软件包的工作流程,负责调用不同的构建系统(如ament_cmake、ament_python等)来完成软件包的构建任务。

colcon是抽象于ament之上的,ament工具链是专门服务于ROS2相关功能包的,而colcon则可以服务于任意C/C++和Python功能包,甚至Java、Rust和Go等任意语言编写的项目。它自动化了构建过程,处理了依赖关系,并设置了使用软件包的环境。colcon通过解析软件包中的 package.xml 文件来确定构建顺序和依赖项,然后调用相应的构建系统(如ament_cmake)来完成构建任务。

二、colcon 模块化安装

colcon是一个模块化的工具链,所有命令行参数都由相应的安装包提供,如下:

在这里插入图片描述

他们的基本功能说明如下:

python3-colcon-alias:提供别名功能,允许用户为常用的colcon命令创建简短的快捷方式。
python3-colcon-argcomplete:集成argcomplete库,为colcon命令提供命令行参数自动补全功能。
python3-colcon-bash:提供Bash脚本支持,允许colcon在Bash环境中更好地工作。
python3-colcon-bazel:为使用Bazel构建系统的项目提供colcon支持。
python3-colcon-cd:允许colcon在执行命令前自动切换到指定的工作目录。
python3-colcon-clean:提供清理构建产物的功能。
python3-colcon-cmake:为使用CMake构建系统的项目提供colcon支持。
python3-colcon-common-extensions:包含一些常用的colcon扩展。
python3-colcon-core:colcon的核心功能,包括命令行解析、日志记录、工作空间管理等。
python3-colcon-coveragepy-result:集成coverage.py,提供代码覆盖率结果的处理和报告功能。
python3-colcon-defaults:提供colcon的默认配置和设置。
python3-colcon-devtools:提供开发工具支持,如调试和性能分析。
python3-colcon-ed:与编辑器集成相关的功能。
python3-colcon-hardware-acceleration:提供硬件加速支持,可能涉及GPU或其他加速器。
python3-colcon-installed-package-information:提供已安装包的信息查询功能。
python3-colcon-lcov-result:集成LCOV,提供代码覆盖率结果的另一种处理和报告方式。
python3-colcon-library-path:管理库路径,确保构建和运行时能够找到正确的库文件。
python3-colcon-meson:为使用Meson构建系统的项目提供colcon支持。
python3-colcon-metadata:管理colcon项目的元数据。
python3-colcon-mixin:提供Mixin支持,允许通过组合的方式增强colcon的功能。
python3-colcon-notification:提供构建和测试结果的通知功能,可能通过邮件、Slack等渠道发送。
python3-colcon-output:管理colcon命令的输出,包括日志、进度信息等。
python3-colcon-override-check:检查并报告可能的配置覆盖情况,以避免意外的构建行为。
python3-colcon-package-information:提供包信息查询功能,如包的依赖关系、版本等。
python3-colcon-package-selection:允许用户选择性地构建和测试项目中的包。
python3-colcon-parallel-executor:提供并行执行构建和测试任务的功能,以提高效率。
python3-colcon-pkg-config:集成pkg-config,提供包配置信息的查询功能。
python3-colcon-powershell:提供PowerShell脚本支持,允许colcon在PowerShell环境中更好地工作。
python3-colcon-python-setup-py:为使用Python setup.py构建系统的项目提供colcon支持。
python3-colcon-recursive-crawl:提供递归遍历项目目录的功能,以发现更多的包和构建目标。
python3-colcon-rerun:允许用户重新运行之前的构建和测试任务。
python3-colcon-ros:为ROS2项目提供colcon支持,包括构建、测试、安装等。
python3-colcon-ros-distro:提供ROS发行版支持,允许用户根据特定的ROS发行版构建项目。
python3-colcon-ros-domain-id-coordinator:在ROS 2项目中协调域ID(Domain ID)的分配和使用。
python3-colcon-spawn-shell:允许用户从colcon命令中启动一个新的shell会话。
python3-colcon-test-result:处理并报告测试结果,包括测试的成功、失败、跳过等信息。
python3-colcon-zsh:提供Zsh脚本支持,允许colcon在Zsh环境中更好地工作。

一般使用时只需安装 sudo apt install python3-colcon-common-extensions 即可,一些必要的包会作为依赖自动安装,比如 python3-colcon-corepython3-colcon-defaults 等。

三、colcon 基本使用介绍

3.1 常用命令

构建工作空间

要构建一个包含多个软件包的工作空间,首先需要导航到该工作空间的根目录,通常这个目录下会有一个 src 文件夹,里面包含了所有的源代码包。然后运行以下命令:

colcon build

这将构建 src 文件夹中的所有软件包。

清理构建结果

如果你想清理之前的构建结果,可以使用:

colcon clean

这会删除 buildinstall 目录下的所有文件。

构建特定的包

如果你只想构建特定的一个或几个包,可以使用:

colcon build --packages-select <package_name>

例如,如果你想要构建名为 my_package 的包,命令应该是:

colcon build --packages-select my_package

指定构建系统

如果你的包使用了不同于默认的构建系统(比如 ament_cmake),你可以通过 --cmake-args 参数指定:

colcon build --cmake-args -DCMAKE_BUILD_TYPE=Release

并行构建

为了加快构建过程,你可以利用多核处理器并行构建多个包。使用 -j--parallel-workers 参数指定并行工作的数量:

colcon build --parallel-workers 4

扩展构建选项

colcon 支持很多其他选项,比如设置构建目录、安装目录等。你可以通过查看帮助文档来获取更多信息:

colcon build --help

3.2 其他命令

列出所有可用的包

colcon list

忽略某些包

如果你不想构建某些特定的包,可以使用 --packages-skip 参数:

colcon build --packages-skip <package_name>

查看colcon文档

colcon -h

其中 colcon verbs 列出了当前已安装的功能,如需要的功能不在列表里,需要另外安装。

在这里插入图片描述



欢迎大家加QQ群,一起讨论学习:894013891

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/922957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity 2020、2021、2022、2023、6000下载安装

Unity 2020、2021、2022、2023、6000 下载安装 以Unity 6000.0.24fc1下载安装为例&#xff1a; 打开 https://unity.cn/ 优三缔 官方网站&#xff1b; 点击【产品列表】→点击【查看更多】→选择自己需要的版本→点【开始使用】 点击【从Unity Hub下载】 以Windows为例&am…

python自定义枚举类的试验与思考

一 现象 在python的3.4版本之前&#xff0c;是没有枚举类的。 所以&#xff0c;我自定义实现了一个enum类&#xff0c;目录如下&#xff1a; 代码如下&#xff1a; class enum(set):def __getattr__(self, name):if name in self:return nameraise AttributeErrorif __name_…

AIGC实践-使用Amazon Bedrock的SDXL模型进行文生图

一、Bedrock 简介 Amazon Bedrock 是 Amazon Web Services (AWS) 提供的一种生成式 AI 服务。通过 Bedrock&#xff0c;用户可以方便地使用多种基础模型&#xff08;Foundation Models&#xff09;&#xff0c;包括 OpenAI 的 GPT、Anthropic 的 Claude 等。这些模型可以用于各…

【MySQL】sql注入相关内容

【MySQL】sql注入相关内容 1. 为什么使用sql注入的时候&#xff0c;url传值的时候要使用–而不是– 使用–进行注释的时候需要在后面加一个空格才可以被认为是注释&#xff0c;url传值的过程中会将空格自动忽略&#xff0c;使用则可以在传输中保留为空格符号。&#xff08;同…

【YOLO】深入理解 CSP 瓶颈模块的变种:Bottleneck、C3、C3k、C2f 和 C3k2

深入理解 CSP 瓶颈模块的变种&#xff1a;Bottleneck、C3、C3k、C2f 和 C3k2 从 YOLOv3 到 YOLOv11&#xff0c;Ultralytics 团队结合当时的主流结构提出了各种适用于 YOLO 的模块&#xff0c;涵盖了不同的创新和优化思路&#xff0c;从而应对不断变化的目标检测需求。这些模块…

Redis中的数据结构详解

文章目录 Redis中的数据结构详解一、引言二、Redis 数据结构1、String&#xff08;字符串&#xff09;1.1、代码示例 2、List&#xff08;列表&#xff09;2.1、代码示例 3、Set&#xff08;集合&#xff09;3.1、代码示例 4、Hash&#xff08;散列&#xff09;4.1、代码示例 5…

计算机的错误计算(一百六十六)

摘要 探讨 MATLAB 关于算式 的计算误差。 例1. 已知 计算 直接贴图吧&#xff1a; 然而&#xff0c;16位的正确结果为 -0.9765626220703239e-21&#xff08;ISRealsoft 提供&#xff09;。这样&#xff0c;MATLAB输出的有效数字的错误率为 (16-2)/16 87.5% . 注&…

大模型时代的具身智能系列专题(十五)

Shubhangi Sinha团队 Shubhangi Sinha是康奈尔大学计算机科学系助理教授。在加入康奈尔大学之前&#xff0c;Tapo 是华盛顿大学计算机科学与工程专业的 NIH Ruth L. Kirschstein NRSA 博士后研究员。他在佐治亚理工学院获得了机器人学博士学位。他之前还曾在迪士尼研究中心工作…

【软件入门】Git快速入门

Git快速入门 文章目录 Git快速入门0.前言1.安装和配置2.新建版本库2.1.本地创建2.2.云端下载 3.版本管理3.1.添加和提交文件3.2.回退版本3.2.1.soft模式3.2.2.mixed模式3.2.3.hard模式3.2.4.使用场景 3.3.查看版本差异3.4.忽略文件 4.云端配置4.1.Github4.1.1.SSH配置4.1.2.关联…

鱼眼相机模型-MEI

参考文献&#xff1a; Single View Point Omnidirectional Camera Calibration from Planar Grids 1. 相机模型如下&#xff1a; // 相机坐标系下的点投影到畸变图像// 输入&#xff1a;相机坐标系点坐标cam 输出&#xff1a; 畸变图像素点坐标disPtvoid FisheyeCamAdapter::…

C++网络编程之多播

概述 在移动互联网时代&#xff0c;随着多媒体应用的日益普及&#xff0c;如何高效地将数据传输给多个接收者成为了网络通信领域的一个重要课题。多播&#xff08;英文为Multicast&#xff09;作为一种高效的网络通信方式&#xff0c;可以将数据同时发送到多个接收者&#xff0…

计算机毕业设计Python音乐推荐系统 机器学习 深度学习 音乐可视化 音乐爬虫 知识图谱 混合神经网络推荐算法 大数据毕设

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

直播技术-Android基础框架

目录 &#xff08;一&#xff09;直播间架构 &#xff08;二&#xff09;核心任务调度机制 &#xff08;1&#xff09;复制从滑动直播间加载流程 &#xff08;2&#xff09;核心任务调度机制-代码设计 &#xff08;3&#xff09;核心任务调度机制-接入指南 (三&#xff0…

『 Linux 』数据链路层 - MAC帧/以太网帧

文章目录 MAC帧/以太网帧局域网的通信原理 MAC帧/以太网帧 MAC帧也叫做以太网帧,通常情况下MAC帧也是一个更广义的语术,用来描述数据链路层,即OSI模型的第二层的一种数据帧格式,这种格式包括其他如WI-FI,令牌环,帧中继等数据链路层所使用的数据帧; 以太网帧是具体使用的一种MAC…

LightRAG开源了…结合本地ollama实现股票数据接口Akshare智能问答

LightRAG是由香港大学研究团队推出的一种检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;系统。该系统通过整合图结构索引和双层检索机制&#xff0c;显著提升了大型语言模型在信息检索中的准确性和效率。LightRAG 不仅能够捕捉实体间的复杂依赖关系…

LabVIEW引用类型转换问题

一、问题描述 在LabVIEW中&#xff0c;refnum&#xff08;引用编号&#xff09;用于引用各种资源&#xff0c;如文件、队列、控件等。这些引用是与具体类型相关的&#xff0c;通常情况下&#xff0c;LabVIEW会根据引用的类型自动进行处理。然而&#xff0c;当不同类型的引用需…

Redis五大基本类型——Set集合命令详解(命令用法详解+思维导图详解)

目录 一、Set集合类型介绍 二、常见命令 1、SADD 2、SMEMBERS 3、SISMEMBER 4、SCARD 5、SRANDMEMBER 6、SPOP 7、SMOVE 8、SREM ​编辑 9、集合间操作 &#xff08;1&#xff09;SINTER &#xff08;2&#xff09;SINTERSTORE &#xff08;3&#xff09;SUNION…

HTMLCSS:彩色灵动气泡效果

效果演示 这段代码是一个HTML文档&#xff0c;包含了内联的CSS样式&#xff0c;用于创建一个具有动画效果的网页背景&#xff0c;其中包含多个彩色浮动的气泡元素。 HTML <div class"container"><div class"bubble"><span></spa…

[工具分享] 根据Excel数据根据Word文档模板,批量创建生成Word文档并重命名,方便快速查找打印

前几天交楼的小姐姐要多份Word文档合同打印给客户&#xff0c;那么100份就需要修改100次 上面好多都是模板的制式文件&#xff0c;里面的部分数据都是要根据实际值来变动的&#xff0c; 那么有没有快速的方法来操作呢&#xff0c;还是只能一个个手动的改&#xff0c;又容易出…

《硬件架构的艺术》笔记(五):低功耗设计

介绍 能量以热量形式消耗&#xff0c;温度升高芯片失效率也会增加&#xff0c;增加散热片或风扇会增加整体重量和成本&#xff0c;在SoC级别对功耗进行控制就可以减少甚至可能消除掉这些开支&#xff0c;产品也更小更便宜更可靠。本章描述了减少动态功耗和静态功耗的各种技术。…