erwincoumans/tiny-differentiable-simulator
Tiny Differentiable Simulator is a header-only C++ and CUDA physics library for reinforcement learning and robotics with zero dependencies.
What it solves
Tiny Differentiable Simulator (TDS) provides a lightweight, high-performance physics engine designed for optimization and learning. It solves the problem of needing a physics simulator that is differentiable, allowing developers to calculate gradients of the simulation results with respect to its parameters, which is essential for system identification and identification of physical properties.
How it works
TDS is a header-only C++ and CUDA library with zero dependencies. It implements rigid-body dynamics algorithms, including forward and inverse dynamics, and contact models based on impulse-level LCP and force-based nonlinear spring-dampers. To enable differentiability, the entire codebase is templatized, allowing the use of automatic differentiation (AD) scalar types from libraries like CppAD, Stan Math fvar, and ceres::Jet, as well as standard float/double precision or fix-point integer math for deterministic computation.
Who it’s for
Researchers and engineers working in robotics, control theory, and sim-to-real transfer,者は a need for high-performance, GPU-accelerated simulation of articulated bodies.
Highlights
- Differentiable Physics: Supports forward- and reverse-mode automatic differentiation for optimization.
- GPU Acceleration: Capable of running thousands of parallel simulations on a single RTX 2080 GPU at 50 FPS.
- Zero Dependencies: Header-only C++ implementation for easy integration.
- Actuator Models: Includes built-in models for motors, servos, and Series-Elastic Actuators (SEA).
- Flexible Visualization: Supports both native OpenGL 3+ and web-based MeshCat visualization.
Related
- Project
- Project
- Project
- Project