Retour au classement

dartsim/dart

C++dart.readthedocs.io

Research-focused C++23 physics engine for robotics, animation, and machine learning, with Python bindings

roboticscomputer-animationsimulationkinematicsdynamicslie-groupinverse-kinematicsurdfcollision-detectiongazebomjcfphysics-engine
Croissance des étoiles
Étoiles
1.2k
Forks
301
Croissance hebdomadaire
Issues
1
5001k
févr. 2013juil. 2017janv. 2022juil. 2026
README

DART

DART: Dynamic Animation and Robotics Toolkit

CI Ubuntu CI macOS CI Windows
Documentation Status Ask DeepWiki codecov Codacy Badge
Anaconda-Server Badge PyPI Version License

DART (Dynamic Animation and Robotics Toolkit) is an open-source, research-focused physics engine for robotics, animation, and machine learning. It provides transparent kinematics, dynamics, collision, and constraint-solving foundations for users who need more than a black-box simulator. DART uses generalized coordinates for articulated rigid body systems and Featherstone's Articulated Body Algorithm for accurate, stable motion dynamics.

[!IMPORTANT] Which DART is this? This main branch tracks DART 7, an in-progress redesign that is not yet recommended for production use. Its documentation is the latest site.

For a stable release, use DART 6 LTS: documentation · release-6.20 branch.

Unitree G1 humanoid demo

Why DART?

  • Research-grade dynamics — Featherstone algorithms, generalized coordinates, and direct access to dynamics quantities
  • Easy to start — Python and C++ packages through common package managers, plus reproducible source builds with pixi
  • Extensible foundations — Math, native collision, constraints, model loading, benchmarks, and tests that support new algorithms and baseline comparisons
  • Unified model loading — Load URDF, SDF, and MJCF models through a single API
  • Scalable compute roadmap — Cross-platform CPU support today, with roadmap work for multi-core, SIMD, and accelerator backends
  • Battle-tested ecosystem — Powers Gazebo, research labs, and production systems worldwide, with best-effort support for production use

Quick Start

Python

import dartpy as dart
import numpy as np

world = dart.World(time_step=1.0 / 1000.0)

# Add a 1 kg rigid body one metre above the origin.
options = dart.RigidBodyOptions()
options.mass = 1.0
options.position = np.array([0.0, 0.0, 1.0])
box = world.add_rigid_body("box", options)

# Lock topology, then simulate 100 steps.
world.enter_simulation_mode()
for _ in range(100):
    world.step()

print(f"t = {world.time:.3f} s, box z = {float(box.translation[2]):.3f} m")

C++

The DART 7 C++ simulation facade is available in source builds while the final public header transaction is still in progress. Use the C++ API shape recorded in docs/design/simulation_cpp_api.md for current source-checkout examples; DART 6 C++ snippets remain on the release-6.* branches for compatibility-line users.

Installation

The quick-start snippets above target the current main branch and DART 7 API. The tracked DART 7 wheel lane builds CPython 3.14 wheels on Linux, macOS, and Windows, but PyPI currently serves the stable DART 6 line as the latest non-yanked dartpy package. Use the source checkout path for the DART 7 Python facade until a non-yanked DART 7 wheel is published.

Method Command
source checkout (DART 7 today) pixi run build from this repository
uv/pip (DART 7 after wheel publish) uv add dartpy --prerelease allow / pip install --pre dartpy
pixi (DART 6 stable today) pixi add dartpy
conda (DART 6 stable today) conda install -c conda-forge dartpy

C++

Platform Command
Cross-platform (recommended) pixi add dartsim-cpp or conda install -c conda-forge dartsim-cpp
Ubuntu sudo apt install libdart-all-dev
Arch Linux yay -S libdart
FreeBSD pkg install dartsim
macOS brew install dartsim
Windows vcpkg install dartsim:x64-windows

All distributions →

Current DART 7 Smoke Checks

These snippets create a tiny model in code, so they do not depend on sample data files being present. The Python snippet targets a DART 7 source build; if dart.World or add_rigid_body is missing, the environment resolved a stable DART 6 package and should use the stable documentation.

Python source build

Run this after pixi run build from a source checkout:

PYTHONPATH=build/default/cpp/Release/python pixi run python - <<'PY'
import dartpy as dart

world = dart.World()
body = world.add_rigid_body("box", dart.RigidBodyOptions())
world.enter_simulation_mode()
world.step()
print(f"t = {world.time:.4f} s, box position = {body.translation}")
PY

C++ package

