URDF 與 SDFormat 在機器人模型與模擬中的比較

URDF 和 SDFormat 是具有重疊元素但作用範圍不同的 XML 機器人描述格式。 URDF 是許多用於單個機器人鏈路和關節的 ROS 工具的核心。 SDFormat 可以描述模型、燈光、感測器、外掛、物理以及完整的模擬世界。

這兩種格式都無法保證物理真實度。視覺幾何、碰撞幾何和慣性幾何可能存在分歧;影格語意可能透過轉換而改變;感測器速率和雜訊可能不真實。選擇一種真實源策略,檢查每個工具消耗的生成模型。

本指南應與 TF2 座標係指南虛擬除錯指南結合使用。分別驗證結構、框架、物理和感測器。

根據消費者和驗證範圍選擇

列出每個消費者: robot_state_publisher、運動學、規劃、視覺化、控制、模擬器、世界編輯器和資產管道。記錄每個使用者接受的格式和版本。一個通用檔案可以積累工具專用擴充,單個使用者無法一致解讀。

定義哪些行為必須與物理機器人相匹配。運動學規劃可能需要關節和碰撞幾何;控制器測試需要傳輸和介面;模擬可能需要慣性、摩擦、接觸、感測器雜訊和世界條件。

TurtleBot3 漢堡展示光達、輪子感測器、電子裝置和結構連結
機器人模型應保留運動學、感測和模擬相關的物理關係;這張照片並非模型檔案本身。來源:Kuscu0,維基共享資源。許可:CC BY-SA 4.0

URDF 以一棵運動樹為中心

URDF 描述透過關節連線的鏈路,通常儲存視覺、碰撞和慣性屬性。其樹結構與 robot_state_publisher 及許多 ROS 工具保持一致。 Xacro 增加了可重用生成功能,但屬於預處理語言,而非執行時機器人模型。

ROS 2 URDF 教程解釋了生態系統。歸檔渲染得很 URDF,因為宏、參數和包路徑決定了實際被消耗的檔案。

需求URDF 力量SDFormat 強度驗證
ROS 運動樹廣泛的工具支援可能需要轉換關節與框架測試
模擬世界需要延展本土世界結構生成與環境測試
多型號外部發射邏輯世界模型與巢狀模型恆等與態態測試
感測器與物理工具專用標籤富含本地元素速率、雜訊與接觸測試
單源生成Xacro 或模板模板或生成差分生成的偽影

SDFormat 包含世界和物理上下文

SDFormat 描述模型,也可以描述包含重力、物理引擎設定、燈光、道路、地形、外掛和多個實體的世界。這使得它適合超越單一機器人的可復現模擬場景。

SDFormat 規範有版本限制。記錄規範版本和模擬器釋出。有效檔案仍可能依賴模擬器專用外掛行為,且這些行為不具備移植性。

審計的視覺、碰撞和慣性屬性分別

視覺幾何影響外觀;碰撞幾何影響接觸和規劃;慣性屬性影響動力學。重複使用一個詳細網格對三者可能速度緩慢且物理不準確。一個視覺正確的模型可能包含零或不合理的慣性。

檢查質量、質心和慣性張量是否對稱且物理值正。將碰撞範圍與真實機器人進行比較,驗證簡化形狀不會產生不可能的間隙或接觸。

以五個步驟整理URDF 與 SDFormat 在機器人模型與模擬中的比較的判讀重點
依正文與一手資料整理的繁體中文實務卡。來源:Physical AI Lab。

影格和姿態語意可以透過轉換而改變

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。

模型迴歸應該先測試什麼?

先從鏈路和關節身份開始,然後是影格、慣性與碰撞行為、感測器以及完整場景。

機器人模型保真度邊界

機器人模型是與工具鏈和測試目的相關的近似值。在使用模擬結果進行操作宣告前,先驗證生成的生成產物與物理測量結果。

相關主題:倉儲揀選機器人如何運作?架構、指標與導入判斷