NEW: We now have an analytically differentiable version! See the the notes and the reference MATLAB implementation.
Redmax was also used for differentiable hand simulation, which was presented at RSS 2021. The associated github repository contains the C++ implementation of redmax with Python bindings.
notes.pdf
: An extensive writeup with details on:- Maximal coordinates
- Reduced coordinates
- Analytical derivatives
- Implicit integration
- Adjoint method
matlab-diff
: Object-oriented MATLAB implementation of differentiable redmax- Fully implicit time integration: BDF1 and BDF2
- Parameter optimization with the adjoint method
- Frictional contact with the ground [Geilinger et al. 2020]
matlab-simple
: Simpler object-oriented MATLAB implementation for getting startedmatlab
: Object-oriented MATLAB implementation with many features, including:- Recursive hybrid dynamics (Featherstone's algorithm) for comparison
- Time integration using
ode45
oreuler
- Frictional dynamics with Bilateral Staggered Projections
- Spline curve and surface joints [Lee and Terzopoulos 2008]
c++
: C++ implementation including Projected Block Jacobi Preconditioner
ACM Transactions on Graphics, 38 (4) 104:1-104:10 (SIGGRAPH), 2019.
Ying Wang, Nicholas J. Weidner, Margaret A. Baxter, Yura Hwang, Danny M. Kaufman, Shinjiro Sueda
@article{Wang2019,
author = {Wang, Ying and Weidner, Nicholas J. and Baxter, Margaret A. and Hwang, Yura and Kaufman, Danny M. and Sueda, Shinjiro},
title = {\textsc{RedMax}: Efficient \& Flexible Approach for Articulated Dynamics},
year = {2019},
issue_date = {July 2019},
publisher = {ACM},
address = {New York, NY, USA},
volume = {38},
number = {4},
issn = {0730-0301},
url = {https://doi.org/10.1145/3306346.3322952},
doi = {10.1145/3306346.3322952},
journal = {{ACM} Trans.\ Graph.},
month = jul,
articleno = {104},
numpages = {10},
keywords = {friction, rigid body dynamics, physical simulation, constraints, contact}
}