在 ROS 2 中,ros2 pkg create --build-type 可選擇 ament_cmake 或 ament_python,這兩種 build type 分別對應 C++ 與 Python 的開發需求。
🧩 ament_cmake vs ament_python 差別總覽
| 比較項目 | ament_cmake | ament_python |
|---|---|---|
| 適用語言 | C++ | Python |
| build 工具 | CMake | setuptools(Python 的標準打包工具) |
| 使用檔案 | CMakeLists.txt | setup.py, setup.cfg |
| 通常用途 | 高效能、driver、硬體控制 | 輕量 node、script、AI、robot logic |
| 執行檔產出 | C++ 編譯出的 binary | Python script 登錄為可執行指令 |
| 安裝檔案結構控制更細緻 | ✅(透過 CMake) | ❌(依 Python 安裝流程) |
📁 建立目錄與檔案結構比較
✅ ament_cmake(C++ 套件)
建立後結構如下:
✅ ament_python(Python 套件)
建立後結構如下:
🚀 執行方式差異
🧱 ament_cmake(C++)
-
編譯後產生 binary:
-
必須定義可執行檔:
在CMakeLists.txt加入:
🐍 ament_python(Python)
-
只要設定 entry point 即可讓 Python 檔案變成可執行:
在
setup.py加入: -
然後執行:
📝 使用建議
| 開發目標 | 建議使用 |
|---|---|
| 要使用 C++ 編寫高效能 node、控制硬體、寫驅動程式 | ament_cmake |
| 要快速撰寫邏輯、ROS node、AI、資料處理、debug script | ament_python |
| 要混合使用 C++ + Python(需跨語言互動) | 可在同一 workspace 建立不同類型套件 |
沒有留言:
張貼留言