The published C++ package smoke for the compatibility line is maintained on release-6.*. DART 7 C++ package smoke checks move through check-dart7-artifacts and the local source-checkout promotion gates until DART 7 C++ artifacts are published.

Source checkout

pixi install
# Smoke the Python-first DART 7 rigid-body demo surface.
pixi run py-demos -- --scene rigid_body --headless --frames 1

# Open the curated rigid-body GUI verifier.
pixi run py-demos
pixi run py-demos -- --scene rigid_solver_compare

# Capture docked visual evidence for the solver comparison.
pixi run py-demo-capture -- --scene rigid_solver_compare --frames 24 --width 960 --height 540 --show-ui

# Optional C++ World-only companion smoke.
pixi run demos -- --scene rigid_body --headless --frames 1

The full 36-row rigid-body visual verification workflow, Rigid Workflow search terms, and capture commands are in the Python demos README.

Documentation

Developer Resources

Branches

  • main — Active development targeting DART 7 (not yet production-ready)
  • release-6.20 — Maintenance branch for DART 6 LTS (critical fixes only); see the DART 6 documentation

Citation

If you use DART in an academic publication, please consider citing this JOSS Paper:

@article{Lee2018,
  doi = {10.21105/joss.00500},
  url = {https://doi.org/10.21105/joss.00500},
  year = {2018},
  publisher = {The Open Journal},
  volume = {3},
  number = {22},
  pages = {500},
  author = {Jeongseok Lee and Michael X. Grey and Sehoon Ha and Tobias Kunz and Sumit Jain and Yuting Ye and Siddhartha S. Srinivasa and Mike Stilman and C. Karen Liu},
  title = {DART: Dynamic Animation and Robotics Toolkit},
  journal = {Journal of Open Source Software}
}

License

DART is licensed under the BSD 2-Clause License.

Star History

Star History Chart
Dépôts similaires
Developer-Y/cs-video-courses

List of Computer Science courses with video lectures.

computer-sciencealgorithms
82.6k11.4k
commaai/openpilot

openpilot is an operating system for robotics. Currently, it upgrades the driver assistance system on 300+ supported cars.

PythonPyPIMIT Licensedriver-assistance-systemsrobotics
comma.ai/openpilot
63.2k11.2k
NaiboWang/EasySpider

A visual no-code/code-free web crawler/spider易采集:一个可视化浏览器自动化测试/数据采集/网页爬虫软件,可以无代码图形化的设计和执行爬虫任务。别名:ServiceWrapper面向Web应用的智能化服务封装系统。

JavaScriptnpmGNU Affero General Public License v3.0code-freecrawler
easyspider.net
44.3k5.4k
AtsushiSakai/PythonRobotics

Python sample codes and textbook for robotics algorithms.

PythonPyPIOtherpythonrobotics
atsushisakai.github.io/PythonRobotics/
30.1k7.4k
wechaty/wechaty

Conversational RPA SDK for Chatbot Makers. Join our Discord: https://discord.gg/7q8NBZbQzt

TypeScriptnpmApache License 2.0wechatychatbot
wechaty.js.org
22.9k2.8k
zauberzeug/nicegui

Create web-based user interfaces with Python. The nice way.

PythonPyPIMIT Licenseguipython
nicegui.io
16k936
ArduPilot/ardupilot

ArduPlane, ArduCopter, ArduRover, ArduSub source

C++GNU General Public License v3.0arducopterardupilot
ardupilot.org
15.5k21.1k
TianxingChen/Embodied-AI-Guide

[Lumina具身智能社区] 具身智能技术指南 Embodied-AI-Guide

Otherembodied-aiguide
github.com/TianxingChen/Embodied-AI-Guide
15k958
bulletphysics/bullet3

Bullet Physics SDK: real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc.

C++Othersimulationrobotics
bulletphysics.org
14.6k3.1k
google-deepmind/mujoco

Multi-Joint dynamics with Contact. A general purpose physics simulator.

C++Apache License 2.0roboticsphysics
mujoco.org
14.3k1.6k
DLR-RM/stable-baselines3

PyTorch version of Stable Baselines, reliable implementations of reinforcement learning algorithms.

PythonPyPIMIT Licensereinforcement-learningreinforcement-learning-algorithms
stable-baselines3.readthedocs.io
13.6k2.2k
rwaldron/johnny-five

JavaScript Robotics and IoT programming framework, developed at Bocoup.

JavaScriptnpmOtherjavascriptarduino
johnny-five.io
13.4k1.7k