finds.dev← search

// the find

dartsim/dart

★ 1,110 · C++ · BSD-2-Clause · updated Jun 2026

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.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →