開源專案
dartsim/dart avatar
dartsim/dart

DART 開發者手冊:一個研究導向的物理引擎

用於機器人、動畫和機器學習的專注於研究的 C++23 物理引擎,具有 Python 綁定。

1,204 個 Star304 個 ForkC++BSD-2-Clause

秒懂

它是什麼?
Dynamic Animation and Robotics Toolkit 如何記錄其架構、建置和發行工作流。 聚焦本專案的實際功能、技術入口、部署條件、資料流、版本變化與授權邊界,並依官方 README 所列能力判斷適用工作情境和不適合的替代用途。
適合誰用?
DART 是一個帶有 Python 綁定的 C++23 物理引擎,作為研究工具維護,提供透明的運動學、動力學、碰撞和約束求解。手冊以程式碼為唯一事實來源,並透過避免硬編碼列表保持檔案時效。
可以商用嗎?
可以。BSD-2-Clause 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
還在維護嗎?
有在維護。儲存庫最近一次提交在 1 天前。
用什麼語言寫的?
主要是 C++(依據 GitHub 的語言統計)。

以上回答依據專案的 GitHub 資料(最近同步於 2026年9月14日)與我們的分析,不構成法律意見。

開源專案深度解析

dartsim-dart-deep-analysis|手冊檔案及其職責

dartsim-dart-deep-analysis|手冊檔案及其職責 的專案脈絡:docs/onboarding/README.md 檔案是 DART 目前的開發者手冊。它起初是入門材料,現在也承載了長期有效的貢獻者、維護者、工作流、發行、CI、API 策略和設計說明。手冊的目標是幫助人類和 AI 代理在不從原始程式碼重新發現專案的情況下理解它。資料夾層級放置規則位於 ../information-architecture.md。手冊連結到單獨的檔案,涵蓋建置、測試、貢獻、程式碼風格、變更日誌、架構、建置系統等。它還明確指出,檔案應解釋設計決策和原因,以程式碼為唯一事實來源,並避免使用會過時的硬編碼列表。

專案核對 0:請在 dartsim-dart-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

dartsim-dart-deep-analysis|DART 的既定用途

dartsim-dart-deep-analysis|DART 的既定用途 的專案脈絡:根據 README,DART(Dynamic Animation and Robotics Toolkit)是一個面向研究的 C++23 物理引擎,用於機器人、動畫和機器學習,並帶有 Python 綁定。它提供透明的運動學、動力學、碰撞、約束求解、模型載入和 Python 綁定基礎。dart_gui 元件提供基於 Filament 的 3D 視覺化,使用 GLFW3 視窗和 Dear ImGui 覆蓋層。倉庫描述與此一致:"面向研究的 C++23 物理引擎,用於機器人、動畫和機器學習,並帶有 Python 綁定。"README 沒有提供使用統計、效能基準或生產部署證據。

專案核對 1:請在 dartsim-dart-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

dartsim-dart-deep-analysis|模擬核心與架構分層

dartsim-dart-deep-analysis|模擬核心與架構分層 的專案脈絡:README 中的架構圖將程式碼分為應用層、GUI 層、渲染層、模擬核心、動力學層和基礎層。模擬核心圍繞作為頂級容器的 World、用於鉸接體的 Skeleton、用於單一剛體的 BodyNode、包含十餘種關節類型的關節系統、碰撞偵測和約束求解器建置。動力學使用 Featherstone 演算法實現 O(n) 的正向和逆向動力學,約束求解器使用 LCP 公式,Dantzig 為主求解器,PGS 為備用。碰撞後端包括預設的 FCL,以及 Bullet、DART 原生和 ODE。README 還列出了盒體、球體、網格、點雲和體素網格等形狀類型。

專案核對 2:請在 dartsim-dart-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

dartsim-dart-deep-analysis|Python 綁定與模型載入

dartsim-dart-deep-analysis|Python 綁定與模型載入 的專案脈絡:dartpy 模組提供基於 nanobind 建置的 Python API,涵蓋數學、動力學、碰撞、模擬、約束和最佳化器類別,均使用蛇形命名。dartpy.io 是 legacy utils 的別名,dartpy.gui 暴露 GUI 描述符。遺留模組名稱仍然可匯入,但會發出 DeprecationWarning,不屬於 DART 7 公共契約的一部分。模型載入透過統一的 dart::io API 支援 URDF、SDF 和 MJCF。README 指出 DART 7 移除了對舊版 SKEL 的支援;需要 SKEL 相容性的使用者應停留在 release-6.* 分支。範例流程展示了載入 URDF、建立骨架並將其加入到世界的過程。

專案核對 3:請在 dartsim-dart-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

dartsim-dart-deep-analysis|建置、測試與貢獻工作流

dartsim-dart-deep-analysis|建置、測試與貢獻工作流 的專案脈絡:手冊引導讀者查閱專門的建置、測試、貢獻和程式碼風格檔案。它提到使用 pixi/conda-forge 進行依賴管理,CMake 4.2.3+ 作為建置系統。列出的關鍵指令是"pixi run test-all",用於 lint、建置和所有預設環境測試;在 Linux CUDA 主機上,還記錄了"pixi run -e cuda test-all"。README 強調避免對依賴、檔案列表和版本進行硬編碼,CI 透過"pixi run check-lint"強製這一點。除了這些之外,沒有給出其他安裝指令。檔案原則還鼓勵不要重複閱讀程式碼就能看出的內容。

專案核對 4:請在 dartsim-dart-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

dartsim-dart-deep-analysis|發行與分支策略

dartsim-dart-deep-analysis|發行與分支策略 的專案脈絡:README 描述了兩條活躍的版本線:main 面向 DART 7,被稱為 Python 優先 API;另外還有 DART 6 LTS 分支 release-6.*,僅進行關鍵修復,目前檢出版本為 release-6.20。詳細的路線圖、相容性和棄用策略位於 release-roadmap.md。手冊還涵蓋了 API 邊界、公共與內部 API 策略以及 Python 暴露。它沒有說明發布日期或具體的版本時間表。分支策略的表述是為了將維護工作與 DART 7 開發線分開。

專案核對 5:請在 dartsim-dart-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

dartsim-dart-deep-analysis|授權條款以及來源未說明的內容

dartsim-dart-deep-analysis|授權條款以及來源未說明的內容 的專案脈絡:該倉庫採用 BSD-2-Clause 授權條款。授權條款允許在保留版權聲明和免責聲明的情況下以原始碼和二進位形式重新分發。它不提供任何擔保,包括適銷性和特定用途的適用性。README 沒有確立安全性保證、支援承諾或生產就緒性。除了動力學演算法複雜度的聲稱外,它也沒有提供效能基準。倉庫元資料顯示主要語言是 C++,並列出 1,191 顆星和 303 個 fork,但 README 沒有解釋這些數字。這種沉默值得尊重:文章不能說出比來源更多的東西。

專案核對 6:請在 dartsim-dart-deep-analysis 的 README、設定檔或命令輸出中確認這一節描述的具體行為,並把檔案路徑、參數名稱、平台條件與錯誤結果分開記錄。這些觀察可用來判斷功能是否真的符合目前流程,也能在升級後定位差異。素材未列出的性能或安全承諾,不應自行補上。

編輯結論

DART 是一個帶有 Python 綁定的 C++23 物理引擎,作為研究工具維護,提供透明的運動學、動力學、碰撞和約束求解。手冊以程式碼為唯一事實來源,並透過避免硬編碼列表保持檔案時效。

官方來源

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
社群筆記

社群筆記