dartsim/dart

Research-focused C++23 physics engine for robotics, animation, and machine learning, with Python bindings

DART – Dynamic Animation and Robotics Toolkit

產品簡介 – DART 是一個開源物理引擎,旨在用於機器人、動畫和機器學習驅動的模擬研究。它為使用者提供底層運動學、動力學、碰撞處理和約束求解的直接存取,而不是將一切隱藏在黑盒之後。

重要意義 – 該引擎基於廣義座標和 Featherstone 的 Articulated-Body Algorithm 構建,能夠對關節剛體系統(例如人形機器人)提供精確且穩定的模擬。它在 Gazebo 的底層運行,並被許多大學實驗室使用,是需要可靠動力學專案的堅實基礎。

核心能力

  • 研究級動力學 – Featherstone 演算法,直接存取力、力矩、雅可比矩陣等。
  • 多格式模型載入 – 可以透過單一 API 匯入 URDF、SDF 和 MJCF。
  • 跨語言支援 – C++ 核心及官方 Python 綁定 (dartpy)。可透過 Conda、PyPI 和 pixi 套件管理員獲取套件。
  • 可擴展架構 – 模組化的數學、碰撞、約束和基準測試組件,便於插入新演算法。
  • 可擴展計算路線圖 – 目前僅支援 CPU,但專案計畫引入 SIMD 和加速器後端。
  • 生產級測試 – 為 Gazebo 和其他大規模機器人系統提供動力,儘管最新的 DART 7 分支仍處於實驗階段。

典型用例

  • 為強化學習研究模擬機器人的運動或操作。
  • 為虛擬角色生成物理上真實的動畫。
  • 對新的接觸解析或控制演算法進行基準測試。
  • 與需要物理層的更大型機器人技術棧(如 Gazebo)整合。

入門指南

  • Python (推薦) – 透過 conda install -c conda-forge dartpy 安裝穩定的 DART 6 系列,或在 wheel 發布後透過 pip install --pre dartpy 安裝實驗性的 DART 7 系列。如需從原始碼構建 DART 7,請複製儲存庫並執行 pixi run build
  • C++ – 安裝預建套件 (conda install -c conda-forge dartsim-cpp, brew install dartsim 等) 或使用提供的 pixi 命令從原始碼構建。
  • 快速演示 (Python):
    import dartpy as dart, numpy as np
    world = dart.World(time_step=1e-3)
    opts = dart.RigidBodyOptions(); opts.mass = 1.0; opts.position = np.array([0,0,1])
    box = world.add_rigid_body('box', opts)
    world.enter_simulation_mode()
    for _ in range(100): world.step()
    print(f"t={world.time:.3f}s, box z={box.translation[2]:.3f}m")
    

文件與社群 – 完整文件請訪問 https://dart.readthedocs.io/,透過 DeepWiki 獲取 AI 增強的問答,並透過 GitHub Discussions 論壇獲取支援。

授權 – BSD 2-Clause(寬鬆,商業友好)。

成熟度 – DART 6 (分支 release-6.*) 是適用於生產環境的穩定 LTS 版本。DART 7 (main 分支) 是仍在積極開發中的重新設計版本,目前尚不建議用於生產工作負載。


以上所有資訊均直接取自儲存庫的 README。

相關

  • 專案
  • 專案
  • 專案
  • 專案
  • 專案