Bullet Physics SDK, a C++ library for real-time collision detection and multi-physics simulation used in games, VR, robotics and machine learning.
dartsim/dart
C++17 physics library with Python bindings for kinematics, dynamics and contact simulation of articulated robots and animated characters.
Open-source alternative to:MATLAB Simscape Multibody
- Stars
- 1,224
- Forks
- 307
- Open issues
- 13
- Last commit
- 8 hours ago
What is it?
DART (Dynamic Animation and Robotics Toolkit) is a C++17 library with Python bindings (dartpy) for simulating articulated rigid and soft bodies. It represents systems in generalized coordinates and computes motion with Featherstone's Articulated Body Algorithm, and exposes the mass matrix, Coriolis and gravity forces, Jacobians and their derivatives.
The engine handles contact through LCP-based solvers (Dantzig and PGS), joint limits and closed kinematic loops. Collision detection can use FCL (default), Bullet, ODE or DART's own detector. Robot and scene models are loaded from URDF, SDF, SKEL and MJCF (experimental) files, and hierarchical whole-body inverse kinematics is included. DART also serves as the physics backend for Gazebo through gz-physics.
The library is available through pip, conda-forge, vcpkg, Homebrew and several Linux distributions, and can be built from source with pixi.
Key features
- 01Dynamics in generalized coordinates via Featherstone's Articulated Body Algorithm
- 02LCP-based contact with Dantzig and PGS solvers, plus soft-body support
- 03Collision detection backends including FCL, Bullet, ODE and a native detector
- 04Model loading from URDF, SDF, SKEL and experimental MJCF files
- 05Hierarchical whole-body inverse kinematics with analytical solver support
- 06C++ API and dartpy Python bindings
Use cases
- Simulating humanoid or manipulator robots for control and motion-planning research
- Prototyping whole-body control with inverse kinematics and operational-space methods
- Generating physically plausible character animation with articulated bodies
- Serving as a physics backend for robotics simulators such as Gazebo
Quick start
- 1
Install the Python package
pip install dartpy - 2
Install the C++ package on Ubuntu / Debian
sudo apt install libdart-all-dev - 3
Install the C++ package on macOS with Homebrew
brew install dartsim
Things to know
- Development branch main may change; stable behavior requires a tagged release or package install.
- Distribution packages can lag behind the latest release.
- PyPI wheels cover only the most common platforms and Python versions.
In collections
Topics
FAQ
- What is dart?
- C++17 physics library with Python bindings for kinematics, dynamics and contact simulation of articulated robots and animated characters. DART (Dynamic Animation and Robotics Toolkit) is a C++17 library with Python bindings (dartpy) for simulating articulated rigid and soft bodies. It represents systems in generalized coordinates and computes motion with Featherstone's Articulated Body Algorithm, and exposes the mass matrix, Coriolis and gravity forces, Jacobians and their derivatives.
- Is dart free to use? What license does it have?
- dart is open source under the BSD-2-Clause license. Check the license terms before using it in commercial products.
- Is dart still maintained?
- Actively maintained. The last commit to dart was on Nov 7, 2026.
- What can I use dart for?
- Simulating humanoid or manipulator robots for control and motion-planning research Prototyping whole-body control with inverse kinematics and operational-space methods Generating physically plausible character animation with articulated bodies Serving as a physics backend for robotics simulators such as Gazebo
- How do I install dart?
- Install the Python package: pip install dartpy Install the C++ package on Ubuntu / Debian: sudo apt install libdart-all-dev Install the C++ package on macOS with Homebrew: brew install dartsim
- Where can I get dart?
- The source code and installation instructions are on GitHub: https://github.com/dartsim/dart
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Open-source C++ multibody dynamics library for simulating articulated systems such as robots, vehicles, and human skeletons.
C++ multiphysics library for simulating rigid and flexible multibody systems, granular media, fluid-solid interaction, and vehicles and robots.
A C++ batched environment pool for reinforcement learning that runs many Gym-style environments in parallel with a thread pool.
A multi-core friendly C++ rigid body physics and collision detection library for games and VR applications.
A differentiable rigid-body physics engine built on JAX for robot control, co-design and robot learning.