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 アルゴリズム、力、トルク、ヤコビ行列などへの直接アクセス。
- マルチフォーマットのモデル読み込み – URDF、SDF、MJCF を単一の API を通じてインポート可能。
- クロス言語サポート – C++ コアと公式 Python バインディング (
dartpy)。Conda、PyPI、およびpixiパッケージマネージャー経由でパッケージが利用可能です。 - 拡張可能なアーキテクチャ – モジュール式の数学、衝突、制約、およびベンチマークコンポーネントにより、新しいアルゴリズムのプラグインが容易です。
- スケーラブルな計算ロードマップ – 現在は CPU のみですが、プロジェクトは SIMD およびアクセラレータのバックエンドを計画しています。
- プロダクション対応 – Gazebo やその他の大規模なロボティクスシステムを駆動していますが、最新の DART 7 ブランチはまだ実験段階です。
典型的なユースケース
- 強化学習研究のためのロボットの移動または操作のシミュレーション。
- 仮想キャラクターのための物理的にリアルなアニメーションの生成。
- 新しい接触解決または制御アルゴリズムのベンチマーク。
- 物理レイヤーを必要とする大規模なロボティクススタック(例:Gazebo)との統合。
はじめに
- Python (推奨) – 安定版の DART 6 ラインは
conda install -c conda-forge dartpyで、実験的な DART 7 ラインは wheel 公開後にpip install --pre dartpyでインストールできます。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 強化型の Q&A、およびサポート用の GitHub Discussions フォーラムがあります。
ライセンス – BSD 2-Clause (許容的、商用利用可能)。
成熟度 – DART 6 (ブランチ release-6.*) はプロダクションに適した安定した LTS リリースです。DART 7 (main ブランチ) は現在活発に開発中の再設計版であり、まだプロダクションワークロードには推奨されません。
上記の情報はすべてリポジトリの README から直接引用されています。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト