ABA (Articulated Body Algorithm)#
Overview#
The Articulated Body Algorithm (ABA) is Featherstone’s recursive forward-dynamics algorithm: given joint positions, velocities, and applied torques, compute joint accelerations directly without forming or inverting the mass matrix.
GRiD also provides a forward_dynamics variant that composes
Minv (Direct Mass-Matrix Inverse) ∘ inverse_dynamics (RNEA / Recursive Newton-Euler Algorithm) (i.e. qdd = M⁻¹·(τ − c)). The two
forward-dynamics paths are independent implementations; the
library exposes both so users can choose by their downstream workload.
Signature#
qdd = rbd.aba(q, qd, tau, f_ext=[], GRAVITY=-9.81)
Implementation#
The Python reference is RBDReference.aba in
RBDReference/RBDReference.py. CUDA codegen lives in
grid_codegen/algorithms/_aba.py.
In GRiD#
On every handle, qdd = h.aba(q, qd, u) takes q at (B, h.nq) and
qd, u at (B, h.nv), and returns the accelerations at
(B, h.nv), the tangent width. See Input / Output ABI (h_q_qd_u) and
Python Wrappers (grid-rbd).
It takes the same optional
per-body external forces as inverse dynamics (f_ext, shape
(B, 6*num_bodies), body-major, [angular; linear] in each body’s local
frame) and the signed gravity (default -9.81). h.forward_dynamics gives
the same accelerations through the mass-matrix-inverse path,
qdd = M⁻¹·(u − c); the two are independent implementations. The current
release table collects forward_dynamics, not a separate GRiD aba row.
The forward-dynamics gradient and the
second-order FDSVA-SO (Forward Dynamics, Second-Order) are built on the forward_dynamics path, so a
workload that needs derivatives usually calls that one for the value as
well.
The CUDA host entries are grid::aba and grid::forward_dynamics, each
with a _compute_only variant. In fp32 the forward-dynamics family can
amplify rounding on high-velocity states; the release collection retains
eligible cells under the explicit relative-L2 warning gate, not every
entrywise failure (see the
release measurements).
See Also#
inverse_dynamics (RNEA / Recursive Newton-Euler Algorithm) — inverse dynamics counterpart (RNEA).
Minv (Direct Mass-Matrix Inverse) — direct mass-matrix inverse (used by the FD variant).
CRBA (Composite Rigid Body Algorithm) — composite-rigid-body mass matrix.