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)は、ジョージア工科大学で開発されたオープンソースのC++20物理エンジンで、多関節剛体システムの運動学的および動力学的シミュレーションのためのデータ構造とアルゴリズムを提供します。一般化座標とFeatherstoneのArticulated Body Algorithmを用いて、ロボティクス用途に必要な数値精度と安定性を実現します。
DARTの際立った特長は、URDF、SDF、MJCF、および独自のSKEL形式という主要なロボット記述形式すべてを単一のAPIで統一的にサポートしていることです。複数の衝突検出バックエンド(FCL、Bullet、ODE)を統合し、接触拘束、関節リミット、閉ループ機構を連成した拘束動力学フレームワークで解きます。Pythonバインディング(dartpy)はPyPIとcondaから入手できます。
14年以上にわたる継続的な開発と年間500件を超えるコミットにより、DARTはロボティクス分野で最も活発にメンテナンスされている物理エンジンの一つです。GazeboシミュレーターのDART物理バックエンドを支えており、世界中の研究機関で制御アルゴリズムの開発、動作計画、コンピューターアニメーションに使用されています。
重要な理由
DARTは14年以上にわたりロボットシミュレーションの中核を担う物理エンジンであり、Gazeboシミュレーターや世界中の多くの研究機関を支えています。一般化座標とFeatherstoneのArticulated Body Algorithmを用いることで、ロボティクス用途が求める精度と安定性を提供し、複数形式(URDF、SDF、MJCF)のサポートにより比類のない汎用性を備えています。
解決する課題
ロボットシミュレーションには、多関節体の動力学、関節拘束、接触、衝突を高い数値精度で正しく扱える物理エンジンが必要です。DARTは、主要なすべての形式からのロボットモデルの読み込み、複数の衝突検出バックエンドの組み込み、そして制御アルゴリズムの開発とコンピューターアニメーションの両方に適した動力学の計算をサポートする、わかりやすいAPIによってこの基盤を提供します。
主なポイント
- 正確な動力学のため、一般化座標上でFeatherstoneのArticulated Body Algorithmを使用
- URDF、SDF、MJCF、SKELのロボット記述形式を統一APIで読み込み
- FCL、Bullet、ODEを含む複数の衝突検出バックエンド
- 拘束動力学ソルバーが関節リミット、接触、閉ループ機構をまとめて処理
- クロスプラットフォーム(Linux、macOS、Windows)で、PyPIとcondaのdartpyによるPythonバインディングを提供
対象
- シミュレーションで制御アルゴリズムを開発・テストするロボティクス研究者
- 基盤となる物理エンジンを理解またはカスタマイズする必要があるGazeboユーザー
- 物理的に正確な多関節体シミュレーションを必要とするコンピューターアニメーション開発者
- 安定したシミュレーションバックエンドを必要とする強化学習の実務者
制限事項
- 同等の機能を持ちながら、RL研究ではMuJoCoやIsaac Simほど広く使われていません
- GPUアクセラレーションによるシミュレーションは現在の重点ではなく、CPUで動作します
- C++20の要件は、古いコンパイラーバージョンに固定されたプロジェクトにとって制約となる場合があります
- MuJoCoやPyBulletと比べてコミュニティが小さく、構築済みの環境も少ないです