📌 ROS 2 與 ROS 1 的 Workspace(工作目錄)差異
在 ROS(ROS 1) 和 ROS 2 中,開發者都需要使用 workspace(工作目錄) 來組織和編譯專案,但它們的架構和工具有所不同。以下是主要的差異:
1️⃣ ROS 1 Workspace(Catkin Workspace)
在 ROS 1 中,開發者使用 Catkin 來管理和編譯專案,並且通常使用 Catkin Workspace,其目錄結構如下:
ROS 1 工作區特點
- 使用 Catkin(CMake-based)作為建構工具。
- 編譯命令:
catkin_make
或catkin build
。 - 環境設定:
- 可支援多個獨立的 workspace,但需要透過
overlay
機制來管理。 - 需要
package.xml
和CMakeLists.txt
來定義 ROS 套件。
2️⃣ ROS 2 Workspace(Colcon Workspace)
在 ROS 2 中,開發者改用 Colcon 作為建構工具,並使用 Colcon Workspace,其目錄結構如下:
ROS 2 工作區特點
- 使用 Colcon 作為建構工具,而不是 Catkin。
- 編譯命令:
colcon build
。 - 環境設定:
- 不再使用
devel/
目錄,取而代之的是install/
目錄來存放所有安裝的資源。 - 支援 Python 套件,可以使用
setup.py
而非CMakeLists.txt
來定義 Python 套件。 - 更加模組化,可以在 ROS 2 中更輕鬆地開發和管理多個 packages。
3️⃣ 主要差異比較
項目 | ROS 1(Catkin Workspace) | ROS 2(Colcon Workspace) |
---|---|---|
建構工具 | catkin_make 或 catkin build | colcon build |
建構系統 | Catkin(CMake-based) | Colcon(更靈活) |
環境變數 | source devel/setup.bash | source install/setup.bash |
安裝方式 | devel/ 目錄存放開發環境 | install/ 目錄取代 devel/ |
Python 支援 | 主要用 CMake + package.xml | 可使用 Python setup.py |
編譯依賴管理 | 需要手動處理 package.xml | colcon 可自動解析依賴 |
模組化架構 | 需要 catkin overlay | 內建支援多個 workspace |
啟動指令 | roslaunch my_package file.launch | ros2 launch my_package file.launch.py |
4️⃣ 何時使用哪個 Workspace?
- 如果你在使用 ROS 1,請使用 Catkin Workspace,並透過
catkin_make
來編譯專案。 - 如果你在使用 ROS 2,請使用 Colcon Workspace,並透過
colcon build
來建置專案。 - 如果你需要同時開發 ROS 1 & ROS 2(如
ros1_bridge
),你需要 兩個 workspace,然後source
兩者:
📌 結論
- ROS 1 使用 Catkin Workspace,ROS 2 使用 Colcon Workspace。
- Colcon 更適合管理多個 packages 並支援 Python,而 Catkin 主要依賴
CMake
。 - Colcon 自動管理依賴關係,不需要像 Catkin 一樣手動處理 overlay。
- ROS 2 廢除了
devel/
目錄,改用install/
來管理已編譯的 packages。
🚀 如果你要開發 ROS 2,建議使用 Colcon Workspace!
沒有留言:
張貼留言