check_urdf
抱怨:
— URDF 只能有 一個「根連結 (root link)」;你現在讓 body_3dcam
和 body_imu
都變成沒有父關係的頂層 link,解析器就無法判斷「誰才是全機的基準」。
1 為什麼會出現兩個 root?
URDF 的層級結構必須形成 一棵樹:
-
每個
<link>
都 必須在 某個<joint>
的child
欄位 出現過 -
只有 root link 例外:它只會出現在
<joint>
的parent
,從不當child
當你遺漏了其中一個 joint(或把 joint 的 parent
/child
寫錯),就會讓那條 link「浮」在頂層,變成第二個 root。
2 修正策略
✦ 做法 A:選一個真正的基準 link
-
決定誰是底盤(多半叫
base_link
或chassis
):-
若
body_imu
/body_3dcam
都是感測器,那就新增一個base_link
當根
-
-
把另一個頂層 link 透過 固定關節(fixed joint) 接上去**
✦ 做法 B:讓其中一個 sensor 依附另一個
若 body_imu
和 body_3dcam
之間本來就有相對固定位置,也可直接這樣:
3 檢修步驟
-
打開
/src/roscar4wheel/urdf/roscar.urdf
找到link name="body_3dcam"
與link name="body_imu"
-
搜尋所有
<joint>
,檢查是否有child="body_3dcam"
或child="body_imu"
-
沒有 → 用上面示範加入固定關節
-
-
儲存後重新驗證
看見
或類似單一 root 的輸出就成功了。
4 小工具幫助視覺化(選用)
PDF 會把 link/joint 關係畫出來,方便確認是否成單棵樹。
若仍有疑問…
貼出 roscar.urdf
前後修改的片段(links & joints 部分就好),
我可以替你再檢查一次坐標與父子關係。
沒有留言:
張貼留言