FDSVA-SO (Forward Dynamics, Second-Order)#
Overview#
FDSVA-SO computes the second-order partials of forward dynamics \(\partial^2 \ddot q / \partial \cdot \partial \cdot\) by combining IDSVA-SO with first-order forward-dynamics gradients, following Singh, Russell, & Wensing (arXiv:2302.06001).
The inner pass reuses the IDSVA-SO variant selected by the dispatcher (body-frame inner for fixed-base, world-frame inner for floating-base), so FDSVA-SO inherits the same per-base-type performance crossover.
Implementation#
The reference implementation is RBDReference.fdsva_so in
RBDReference/RBDReference.py. The CUDA kernel codegen
lives in
grid_codegen/algorithms/_fdsva_so.py.
Example Usage#
from RBDReference import RBDReference
rbd = RBDReference(robot)
out = rbd.fdsva_so(q, qd, u)
Performance Characteristics#
On sm_120 (RTX 5090) g1_floating requires the
workspace_temp_spill tier to fit under the 100 KiB per-block cap;
all smaller robots and base configurations fit in lower tiers. See the
generated benchmark report for current per-cell numbers.
See Also#
IDSVA / IDSVA-SO (Inverse Dynamics, Second-Order) — second-order inverse dynamics (the inner pass)