Source code for isaaclab_newton.ik.newton_ik_solver_cfg
# Copyright (c) 2022-2026, The Isaac Lab Project Developers (https://github.com/isaac-sim/IsaacLab/blob/main/CONTRIBUTORS.md).
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause
from __future__ import annotations
from isaaclab.utils.configclass import configclass
[docs]
@configclass
class NewtonIKSolverCfg:
"""Configuration for the Newton inverse-kinematics solver.
Holds solver hyperparameters only. Objectives (and their residual weights)
are configured separately as a list of
:class:`~isaaclab_newton.ik.newton_ik_objectives_cfg.NewtonIKObjectiveCfg`
passed to the solver. Command semantics for manager-based actions
(``command_type``, ``use_relative_mode``) live on the action cfg.
:attr:`class_type` selects the solver implementation, so an alternative
solver can be dropped in via config without changing callers.
"""
class_type: type | str = "isaaclab_newton.ik.newton_ik_solver:NewtonIKSolver"
"""Solver implementation, as a type or a ``"module:Class"`` string.
Instantiated as ``class_type(cfg, model=..., num_envs=..., device=...,
objectives=..., link_resolver=...)``.
"""
optimizer: str = "lm"
"""Newton IK optimizer backend. Supported values are ``"lm"`` and ``"lbfgs"``."""
jacobian_mode: str = "analytic"
"""Newton IK Jacobian backend. Supported values are ``"analytic"``, ``"autodiff"``, and ``"mixed"``."""
sampler: str = "none"
"""Initial seed sampler. Supported values are ``"none"``, ``"gauss"``, ``"roberts"``, and ``"uniform"``."""
n_seeds: int = 1
"""Number of candidate seeds per IK problem. Must be ``1`` when ``sampler="none"``."""
noise_std: float = 0.1
"""Gaussian sampling standard deviation used when ``sampler="gauss"``."""
rng_seed: int = 12345
"""Random seed used by stochastic samplers."""
iterations: int = 24
"""Number of Newton IK solver iterations per action application.
The default keeps manager-based action applications affordable while still
giving the Newton solver several refinement steps per control update.
Increase this for harder targets or tighter residual requirements.
"""
step_size: float = 1.0
"""LM step scale passed to Newton ``IKSolver.step``. Ignored by L-BFGS."""
lambda_initial: float = 0.1
"""Initial damping value for the Newton Levenberg-Marquardt optimizer.
This moderate default favors stable updates near singular configurations
over aggressive first-step motion.
"""