Python backend interfaces#
This selected-method inventory is checked against the handle class definitions
by docs/test_doc_examples.py. Yes means the Python method exists, not
that every robot, dtype, convention or derivative order is supported. It is
not a GPU validation matrix or a promise of arbitrary-order framework autodiff.
Method |
NumPy |
JAX |
PyTorch |
|---|---|---|---|
inverse_dynamics |
Yes |
Yes |
Yes |
inverse_dynamics_gradient |
Yes |
Yes |
Yes |
idsva_so |
Yes |
Yes |
Yes |
minv |
Yes |
Yes |
Yes |
crba |
Yes |
Yes |
Yes |
aba |
Yes |
Yes |
Yes |
forward_dynamics |
Yes |
Yes |
Yes |
forward_dynamics_gradient |
Yes |
Yes |
Yes |
fdsva_so |
Yes |
Yes |
Yes |
inverse_dynamics_regressor |
Yes |
Yes |
Yes |
inverse_dynamics_wrt_params |
No |
Yes |
Yes |
forward_dynamics_wrt_params |
No |
Yes |
Yes |
forward_dynamics_parameter_gradient |
No |
Yes |
Yes |
end_effector_pose |
Yes |
Yes |
Yes |
end_effector_pose_gradient |
Yes |
Yes |
Yes |
end_effector_pose_hessian |
Yes |
Yes |
Yes |
end_effector_pose_runtime |
Yes |
Yes |
Yes |
end_effector_pose_gradient_runtime |
Yes |
Yes |
Yes |
fk_batched |
Yes |
No |
No |
frame_jacobian |
Yes |
Yes |
Yes |
frame_jacobian_dot |
Yes |
Yes |
Yes |
osc_inertia |
Yes |
Yes |
Yes |
com |
Yes |
Yes |
Yes |
ccrba |
Yes |
Yes |
Yes |
dccrba |
Yes |
Yes |
Yes |
cmm_time_variation |
Yes |
Yes |
Yes |
integrator |
Yes |
Yes |
Yes |
integrator_gradient |
Yes |
Yes |
Yes |
plant_step |
Yes |
Yes |
Yes |
plant_step_gradient |
Yes |
Yes |
Yes |
plant_step_hessian |
Yes |
No |
No |
quadratic_state_cost |
Yes |
Yes |
Yes |
com_cost |
Yes |
Yes |
Yes |
momentum_cost |
Yes |
Yes |
Yes |
capture |
No |
No |
Yes |
How to interpret availability#
An absent interface is a
Noabove. For example, framework handles do not exposeplant_step_hessian. NumPy exposes a regressor, not the separate frameworkinverse_dynamics_wrt_paramsmethod.A method may exist but not be built: its operation was not selected for this robot artifact. Check the artifact’s available operations as described in Python Wrappers (grid-rbd); a different method call cannot add generated code.
An unsupported combination is one where a generator or binding rejects the requested joint type, integration scheme or convention. See CUDA Support Status and the individual algorithm pages. An untested combination is not evidence of support or of a failure.
A resource limit arises when generated code exceeds the target GPU’s launch or memory limits for a particular robot or batch. Interface presence does not remove those limits.
Use the release measurements and linked receipts for the configurations actually measured or validated.
Joint and interface restrictions#
This is the one place these restrictions are listed; the other pages link here. It is a coverage summary, not a guarantee for every combination of joint type, algorithm, backend and GPU resource budget.
Joint types: planar and translation joints are decomposed into scalar-joint chains by the parser; mimic joints retain dependent bodies but reduce coordinates. Mimic and spherical
minvuse a dense inverse of the reduced CRBA matrix rather than the scalar-joint direct-inverse recursion.NumPy-only methods:
fk_batchedis a NumPy-only, restricted single-leaf pose helper; it is not emitted for spherical models or models with more than 32 joints.plant_step_hessianis available on the NumPy handle and the CUDA interface, not the JAX/PyTorch handles; it supports Euler and semi-implicit Euler on fixed and floating bases, not multi-stage RK, and the artifact must include itsfdsva_sodependency.Integrators: multi-stage integrator gradients are not supported for spherical joints or MuJoCo-output twins; MuJoCo-output integration supports Euler/semi-implicit Euler only.
Costs: momentum costs use the full
2*NVtangent-state gradient and Gauss–Newton Hessian, requiringdccrba.Differentiation scope: first-order autograd (torch
backward,jax.grad/vjp) runs the analytic gradient kernels viacustom_vjp/autograd.Function; higher-order differentiation through them is not provided. Second-order tensors (idsva_so,fdsva_so, the explicit Hessians) are values, not autograd-composable operators.*_wrt_paramsandforward_dynamics_parameter_gradientare JAX/PyTorch interfaces (the NumPy handle exposes the regressor) and are local sensitivities of the compiled model, not parameterized functions.captureis PyTorch-only.
See Kinematics (end-effector pose, Jacobian, Hessian) and Integrators and the plant layer for shapes and method scope before selecting a method; CUDA Support Status is the catalog of generated CUDA paths.