Contents · Physics Engines
Part 0 · Orientation
Part 1 · Mathematical Foundations
Part 2 · Equations of Motion
- The Manipulator Equation
- Featherstone: ABA, CRBA, and RNEA
Part 3 · Time Integration
Part 4 · Collision Detection
Part 5 · Contact & Constraints
Part 6 · Constraint Solvers
Part 7 · Position-Based Dynamics
Part 8 · GPU & Parallelism
Part 9 · Differentiable Simulation
Part 2 · Equations of Motion
Featherstone: ABA, CRBA, and RNEA
Forward dynamics is the simulator's inner loop: given joint torques, solve
for . The question is how expensive that solve has to be.
The cost of doing it naively
The obvious method: build the mass matrix , then factorize the dense system. Building with the Composite Rigid Body Algorithm is ; factorizing and solving is . For a short arm that is fine. For a long chain it is wasteful, because the structure of a kinematic tree already tells you the answer more cheaply.
At n = 20, the dense route does about 400× the work of ABA. CRBA (building M alone) sits in between at O(n²).
The articulated-body algorithm
Featherstone's Articulated-Body Algorithm computes in three sweeps over the tree, never forming explicitly.1 Written in the spatial-vector notation, each sweep is a short recursion:
- Outward (base to tips). Propagate link velocities and the velocity-product (bias) terms.
- Inward (tips to base). Propagate articulated-body inertias and bias forces. This pass is the trick: it summarizes each subtree as an effective inertia its parent feels.
- Outward again. With those articulated inertias in hand, solve for joint accelerations one link at a time.
Every link is touched a constant number of times, so the whole thing is . The propagation of articulated-body inertias is, in Featherstone and Orin's words, "the secret of the complexity of the ABA."1
Its siblings complete the toolkit:2 RNEA does inverse dynamics () in , and CRBA builds the mass matrix itself in when you actually want (for a controller, or an operational-space projection).
Why engines care
This recursion is the engine behind minimal-coordinate simulators: MuJoCo, Drake, and RaiSim all live here, and it is exactly the "reduced-coordinate articulation" mode that PhysX and Bullet fall back on for robot models (see the landscape). Two further points make it central: the algorithm is numerically well conditioned (no explicit inverse), and it has closed-form analytic derivatives, also ,3 which is what lets these engines feed gradients into optimization and learning.
With state, equations of motion, and a fast way to solve them in hand, Part 3 turns to the other half of the loop: advancing that in time without leaking energy.
Footnotes
-
Featherstone & Orin, Robot Dynamics: Equations and Algorithms (ICRA 2000). ↩ ↩2
-
Featherstone, Rigid Body Dynamics Algorithms (Springer, 2008). ↩
-
Carpentier & Mansard, Analytical Derivatives of Rigid Body Dynamics Algorithms (RSS 2018). ↩