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

catkin_make与catkin build的关系与区别(使用catkin build的好处)

在这篇文章中,我们来详细解释一下 python3-catkin-tools 这个软件包的作用以及catkin_make与catkin build的关系与区别。

简单来说,这是一个对 ROS1(机器人操作系统第一版)开发者来说极其重要且强烈推荐的工具包。

一句话总结

python3-catkin-tools 提供了一套名为 catkin_tools 的现代化命令行工具,它是 ROS1 默认构建工具 catkin_make 的一个功能更强大、速度更快、用户体验更好的替代品。


核心作用:构建 ROS1 的软件包

在 ROS1 中,所有的源代码都必须经过一个叫做 Catkin 的构建系统进行编译、链接,最终生成可执行文件、库文件等。

最初,ROS 提供的官方工具是 catkin_make。虽然它能完成工作,但存在一些缺点:

  • 工作空间混乱:它会在你的工作空间根目录下创建 builddevel 两个文件夹,所有包的编译中间文件和最终产物都混在这两个文件夹里,难以管理和清理。
  • 串行编译:它默认是一个一个地编译你的软件包,如果你的工作空间里有几十个包,速度会很慢。
  • 用户界面不友好:输出信息杂乱,且功能单一。

为了解决这些问题,社区开发了 catkin_toolspython3-catkin-tools 就是这个工具针对 Python 3 环境的 apt 软件包名。(在早期的 Ubuntu/ROS 版本如 18.04/Melodic,你可能会安装 python-catkin-tools,它对应 Python 2)。


catkin_tools vs. catkin_make (关键区别)

这个对比能让你最直观地理解它的价值:

特性catkin_make (旧工具)catkin_tools (新工具,由本包提供)优势说明
核心命令catkin_makecatkin build命令更具描述性,build 只是其功能之一。
工作空间布局在工作空间根目录创建 builddevel 文件夹。在工作空间根目录创建 build, devel, logs, install 文件夹。每个包的编译都在各自的子文件夹中隔离进行这是最大优势! 布局清晰,不会互相污染。你可以安全地单独清理某个包的编译缓存,而不会影响其他包。
编译过程默认串行编译,速度较慢。默认并行编译,充分利用多核 CPU 资源。编译速度显著提升,尤其是在大型工作空间中。
用户界面输出信息是滚动的原始 make 日志,杂乱无章。用户界面非常友好。它会整齐地列出每个包的编译状态([BUILDING], [DONE], [FAILED]),并有进度条。输出清晰直观,能快速定位哪个包编译失败,失败日志也单独存放,易于查找。
功能丰富度功能单一,主要就是编译。提供了一整套工作流工具,如 catkin clean, catkin list, catkin config 等。提供了清理、配置、查看等全方位的项目管理能力。
配置灵活性难以方便地切换编译配置(如 Debug/Release)。支持构建配置文件 (Profiles)。你可以轻松创建和切换不同的配置(如 debug, release, release-with-asserts)。极大地便利了开发和调试,一键切换不同的编译选项。

catkin_tools 的主要命令

安装 python3-catkin-tools 后,你就可以在你的 ROS1 Catkin 工作空间中使用以下命令:

  1. 初始化工作空间 (catkin init)

    • 在一个空的工作空间目录运行,它会创建一个标记,告诉 catkin_tools 这是一个有效的工作空间。
  2. 构建包 (catkin build)

    • catkin build: 编译工作空间里的所有包。
    • catkin build <package_name>: 只编译指定的包及其依赖。
    • catkin build --this: 只编译当前目录下的包。
  3. 清理工作空间 (catkin clean)

    • catkin clean: 删除 build, devel, logs 等所有生成的文件,非常彻底。
    • catkin clean <package_name>: 只清理指定包的编译产物,而不影响其他包!这是 catkin_make 无法做到的。
  4. 配置工作空间 (catkin config)

    • catkin config --cmake-args -DCMAKE_BUILD_TYPE=Release: 为工作空间设置 CMake 参数,例如切换到 Release 模式进行编译。
    • catkin config -l: 列出当前的所有配置。
  5. 查看工作空间 (catkin list)

    • 列出当前工作空间中所有的包。

它与 ROS2 的关系

值得注意的是,Catkin 是 ROS1 的构建系统catkin_tools 是用于 ROS1 的。

ROS2 引入了一个全新的、更通用的构建系统叫做 colcon (Collective Construction)colcon 的设计哲学在很大程度上借鉴了 catkin_tools 的成功经验,比如并行构建、清晰的日志输出等。所以,如果你熟悉 catkin_tools,你会发现上手 colcon 非常容易。

总结

python3-catkin-tools 是一个为 ROS1 开发者准备的生产力工具。它通过提供 catkin build 等一系列命令,彻底革新了 ROS1 的开发工作流,带来了更快的编译速度、更清晰的工作空间管理和更友好的用户交互

对于任何还在使用 ROS1 (尤其是 Noetic) 的开发者来说,catkin_make 切换到 catkin_tools 是一个毫无疑问的正确选择

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

相关文章:

  • MGRE实验
  • 深入解析 Vue 3 中 v-model 与表单元素的绑定机制
  • 多租户Kubernetes集群架构设计实践——隔离、安全与弹性扩缩容
  • Spring Boot自动配置原理深度解析
  • 昇思学习营-模型推理和性能优化
  • Keepalived + LVS-DR 高可用与负载均衡实验
  • 【Python系列】使用 memory_profiler 诊断 Flask 应用内存问题
  • 结构化文本文档的内容抽取与版本重构策略
  • 8. 状态模式
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博舆情分析实现
  • vLLM 的“投机取巧”:Speculative Decoding 如何加速大语言模型推理
  • Spring Boot2错误处理
  • 负载均衡 LoadBalance
  • Spring Boot音乐服务器项目-查询音乐模块
  • 《Foundation 面板:设计、功能与最佳实践解析》
  • Java学习-------序列化与反序列化
  • UV: 下一代 Python 包管理工具
  • golang--虚拟地址空间
  • 阿里 Qwen3 四模型齐发,字节 Coze 全面开源,GPT-5 8 月初发布!| AI Weekly 7.21-7.27
  • 批量重命名带编号工具,附免费地址
  • Android网络框架封装 ---> Retrofit + OkHttp + 协程 + LiveData + 断点续传 + 多线程下载 + 进度框交互
  • linux根据pid获取服务目录
  • 一场关于电商零售增长破局的深圳探索
  • Vulnhub red靶机渗透攻略详解
  • PHP框架之Laravel框架教程:2. 控制器、路由、视图简单介绍
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现标签条码一维码的检测(C#代码,UI界面版)
  • WPFC#超市管理系统(2)顾客管理、供应商管理、用户管理
  • MySQL ROUTER安装部署
  • EasyExcel使用(二:写出)
  • git 提交时排除一个或多个文件