URDF 和 SDFormat 是具有重疊元素但作用範圍不同的 XML 機器人描述格式。 URDF 是許多用於單個機器人鏈路和關節的 ROS 工具的核心。 SDFormat 可以描述模型、燈光、感測器、外掛、物理以及完整的模擬世界。
這兩種格式都無法保證物理真實度。視覺幾何、碰撞幾何和慣性幾何可能存在分歧;影格語意可能透過轉換而改變;感測器速率和雜訊可能不真實。選擇一種真實源策略,檢查每個工具消耗的生成模型。
本指南應與 TF2 座標係指南 及 虛擬除錯指南結合使用。分別驗證結構、框架、物理和感測器。
根據消費者和驗證範圍選擇
列出每個消費者: robot_state_publisher、運動學、規劃、視覺化、控制、模擬器、世界編輯器和資產管道。記錄每個使用者接受的格式和版本。一個通用檔案可以積累工具專用擴充,單個使用者無法一致解讀。
定義哪些行為必須與物理機器人相匹配。運動學規劃可能需要關節和碰撞幾何;控制器測試需要傳輸和介面;模擬可能需要慣性、摩擦、接觸、感測器雜訊和世界條件。

URDF 以一棵運動樹為中心
URDF 描述透過關節連線的鏈路,通常儲存視覺、碰撞和慣性屬性。其樹結構與 robot_state_publisher 及許多 ROS 工具保持一致。 Xacro 增加了可重用生成功能,但屬於預處理語言,而非執行時機器人模型。
ROS 2 URDF 教程解釋了生態系統。歸檔渲染得很 URDF,因為宏、參數和包路徑決定了實際被消耗的檔案。
| 需求 | URDF 力量 | SDFormat 強度 | 驗證 |
|---|---|---|---|
| ROS 運動樹 | 廣泛的工具支援 | 可能需要轉換 | 關節與框架測試 |
| 模擬世界 | 需要延展 | 本土世界結構 | 生成與環境測試 |
| 多型號 | 外部發射邏輯 | 世界模型與巢狀模型 | 恆等與態態測試 |
| 感測器與物理 | 工具專用標籤 | 富含本地元素 | 速率、雜訊與接觸測試 |
| 單源生成 | Xacro 或模板 | 模板或生成 | 差分生成的偽影 |
SDFormat 包含世界和物理上下文
SDFormat 描述模型,也可以描述包含重力、物理引擎設定、燈光、道路、地形、外掛和多個實體的世界。這使得它適合超越單一機器人的可復現模擬場景。
SDFormat 規範有版本限制。記錄規範版本和模擬器釋出。有效檔案仍可能依賴模擬器專用外掛行為,且這些行為不具備移植性。
審計的視覺、碰撞和慣性屬性分別
視覺幾何影響外觀;碰撞幾何影響接觸和規劃;慣性屬性影響動力學。重複使用一個詳細網格對三者可能速度緩慢且物理不準確。一個視覺正確的模型可能包含零或不合理的慣性。
檢查質量、質心和慣性張量是否對稱且物理值正。將碰撞範圍與真實機器人進行比較,驗證簡化形狀不會產生不可能的間隙或接觸。

