這正是你無法啟動 ros2 launch roscar4wheel ...
的主要原因
✅:
ROS 2 Python-based 套件(如含有
.launch.py
)
必須包含
setup.py
才能被安裝與辨識為 package。
✅ 解法:幫你補一份 setup.py
(最小範例)
請在 ~/data/ros2_ws3/src/roscar4wheel/
目錄下建立 setup.py
,內容如下:
✅ 其他必要檔案補上
resource/roscar4wheel
建立一個空白文字檔,名字要跟 package 名稱完全一致:
roscar4wheel/__init__.py
如果你有 roscar4wheel/
Python package 資料夾,也加這個空檔:
✅ 完整結構應為:
✅ 然後重新 build:
✅ 測試啟動:
🧠 補充:package.xml
也不能少!
請確認你的 package.xml
中 <name>roscar4wheel</name>
與 setup.py
的 name
一致。
如果你想,我也可以幫你直接提供這個 package 的 .zip
完整範例結構。是否需要?
===================================================
❌ 情況 1:CMakeLists.txt
中有寫死錯誤的路徑
檢查你 roscar4wheel
的 CMakeLists.txt
或 setup.py
,是否不小心寫死路徑指向了不存在的資料夾 roscar4wheel_pkg
?
你可以這樣檢查:
❌ 情況 2:你實際的資料夾名稱是 roscar4wheel
,但用錯套件名稱去 build
請確認你在 src/
裡看到的目錄結構:
若你看到的是:
那麼正確的 package 名稱應是 roscar4wheel
,不是 roscar4wheel_pkg
。
✅ 解法
✅ 修正步驟:
🔹 1. 確認資料夾名稱:
確保你真正的 ROS 2 package 在:
🔹 2. 清除 build cache(可選,但建議):
🔹 3. 正確指定套件名建置:
或直接建置全部:
✅ 額外建議:檢查 package.xml
和 CMakeLists.txt
確認你的 roscar4wheel/package.xml
中:
CMakeLists.txt
應該也是同樣的名稱。
這條警告訊息:
表示你在執行 colcon build
的時候,某個地方嘗試傳入了 舊版 ROS(ROS 1)的 CMake 變數 CATKIN_INSTALL_INTO_PREFIX_ROOT
,但你使用的是 ROS 2(ament build system),這個變數是 無效的,所以出現警告。
✅ 重點:這不是錯誤,只是警告
這條訊息可以 放心忽略,只要:
-
你的套件是 ROS 2 格式(使用
setup.py
或ament_cmake
) -
沒有其他 build 失敗訊息
-
最後
Finished <<< roscar4wheel
表示成功完成
就代表你的套件 已經正確建置完成。
🔍 為什麼會出現這條?
通常是因為你在執行 colcon build
時加入了不必要的參數,例如:
這是 ROS 1 catkin
系統下的選項,不適用於 ROS 2。
✅ 建議作法
只用最簡單的方式建置你的 ROS 2 套件即可:
不要手動加入 catkin
變數。
❗補充:colcon 專門用於 ROS 2(ament),不是 catkin
如果你有混用 ROS 1/ROS 2 的專案,可以用 colcon
做混合 build,但要小心區分:
系統 | 編譯方式 |
---|---|
ROS 1 | catkin_make / catkin build |
ROS 2 | colcon build (支援 ament_cmake / setuptools ) |
沒有留言:
張貼留言