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
URDF files – standard robot description format (see Quickstart Examples)
MuJoCo models – direct integration with
MjModelobjects (see MuJoCo Integration)
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#
Examples: See the examples folder for notebooks and scripts
Tests: The tests folder contains comprehensive usage patterns
License#
BSD 3-Clause License – view license
Getting Started: