We have now released v0.3.0! Please use the latest version for the best experience.

Source code for omni.isaac.orbit.actuators.actuator_cfg

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

from collections.abc import Iterable
from dataclasses import MISSING
from typing import Literal

from omni.isaac.orbit.utils import configclass

from . import actuator_net, actuator_pd
from .actuator_base import ActuatorBase


[docs]@configclass class ActuatorBaseCfg: """Configuration for default actuators in an articulation.""" class_type: type[ActuatorBase] = MISSING """The associated actuator class. The class should inherit from :class:`omni.isaac.orbit.actuators.ActuatorBase`. """ joint_names_expr: list[str] = MISSING """Articulation's joint names that are part of the group. Note: This can be a list of joint names or a list of regex expressions (e.g. ".*"). """ effort_limit: dict[str, float] | float | None = None """Force/Torque limit of the joints in the group. Defaults to None. If None, the limit is set to the value specified in the USD joint prim. """ velocity_limit: dict[str, float] | float | None = None """Velocity limit of the joints in the group. Defaults to None. If None, the limit is set to the value specified in the USD joint prim. """ stiffness: dict[str, float] | float | None = MISSING """Stiffness gains (also known as p-gain) of the joints in the group. If None, the stiffness is set to the value from the USD joint prim. """ damping: dict[str, float] | float | None = MISSING """Damping gains (also known as d-gain) of the joints in the group. If None, the damping is set to the value from the USD joint prim. """ armature: dict[str, float] | float | None = None """Armature of the joints in the group. Defaults to None. If None, the armature is set to the value from the USD joint prim. """ friction: dict[str, float] | float | None = None """Joint friction of the joints in the group. Defaults to None. If None, the joint friction is set to the value from the USD joint prim. """
""" Implicit Actuator Models. """
[docs]@configclass class ImplicitActuatorCfg(ActuatorBaseCfg): """Configuration for an implicit actuator. Note: The PD control is handled implicitly by the simulation. """ class_type: type = actuator_pd.ImplicitActuator
""" Explicit Actuator Models. """
[docs]@configclass class IdealPDActuatorCfg(ActuatorBaseCfg): """Configuration for an ideal PD actuator.""" class_type: type = actuator_pd.IdealPDActuator
[docs]@configclass class DCMotorCfg(IdealPDActuatorCfg): """Configuration for direct control (DC) motor actuator model.""" class_type: type = actuator_pd.DCMotor saturation_effort: float = MISSING """Peak motor force/torque of the electric DC motor (in N-m)."""
[docs]@configclass class ActuatorNetLSTMCfg(DCMotorCfg): """Configuration for LSTM-based actuator model.""" class_type: type = actuator_net.ActuatorNetLSTM # we don't use stiffness and damping for actuator net stiffness = None damping = None network_file: str = MISSING """Path to the file containing network weights."""
[docs]@configclass class ActuatorNetMLPCfg(DCMotorCfg): """Configuration for MLP-based actuator model.""" class_type: type = actuator_net.ActuatorNetMLP # we don't use stiffness and damping for actuator net stiffness = None damping = None network_file: str = MISSING """Path to the file containing network weights.""" pos_scale: float = MISSING """Scaling of the joint position errors input to the network.""" vel_scale: float = MISSING """Scaling of the joint velocities input to the network.""" torque_scale: float = MISSING """Scaling of the joint efforts output from the network.""" input_order: Literal["pos_vel", "vel_pos"] = MISSING """Order of the inputs to the network. The order can be one of the following: * ``"pos_vel"``: joint position errors followed by joint velocities * ``"vel_pos"``: joint velocities followed by joint position errors """ input_idx: Iterable[int] = MISSING """ Indices of the actuator history buffer passed as inputs to the network. The index *0* corresponds to current time-step, while *n* corresponds to n-th time-step in the past. The allocated history length is `max(input_idx) + 1`. """