要檢查 URDF 是否正確、可以被 ROS 2 使用,有以下幾個工具與方法,你可以根據目前使用的是 .urdf
或 .xacro
選擇適合的方式:
✅ 1. 使用 check_urdf
工具(最直接)
適用於 .urdf
檔案,這是 ROS 的標準工具,可以檢查語法錯誤與顯示結構。
輸出應該像這樣:
若有錯誤,會明確指出哪一行錯。
🔧 如果
check_urdf
找不到,先安裝:
✅ 2. 如果是 .xacro
檔,先轉換再檢查
或一行完成:
🔧 如果
xacro
沒安裝:
✅ 3. 視覺檢查(用 RViz 顯示)
然後開啟 RViz:
並加一個 "RobotModel" 顯示項目 → 能看到機器人模型代表沒問題。
✅ 4. 直接用 Python 檢查是否可 parse
如果失敗會丟出 XML parse 的錯誤訊息,例如:
🧩 常見 URDF/XACRO 問題
問題 | 原因 | 修正方式 |
---|---|---|
Unicode strings with encoding declaration are not supported | 開頭有 <?xml version=...?> | 刪掉第一行 |
No root link found | 沒有 <robot name=""> 最外層 | 確認有正確 <robot> 包住 |
joint/link 結構不完整 | 缺少 parent 或 child 屬性 | 確認 joint 格式完整 |
相對路徑失效 | URDF 引用 mesh 沒寫完整路徑 | 使用 package://roscar4wheel/... 這種方式 |
RViz 顯示不出模型 | 缺少 robot_state_publisher 或 URDF 錯誤 | 確認啟動時已提供 robot_description |
🚀 小結
-
✅
.urdf
→check_urdf
-
✅
.xacro
→xacro your.xacro | check_urdf
-
✅ 檢查 mesh 路徑用
package://your_pkg/...
-
✅ RViz 可視化檢查結構
🔧 如果你願意貼出你的 roscar.urdf
或 roscar.xacro
的前幾十行(或整份),
我可以幫你進行更深入的結構與語法分析。是否需要我幫你逐步 debug?
沒有留言:
張貼留言