影格和姿態語意可以透過轉換而改變
URDF 關節原點和連結框架定義了樹。 SDFormat 支援更豐富的姿態關係和影格語意。轉換可能會引入規範連桿(canonical link)、巢狀模型影格或看起來與源不同的解析姿態。
在兩種表示中都變換已知的點和軸。檢查感測器光學影格、基礎影格、工具影格和關節零點。生成在預期位置的模型仍然可以旋轉一個感測器或偏移其碰撞幾何。
| 測試層 | 比較 | 常見的隱誤 | 接受證據 |
|---|---|---|---|
| 結構 | 連桿圖與關節圖 | 固定關節被丟棄 | 名稱與拓撲差異 |
| 框架 | 已知姿勢與軸 | 逆姿態或解析姿態 | 變換驗證點 |
| 物理 | 質量、慣性與碰撞 | 預設值或無效值 | 動態反應 |
| 感測器 | 速率、雜訊、延遲和影格 | 外掛預設設定 | 錄製作品 |
| 世界 | 重力、摩擦力與位置 | 版本相關設定 | 情景迴歸 |
使用 SDFormat 世界來實現可復現的場景
世界應指定影響測試的環境因素:重力、地面、摩擦、光照、模型、初始姿態和物理設定。外部發射指令碼可以增加變異性,但其參數和種子必須保留在情景記錄中。
將可複用的機器人模型與世界特定位置分離。避免在機器人資產中嵌入一個倉庫假設。版本模型和世界獨立使用,並對相容的組合進行迴歸測試。
驗證感測器的行為,而不僅僅是存在
感測器元件可以定義類型、更新率、姿態、雜訊以及渲染或物理參數。外掛將模擬器資料與 ROS 連線起來。出現的主題證明的是連線性,而非取樣時間、視場、雜訊或影格是否與物理裝置匹配。
將模擬輸出與感測器合約進行比較。測量速率、時間戳、延遲、頻率 frame_id、距離限制和雜訊分佈。使用 SDFormat 感測器規範 來獲取宣告版本。
將 Gazebo 擴充視為顯式依賴關係
URDF 通常包含材料、摩擦、感測器和外掛的涼亭擴充標籤。當 ROS 工具消耗 URDF 且 Gazebo 需要額外資料時,它們非常實用。它們還將原始碼與特定的轉換和模擬器行為耦合。
記錄每個擴充,並測試其他 URDF 使用者是否安全忽略。儘可能將僅模擬器的設定分組生成。升級後無聲忽略的參數可以改變動態,而不會導致 XML 失效。
檢查生成的 SDFormat
當 Gazebo 生成 URDF 時,轉換生成 SDFormat 表示。固定節點可根據規則減少或保留,擴充對映。生成的輸出決定模擬器行為,而非源 URDF 節點。
使用 Gazebo URDF 生成檔案 和轉換檢查工具來處理已部署版本。差異生成 SDFormat 是在升級和審查警告後生成的,而不是假設成功生成意味著完全保真。
保持一個語意源和生成目標
一個實用專案可以維護幾何體、關節、感測器和辨識符號的規範參數,然後為其使用者生成 URDF 和 SDFormat 目標。這減少了重複的手動值,同時允許格式特定的功能。
生成器成為可信工具鏈的一部分。針位版本、測試輸出並禁止手工編輯生成檔案。當某一格式無法表達某一特徵時,應明確記錄該偏差,而不是隱藏在未公開的補丁中。
進行結構、框架、物理和感測器迴歸分析
解析每個生成的模型,比較名稱和拓撲結構,驗證座標變換,模擬已知的自由落體或擺錘行為,檢查接觸點並回放感測器測試。包含模型生成、控制器連線和簡短任務場景。
金色截圖對外觀有用,但不足以應對。儲存帶有公差的數值基線,並調查每一個轉換器警告。更改後的模擬器可能需要有物理依據的有意基線更新。
從委託證據中選擇格式
當主要合約是 ROS 機器人結構且支援的擴充足夠時,使用 URDF。當世界、巢狀模型、感測器和模擬器物理是主要時,使用原生 SDFormat。許多系統透過受控生成使用這兩者。
基於測試範圍而非副檔名來確定接受度。
評估“URDF 與 SDFormat 在機器人模型與模擬中的比較”時,還應儲存模型版本、機器人設定、校正檔案、測試日期和全部試驗記錄。
只有把這些持續投入與單位成功任務的價值比較,才能判斷方案是否適合擴大。
上線後仍要持續檢查分佈變化、感測器漂移、機械磨損和人工接管原因。
- 列出所有消費者版本和支援的格式版本。
- 分別有視覺、碰撞和慣性證據。
- 每次轉換後都會有探測影格。
- 用數值測試物理和感測器。
- 版本生成器和生成的偽影一起使用。
常見問題
專案必須只選擇 URDF 還是隻選擇 SDFormat?
不是。許多專案保留語意源,生成工具專用的 URDF 和 SDFormat 生成產物。
URDF 能描述感測器嗎?
專門針對模擬器的擴充可以新增感測器,但原生支援和可移植性取決於使用工具。
成功的 Gazebo 生成能證明轉換是正確的嗎?
不會。影格、慣性、碰撞、外掛和感測器設定仍然可能出錯或被忽略。
robot_state_publisher 能直接讀取 SDFormat 嗎?
其正常合約為 URDF;為該消費者使用支援的轉換或生成 URDF。
模型迴歸應該先測試什麼?
先從鏈路和關節身份開始,然後是影格、慣性與碰撞行為、感測器以及完整場景。
機器人模型保真度邊界
機器人模型是與工具鏈和測試目的相關的近似值。在使用模擬結果進行操作宣告前,先驗證生成的生成產物與物理測量結果。