SDFormat/SDF 模型與世界生成、驗證及模擬器交接。用於 `.sdf` 檔案、SDFormat XML、Python `gen_sdf()` 原始碼、模型、世界、連結、關節、姿態、框架、慣性、視覺/碰撞幾何、網格 URI、感測器、光源、物理、插件、包含、Gazebo、靜態 SDF 審查或模擬器特定中繼資料。請勿用於符號距離場幾何。
SDF
來源:維護於 earthtojake/text-to-cad。
使用已安裝的本機技能檔案作為執行階段的真實來源;
儲存庫連結僅供來源追溯與版本審查使用。
當交付項目為 SDFormat 文件或 Python gen_sdf() 原始碼時,使用此技能。SDFormat 描述模擬器與世界行為:模型、世界、框架、姿態、連結、關節、慣性、視覺、碰撞、感測器、光源、物理、插件、包含以及模擬器中繼資料。
此技能適用於 SDFormat,而非符號距離場幾何。
核心規則
- 將定義
gen_sdf()的 Python 檔案視為真實來源。除非使用者明確要求直接編輯 XML,否則將已配置的.sdf檔案視為產出成品。 - 在編輯前確認目標消費者:Gazebo/libsdformat 版本、其他模擬器、僅視覺化工具、模型套件或世界交接。
- 決定文件類型:模型層級 SDF、世界層級 SDF 或模型置於世界中。對於可重複使用的機器人/物體匯出,優先使用模型層級 SDF。
- 除非目標明確要求其他單位,否則使用 SI 單位:公尺、公斤、秒、弧度。
- 除非目標消費者限制版本,否則新輸出優先使用
version="1.12"。 - 在撰寫姿態、框架、關節軸、網格縮放、慣性、感測器或插件之前,先建立設計記錄。使用
references/design-ledger.md和references/llm-guardrails.md。 - 不要僅憑視覺印象推斷空間轉換。姿態、軸、縮放、質量、慣性及框架名稱應來自上游來源資料、圖紙、模擬器文件、量測值或明確假設。
- 優先使用輔助函式與命名常數,而非大型 XML 字串字面值。隱藏數字是常見的 SDF 失敗模式。
- 僅透過
scripts/sdf或儲存庫現有的 SDF 啟動器產生明確目標。不要執行目錄範圍的生成。 - 在重新產生參照上游幾何、網格、機器人描述、渲染、拓撲或套件資產的 SDF 之前,先以對應的工作流程重新產生這些資產。
- 產生後執行可用的檢查:內建驗證、選擇性
gz sdf --check、模擬器載入、關節運動以及插件/感測器啟動。 - 回報假設、跳過的檢查、未解析的資源路徑以及目標特定的相容性風險。
範圍
此技能用於 SDFormat 輸出與產生器。請勿用於符號距離場建模、原始幾何生成、規劃語義,或掩蓋不正確的上游機器人/來源資料,除非任務明確僅限於模擬器。
CAD 檢視器交接
完成建立或修改 .sdf 的 SDF 工作後,若 $cad-viewer 技能已安裝,你必須將明確的檔案路徑傳遞給 $cad-viewer。$cad-viewer 必須啟動 CAD 檢視器(若尚未執行)並回傳相關已建立或修改檔案的連結;若 $cad-viewer 不可用或啟動失敗,則回報此情況,而非默默省略交接。
工作流程
- 找到
gen_sdf()原始碼與預期的.sdf輸出。 - 讀取或建立設計記錄。
- 在編輯任何
<pose>、<frame>、關節軸、relative_to、expressed_in、巢狀範圍、感測器框架或插件框架之前,先閱讀references/frame-semantics.md。 - 編輯產生器原始碼,而非產生的 XML。
- 當建構輔助工具能使產生的結構更清晰時,可選擇使用;仍允許使用原始 ElementTree。
- 重新產生明確目標。
- 將內建驗證視為防護措施,而非模擬器保證。
- 若可用,執行目標消費者煙霧測試。
- 回報已執行、已跳過的檢查以及假設。靜態渲染不執行 SDF 插件,也不讀取檔案中的運動中繼資料。
指令
使用專案或工作區的 Python 環境執行。將範例中的 python 視為直譯器佔位符;若裸 python 不可用,請替換為 python3、專案虛擬環境直譯器或已配置的直譯器路徑。
python scripts/sdf path/to/source.py
python scripts/sdf path/to/source.py -o path/to/output.sdf
python scripts/sdf path/to/a.py=out/a.sdf path/to/b.py=out/b.sdf
純 Python 目標會在其原始碼旁寫入同層級的 .sdf 檔案。-o / --output 僅在單一目標時有效。SOURCE.py=OUTPUT.sdf 支援自訂多目標目的地。
若執行環境支援選擇性外部檢查:
python scripts/sdf path/to/source.py --gz-check auto
python scripts/sdf path/to/source.py --gz-check required
python scripts/sdf path/to/source.py --gz-check never
gz sdf --check 是選擇性的目標消費者驗證。當不可用時應回報為已跳過,除非明確要求。
必要報告格式
完成 SDF 任務時,請包含簡潔報告:
Generated: path/to/model.sdf from path/to/model.py
Checks run:
- bundled SDF validation: passed
- gz sdf --check: skipped, gz not installed
- simulator load: skipped, target simulator unavailable
- viewer handoff: `$cad-viewer` link returned
Assumptions:
- Assumed mesh units are meters.
- Assumed lidar frame is coincident with lidar_link.
Risks:
- Camera plugin filename was not verified in the target simulator environment.
參考資料
- Generation command:
references/gen-sdf.md - Generator contract:
references/generator-contract.md - SDF workflow:
references/sdf-workflow.md - Builder helpers:
references/builder-helpers.md - LLM guardrails:
references/llm-guardrails.md - Design ledger:
references/design-ledger.md - Frame semantics:
references/frame-semantics.md - Validation scope:
references/validation.md - Smoke tests:
references/smoke-tests.md - Interoperability notes:
references/interoperability.md - Examples:
references/examples.md - Runtime notes and current limitations:
references/implementation-notes.md




