DART
用於多關節剛體動力學與機器人模擬的 C++ 物理引擎
授權條款
BSD-2-Clause
概述
DART(Dynamic Animation and Robotics Toolkit)是一款 C++20 物理引擎,以基於約束的接觸處理來模擬多關節剛體動力學。它由 Georgia Tech 開發,提供正向/逆向運動學、正向動力學、雅可比矩陣計算與碰撞偵測。與 Isaac Gym 或 MuJoCo 的 MJX 等 GPU 平行模擬器不同,DART 著重於多關節剛體模擬的數學精度,並支援 URDF、SDF 與 MJCF 格式。內含 Python 繫結(dartpy),並與 Gazebo 整合。
DART(Dynamic Animation and Robotics Toolkit)是由 Georgia Tech 開發的開源 C++20 物理引擎,為多關節剛體系統的運動學與動力學模擬提供資料結構與演算法。它使用廣義座標與 Featherstone 的 Articulated Body Algorithm,提供機器人應用所需的數值精度與穩定性。
DART 的一大特色是透過單一 API,統一支援所有主要的機器人描述格式:URDF、SDF、MJCF,以及它自己的 SKEL 格式。它整合多個碰撞偵測後端(FCL、Bullet、ODE),並在耦合的約束動力學框架中求解接觸約束、關節極限與閉迴路機構。Python 繫結(dartpy)可透過 PyPI 與 conda 取得。
DART 已持續開發超過 14 年,每年超過 500 次提交,是機器人領域維護最積極的物理引擎之一。它驅動 Gazebo 模擬器的 DART 物理後端,並被全球的研究實驗室用於控制演算法開發、運動規劃與電腦動畫。
為何重要
DART 作為機器人模擬的基石物理引擎已超過 14 年,驅動 Gazebo 模擬器以及全球眾多研究實驗室。它以廣義座標搭配 Featherstone 的 Articulated Body Algorithm,提供機器人應用所要求的精度與穩定性,而多格式支援(URDF、SDF、MJCF)則讓它格外靈活。
解決的問題
機器人模擬需要一個能以高數值精度正確處理多關節剛體動力學、關節約束、接觸與碰撞的物理引擎。DART 以簡潔的 API 提供這個基礎,支援從所有主要格式載入機器人模型、接入多個碰撞偵測後端,並計算同時適用於控制演算法開發與電腦動畫的動力學。
重點
- 在廣義座標上使用 Featherstone 的 Articulated Body Algorithm,提供精確的動力學
- 透過統一的 API 載入 URDF、SDF、MJCF 與 SKEL 機器人描述格式
- 多個碰撞偵測後端,包括 FCL、Bullet 與 ODE
- 約束動力學求解器同時處理關節極限、接觸與閉迴路機構
- 跨平台(Linux、macOS、Windows),並可透過 PyPI 與 conda 上的 dartpy 取得 Python 繫結
適用對象
- 在模擬中開發與測試控制演算法的機器人研究人員
- 需要了解或客製底層物理引擎的 Gazebo 使用者
- 需要物理上精確之多關節剛體模擬的電腦動畫開發者
- 需要穩定模擬後端的強化學習實務工作者
限制
- 儘管能力相當,在強化學習研究中的使用不如 MuJoCo 或 Isaac Sim 廣泛
- GPU 加速模擬並非目前的重點,它在 CPU 上執行
- C++20 的要求,對於綁定較舊編譯器版本的專案可能有所限制
- 與 MuJoCo 或 PyBullet 相比,社群較小,預建環境也較少