newton.controllers.DifferentialIKMethod#

class newton.controllers.DifferentialIKMethod(*values)[source]#

Bases: Enum

Inverse-Jacobian solve method for ControllerDifferentialIKModelFree/ControllerDifferentialIK.

Import directly from newton.controllers, the same way as any other top-level enum (e.g. JointTargetMode): from newton.controllers import DifferentialIKMethod.

ADAPTIVE_DAMPING = 'adaptive_damping'#

Damped least squares with λ computed each step from JJᵀ’s smallest eigenvalue (Maciejewski-Klein singularity-robust damping), instead of a fixed damping. Requires damping=None and adaptive_damping_min/adaptive_damping_max/adaptive_damping_threshold.

DAMPED_LEAST_SQUARES = 'damped_least_squares'#

q̇ = bandwidth · Jᵀ(JJᵀ + λ²I)⁻¹e. The default; uses damping.

PSEUDO_INVERSE = 'pseudo_inverse'#

Zero-damping Moore-Penrose pseudo-inverse (λ = 0 in the same solve). Requires every robot to have at least as many controlled DOFs as its own task dimension (the number of nonzero axis_weight entries), and damping=None (there is no λ to set).

TRANSPOSE = 'transpose'#

q̇ = bandwidth · Jᵀe, no matrix inversion. Requires damping=None (there is no λ to set).

TRUNCATED_SVD = 'truncated_svd'#

a task-space direction with singular value above truncated_svd_threshold is inverted exactly (1/sigma²), one below it is dropped entirely (0) rather than damped. Requires damping=None and truncated_svd_threshold.

Type:

Per-direction pseudo-inverse from JJᵀ’s full eigendecomposition