2025年9月30日 星期二

ROS1 Catkin 編譯工具的比較

 說明 ROS 1 中兩種主要的編譯工具 catkin_makecatkin build 之間的關鍵差異。


Catkin 編譯工具的比較

在 ROS 1 的生態系統中,Catkin (一種基於 CMake 的構建系統) 提供了兩種主要的命令列介面 (CLI) 來管理和編譯您的工作區 (workspace)。

特性catkin_makecatkin build (Catkin Tools)
發佈時間較早,ROS Fuerte/Groovy 開始使用。較晚,作為 catkin_make功能增強替代品而開發。
工作區結構單一 CMake 空間:它將整個工作區視為一個單一的 CMake 專案。所有套件的 CMakeLists.txt 都被合併到一個主要的 CMake 呼叫中。獨立 CMake 空間:它將每個套件視為一個獨立的 CMake 專案來構建,但在單一工作區中管理它們。
編譯目錄只有一個 build 和一個 devel 資料夾。每個套件都會有獨立的 build/package_nameinstall/package_name 資料夾。
並行處理傳統的 make -j 只能在單一套件內進行多執行緒編譯,但無法在套件之間並行編譯。套件級別的並行處理 (Parallelism):能夠同時構建多個沒有依賴關係的套件,這在大型工作區中極大地加快了編譯速度。
日誌和輸出輸出較為雜亂,所有套件的編譯日誌混在一起。輸出清晰,提供了更詳細、結構化的日誌,包括每個套件的構建時間和狀態。
錯誤隔離由於是單一的 CMake 專案,一個套件的錯誤可能會影響到其他不相關套件的錯誤輸出,使除錯更困難。錯誤隔離性高:如果一個套件失敗,其他獨立的套件可以繼續編譯。日誌也只顯示失敗套件的錯誤。
ROS 2 繼承較少。概念上的先驅catkin build 的「獨立構建、集中管理」思想被 ROS 2 的構建工具 colcon 所繼承和發揚。

總結與 ROS 專家建議

1. catkin_make (簡單/傳統)

  • 優點: 內建於 ROS,無需額外安裝。適用於只有少數幾個套件的小型專案。

  • 缺點: 效率較低,特別是大型工作區,錯誤日誌難以追蹤。

2. catkin build (高效/推薦)

  • 優點: 透過並行處理實現更快的編譯速度,提供更清晰的日誌和更好的錯誤隔離。這是 ROS 1 社區普遍推薦的構建工具。

  • 缺點: 需要額外安裝 python3-catkin-tools (如果您的 ROS 發行版沒有預裝)。

您的專案指導:

在您的 ROS 2/URDF 機械手臂整合專案中,由於您使用的是 colcon,這本質上是 catkin build 概念的進化版本。colcon 提供了最好的並行處理、日誌和錯誤隔離,因此在 ROS 2 開發中是標準選擇。

如果您需要在 ROS 1 環境下處理任何過渡時期的套件,強烈建議您使用 catkin build 以獲得更高的開發效率。



沒有留言:

張貼留言