Skip to content


Switch branches/tags


Failed to load latest commit information.
Latest commit message
Commit time

REDMAX: Efficient & Flexible Approach for Articulated Dynamics

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 started
  • matlab: Object-oriented MATLAB implementation with many features, including:
    • Recursive hybrid dynamics (Featherstone's algorithm) for comparison
    • Time integration using ode45 or euler
    • 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

  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 = {},
  doi = {10.1145/3306346.3322952},
  journal = {{ACM} Trans.\ Graph.},
  month = jul,
  articleno = {104},
  numpages = {10},
  keywords = {friction, rigid body dynamics, physical simulation, constraints, contact}