Source code for omni.isaac.lab.controllers.operational_space_cfg

# Copyright (c) 2022-2024, The Isaac Lab Project Developers.
# All rights reserved.
#
# SPDX-License-Identifier: BSD-3-Clause

from collections.abc import Sequence
from dataclasses import MISSING

from omni.isaac.lab.utils import configclass

from .operational_space import OperationalSpaceController


[docs]@configclass class OperationalSpaceControllerCfg: """Configuration for operational-space controller.""" class_type: type = OperationalSpaceController """The associated controller class.""" target_types: Sequence[str] = MISSING """Type of task-space targets. It has two sub-strings joined by underscore: - type of task-space target: ``"pose"``, ``"wrench"`` - reference for the task-space targets: ``"abs"`` (absolute), ``"rel"`` (relative, only for pose) """ motion_control_axes_task: Sequence[int] = (1, 1, 1, 1, 1, 1) """Motion direction to control in task reference frame. Mark as ``0/1`` for each axis.""" contact_wrench_control_axes_task: Sequence[int] = (0, 0, 0, 0, 0, 0) """Contact wrench direction to control in task reference frame. Mark as 0/1 for each axis.""" inertial_dynamics_decoupling: bool = False """Whether to perform inertial dynamics decoupling for motion control (inverse dynamics).""" partial_inertial_dynamics_decoupling: bool = False """Whether to ignore the inertial coupling between the translational & rotational motions.""" gravity_compensation: bool = False """Whether to perform gravity compensation.""" impedance_mode: str = "fixed" """Type of gains for motion control: ``"fixed"``, ``"variable"``, ``"variable_kp"``.""" motion_stiffness_task: float | Sequence[float] = (100.0, 100.0, 100.0, 100.0, 100.0, 100.0) """The positional gain for determining operational space command forces based on task-space pose error.""" motion_damping_ratio_task: float | Sequence[float] = (1.0, 1.0, 1.0, 1.0, 1.0, 1.0) """The damping ratio is used in-conjunction with positional gain to compute operational space command forces based on task-space velocity error. The following math operation is performed for computing velocity gains: :math:`d_gains = 2 * sqrt(p_gains) * damping_ratio`. """ motion_stiffness_limits_task: tuple[float, float] = (0, 1000) """Minimum and maximum values for positional gains. Note: Used only when :obj:`impedance_mode` is ``"variable"`` or ``"variable_kp"``. """ motion_damping_ratio_limits_task: tuple[float, float] = (0, 100) """Minimum and maximum values for damping ratios used to compute velocity gains. Note: Used only when :obj:`impedance_mode` is ``"variable"``. """ contact_wrench_stiffness_task: float | Sequence[float] | None = None """The proportional gain for determining operational space command forces for closed-loop contact force control. If ``None``, then open-loop control of desired contact wrench is performed. Note: since only the linear forces could be measured at the moment, only the first three elements are used for the feedback loop. """ nullspace_control: str = "none" """The null space control method for redundant manipulators: ``"none"``, ``"position"``. Note: ``"position"`` is used to drive the redundant manipulator to zero configuration by default. If ``target_joint_pos`` is provided in the ``compute()`` method, it will be driven to this configuration. """ nullspace_stiffness: float = 10.0 """The stiffness for null space control.""" nullspace_damping_ratio: float = 1.0 """The damping ratio for null space control."""