Source code for isaaclab_newton.physics.xpbd_manager_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

"""Configuration for Newton physics manager."""

from __future__ import annotations

from typing import TYPE_CHECKING

from isaaclab.utils.configclass import configclass

from .newton_manager_cfg import NewtonSolverCfg

if TYPE_CHECKING:
    from isaaclab_newton.physics import NewtonManager


[docs] @configclass class XPBDSolverCfg(NewtonSolverCfg): """An implicit integrator using eXtended Position-Based Dynamics (XPBD) for rigid and soft body simulation. References: - Miles Macklin, Matthias Müller, and Nuttapong Chentanez. 2016. XPBD: position-based simulation of compliant constrained dynamics. In Proceedings of the 9th International Conference on Motion in Games (MIG '16). Association for Computing Machinery, New York, NY, USA, 49-54. https://doi.org/10.1145/2994258.2994272 - Matthias Müller, Miles Macklin, Nuttapong Chentanez, Stefan Jeschke, and Tae-Yong Kim. 2020. Detailed rigid body simulation with extended position based dynamics. In Proceedings of the ACM SIGGRAPH/Eurographics Symposium on Computer Animation (SCA '20). Eurographics Association, Goslar, DEU, Article 10, 1-12. https://doi.org/10.1111/cgf.14105 """ class_type: type[NewtonManager] | str = "{DIR}.xpbd_manager:NewtonXPBDManager" """Manager class for the XPBD solver.""" solver_type: str = "xpbd" """Solver type. Can be "xpbd".""" iterations: int = 2 """Number of solver iterations.""" soft_body_relaxation: float = 0.9 """Relaxation parameter for soft body simulation.""" soft_contact_relaxation: float = 0.9 """Relaxation parameter for soft contact simulation.""" joint_linear_relaxation: float = 0.7 """Relaxation parameter for joint linear simulation.""" joint_angular_relaxation: float = 0.4 """Relaxation parameter for joint angular simulation.""" joint_linear_compliance: float = 0.0 """Compliance parameter for joint linear simulation.""" joint_angular_compliance: float = 0.0 """Compliance parameter for joint angular simulation.""" rigid_contact_relaxation: float = 0.8 """Relaxation parameter for rigid contact simulation.""" rigid_contact_con_weighting: bool = True """Whether to use contact constraint weighting for rigid contact simulation.""" angular_damping: float = 0.0 """Angular damping parameter for rigid contact simulation.""" enable_restitution: bool = False """Whether to enable restitution for rigid contact simulation."""