Loading repository data…
Loading repository data…
erwincoumans / repository
Tiny Differentiable Simulator is a header-only C++ and CUDA physics library for reinforcement learning and robotics with zero dependencies.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Tiny Differentiable Simulator is a header-only C++ (and CUDA) physics library with zero dependencies.
It currently implements various rigid-body dynamics algorithms, including forward and inverse dynamics, as well as contact models based on impulse-level LCP and force-based nonlinear spring-dampers. Actuator models for motors, servos, and Series-Elastic Actuator (SEA) dynamics are implemented.
The entire codebase is templatized so you can use forward- and reverse-mode automatic differentiation scalar types, such as CppAD, Stan Math fvar and ceres::Jet. The library can also be used with regular float or double precision values. Another option is to use the included fix-point integer math, that provide cross-platform deterministic computation.
TDS can run thousands of simulations in parallel on a single RTX 2080 CUDA GPU at 50 frames per second:
https://user-images.githubusercontent.com/725468/135697035-7df34b85-c73e-4739-9a76-dc114ce84c4c.mp4
Multiple visualizers are available, see below.

Please use the following reference to cite this research:
@inproceedings{heiden2021neuralsim,
author = {Heiden, Eric and Millard, David and Coumans, Erwin and Sheng, Yizhou and Sukhatme, Gaurav S},
year = {2021},
title = {Neural{S}im: Augmenting Differentiable Simulators with Neural Networks},
booktitle = {Proceedings of the IEEE International Conference on Robotics and Automation (ICRA)},
url = {https://github.com/google-research/tiny-differentiable-simulator}
}
The open-source version builds using CMake and requires a compiler with C++17 support.
mkdir build
cd build
cmake ..
make -j
For visualization, two options are supported:
This visualizer is native part of this library under src/visualizer/opengl
A C++ ZMQ interface is provided.
Before running the example, install python, pip and meshcat, run the meshcat-server and open the web browser (Chrome is recommended for a good three.js experience.)
pip install meshcat
meshcat-server --open
This should open Chrome at http://localhost:7000/static/
Then compile and run tiny_urdf_parser_meshcat_example in optimized/release build.
URDF files can be loaded using a provided parser based on TinyXML2.
All dependencies for meshcat visualization are included in third_party.
Disclaimer: This is not an official Google product.