// the find
dartsim/dart
Research-focused C++23 physics engine for robotics, animation, and machine learning, with Python bindings
DART is a C++ physics engine built for robotics research, using Featherstone's Articulated Body Algorithm and generalized coordinates to give you direct access to dynamics quantities rather than hiding them behind a black-box solver. It powers Gazebo and has Python bindings via nanobind. The target audience is researchers who need to inspect, modify, or extend the physics stack — not game developers or production simulation teams looking for a drop-in.
- Featherstone ABA with generalized coordinates means you can actually read out Jacobians, mass matrices, and Coriolis terms without fighting the API — most physics engines treat these as internal implementation details.
- Unified model loading across URDF, SDF, MJCF, and SKEL through a single parser interface saves the usual glue code when switching between robot descriptions.
- The native collision module is genuinely built out: GJK, MPR, SAT, CCD, ESDF/TSDF signed-distance fields, and multiple broad-phase strategies (AABB tree, sweep-and-prune, spatial hash) — not just a thin wrapper around Bullet or FCL.
- Package distribution is unusually good for a C++ project: conda-forge, pip (dartpy), vcpkg, apt, brew, and pixi for reproducible source builds all work.
- The DART 6 → DART 7 transition is actively in-flight and the README says so openly: package managers still serve DART 6, the C++ public header API is 'still in progress', and the smoke check examples show conflicting naming conventions (getPositions vs get_positions) between versions. Adopting main right now means building from source and accepting API churn.
- GPU and multi-core compute are explicitly 'roadmap' items — the engine is CPU-only today, which matters for large-scale ML training workflows where MuJoCo's GPU batching is a real competitive advantage.
- 1,100 stars for the project that underlies Gazebo suggests most users never interact with DART directly — documentation and onboarding are oriented toward researchers already familiar with rigid body dynamics, not people trying to get a robot arm moving in an afternoon.
- The `.claude/`, `.codex/`, `.opencode/` directories in the tree show heavy AI-agent tooling investment, which is fine, but the sheer volume of agent scaffolding relative to the codebase size raises a question about where maintainer attention is actually going.