DART 7:研究向け剛体動力学エンジンと pixi ビルド面
Python バインディングを備えた、ロボット工学、アニメーション、機械学習のための研究に重点を置いた C++23 物理エンジン。
ひと目でわかる
- これは何?
- dartsim/dart は C++23 の Dynamic Animation and Robotics Toolkit。main は DART 7 再設計中で、Featherstone 動力学・URDF/SDF/MJCF 読み込み・dartpy を README と docs が説明する。
- 誰に向いている?
- DART は Gazebo 連携や自前シミュレーション研究向きで、main の DART 7 は README が「本番非推奨」と明言する。安定運用なら release-6.20 の DART 6 LTS を選び、実験なら pixi run build 後に PYTHONPATH=build/default/cpp/Release/python で dart.World スモークを README 通り実行する。
- 商用利用できる?
- できます。BSD-2-Clause は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
- 今もメンテナンスされている?
- されています。最後のコミットは 2 日前です。
- 何の言語で書かれている?
- 主に C++ です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月14日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
DART 7 main と DART 6 LTS の二系統
dartsim/dart の README は main が DART 7 の進行中再設計で、本番利用はまだ推奨しないと IMPORTANT ボックスで述べます。安定版は release-6.20 ブランチの DART 6 LTS で、ドキュメントは dart.readthedocs.io/en/stable/ です。DART 7 の docs は latest サイトを指します。説明文は「ロボット・アニメーション・ML 向け研究重視の C++23 物理エンジン、Python バインディング付き」と README と repo description が一致します。Gazebo 採用例は README の Why DART? に名前があります。 追加段落:README一次情報に基づき、本リポジトリの公開範囲はドキュメントとソースに限定されます。star数やfork数はGitHubメタデータ由来の注目指標であり、機能保証やSLAを意味しません。導入判断では、READMEが示す具体コマンド・設定キー・バージョン番号を手元環境で再現し、期待する入出力が得られるかを記録してください。READMEに無い性能数値、互換マトリックス、セキュリティ監査結果は推測で補わず、issue/リリースノート/公式サイトで確認できる事実だけを採用記録に残します。
Featherstone 動力学と World/Skeleton モデル
DART は一般化座標の連鎖剛体系に Featherstone Articulated Body Algorithm を使うと README が説明します。Quick Start の Python 例では dart.World(time_step=1.0/1000.0)、RigidBodyOptions で質量と位置を指定、add_rigid_body、enter_simulation_mode、step ループという流れが示されています。アーキテクチャ説明では World、Skeleton、BodyNode、ジョイント、衝突、制約ソルバーが層として整理されています。制約ソルバーは LCP 定式化で Dantzig を主、PGS をフォールバックと README にあります。 追加段落:README一次情報に基づき、本リポジトリの公開範囲はドキュメントとソースに限定されます。star数やfork数はGitHubメタデータ由来の注目指標であり、機能保証やSLAを意味しません。導入判断では、READMEが示す具体コマンド・設定キー・バージョン番号を手元環境で再現し、期待する入出力が得られるかを記録してください。READMEに無い性能数値、互換マトリックス、セキュリティ監査結果は推測で補わず、issue/リリースノート/公式サイトで確認できる事実だけを採用記録に残します。
衝突バックエンドと形状タイプ
README は衝突に FCL をデフォルトとし、Bullet、DART ネイティブ、ODE を選択肢として列挙します。形状は box、sphere、mesh、point cloud、voxel grid などが README に並びます。dart_gui は Filament ベース 3D 可視化で GLFW3 と Dear ImGui オーバーレイを使うと説明されています。使用統計や本番導入実績の数値は README では提供されていません。 追加段落:README一次情報に基づき、本リポジトリの公開範囲はドキュメントとソースに限定されます。star数やfork数はGitHubメタデータ由来の注目指標であり、機能保証やSLAを意味しません。導入判断では、READMEが示す具体コマンド・設定キー・バージョン番号を手元環境で再現し、期待する入出力が得られるかを記録してください。READMEに無い性能数値、互換マトリックス、セキュリティ監査結果は推測で補わず、issue/リリースノート/公式サイトで確認できる事実だけを採用記録に残します。
dartpy・モデル IO・DART 7 での SKEL 削除
dartpy は nanobind 製 Python API で、math/dynamics/collision/simulation 等をスネークケースで公開すると README にあります。dart::io API で URDF、SDF、MJCF を単一入口から読むと説明されています。DART 7 はレガシー SKEL サポートを削除したため、SKEL が必要なら release-6.* に留めるよう README が明示します。レガシー import は DeprecationWarning を出すが DART 7 公開契約外、とも README に書かれています。 追加段落:README一次情報に基づき、本リポジトリの公開範囲はドキュメントとソースに限定されます。star数やfork数はGitHubメタデータ由来の注目指標であり、機能保証やSLAを意味しません。導入判断では、READMEが示す具体コマンド・設定キー・バージョン番号を手元環境で再現し、期待する入出力が得られるかを記録してください。READMEに無い性能数値、互換マトリックス、セキュリティ監査結果は推測で補わず、issue/リリースノート/公式サイトで確認できる事実だけを採用記録に残します。
インストール表:pixi、conda、配布パッケージ
DART 7 Python は README 上、今日時点では source checkout + pixi run build が推奨経路です。PyPI の dartpy は安定 DART 6 系が latest non-yanked と README が警告します。uv/pip --pre は DART 7 wheel 公開後向け。C++ は pixi add dartsim-cpp、conda-forge、apt libdart-all-dev、brew install dartsim、vcpkg install dartsim:x64-windows 等が表にあります。CMake 4.2.3+ と pixi/conda-forge 依存管理が docs/onboarding にリンクされています。 追加段落:README一次情報に基づき、本リポジトリの公開範囲はドキュメントとソースに限定されます。star数やfork数はGitHubメタデータ由来の注目指標であり、機能保証やSLAを意味しません。導入判断では、READMEが示す具体コマンド・設定キー・バージョン番号を手元環境で再現し、期待する入出力が得られるかを記録してください。READMEに無い性能数値、互換マトリックス、セキュリティ監査結果は推測で補わず、issue/リリースノート/公式サイトで確認できる事実だけを採用記録に残します。
pixi スモークと rigid_body デモ
README の Current DART 7 Smoke Checks では、pixi run build 後 PYTHONPATH=build/default/cpp/Release/python pixi run python で World→add_rigid_body→step を実行する bash 断片があります。source checkout 手順は pixi install、pixi run py-demos -- --scene rigid_body --headless --frames 1、GUI 検証用 py-demos、rigid_solver_compare の capture コマンドが列挙されています。C++ World スモークは py-demos 並行で demos -- --scene rigid_body --headless --frames 1 と README にあります。 追加段落:README一次情報に基づき、本リポジトリの公開範囲はドキュメントとソースに限定されます。star数やfork数はGitHubメタデータ由来の注目指標であり、機能保証やSLAを意味しません。導入判断では、READMEが示す具体コマンド・設定キー・バージョン番号を手元環境で再現し、期待する入出力が得られるかを記録してください。READMEに無い性能数値、互換マトリックス、セキュリティ監査結果は推測で補わず、issue/リリースノート/公式サイトで確認できる事実だけを採用記録に残します。
テスト・CI と DART を選ぶ判断材料
onboarding ハンドブックは pixi run test-all で lint/build/test を回すと README が参照します。Linux CUDA ホストでは pixi run -e cuda test-all と記載があります。README は性能ベンチマークや SLA を出しておらず、BSD-2-Clause ライセンスのみ確認できます。採用判断は、必要 API が dart.World/add_rigid_body なのか DART 6 互換 API なのかを先に決め、branch が main か release-6.20 かを README の分岐説明どおり固定するのが現実的です。
編集部の結論
DART は Gazebo 連携や自前シミュレーション研究向きで、main の DART 7 は README が「本番非推奨」と明言する。安定運用なら release-6.20 の DART 6 LTS を選び、実験なら pixi run build 後に PYTHONPATH=build/default/cpp/Release/python で dart.World スモークを README 通り実行する。PyPI の dartpy が DART 6 系を指す点も README が警告しており、バージョン取り違えが最大の落とし穴です。
コミュニティノート