adam - Rigid-Body Dynamics for Floating-Base Robots

adam - Rigid-Body Dynamics for Floating-Base Robots#

Automatic Differentiation for rigid-body-dynamics AlgorithMs

adam computes rigid-body dynamics for floating-base robots. Choose from multiple backends depending on your use case:

  • 🔥 JAX – JIT compilation, batched operations, and differentiation with XLA

  • 🎯 CasADi – Symbolic computation for optimization and control

  • 🔦 PyTorch – GPU acceleration, batched operations and differentiation

  • 🐍 NumPy – Simple numerical evaluation

All backends share the same API and produce numerically consistent results, letting you pick the tool that fits your workflow.

Model Loading

Core Features#

Kinematics & Geometry
  • Forward kinematics for any frame

  • Jacobians for any frame

  • Jacobian time derivatives

Dynamics
  • Mass matrix computed via Composite Rigid Body Algorithm (CRBA)

  • Bias forces (Coriolis and centrifugal forces + gravity term) computed via Recursive Newton-Euler Algorithm (RNEA)

  • Articulated Body Algorithm (ABA)

Centroidal Dynamics
  • Centroidal momentum matrix via the Composite Rigid Body Algorithm

  • Center of mass position and Jacobian

Automatic Differentiation
  • Gradients with JAX and PyTorch

  • Symbolic computation with CasADi

Advanced Features
  • Parametric models for shape/inertia optimization

  • Inverse kinematics (CasADi)

  • MuJoCo integration

  • Batch processing (PyTorch and JAX)

Philosophy#

Built on Roy Featherstone’s Rigid Body Dynamics Algorithms, adam provides a composable interface across multiple backends. Consistency is guaranteed through extensive testing against iDynTree.

Resources#

License#

BSD 3-Clause License – view license