Source code for isaaclab_contrib.actuators.thruster_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 dataclasses import MISSING
from typing import Literal

from isaaclab.utils import configclass

from .thruster import Thruster


[docs]@configclass class ThrusterCfg: """Configuration for thruster actuator groups. This config defines per-actuator-group parameters used by the low-level thruster/motor models (time-constants, thrust ranges, integration scheme, and initial state specifications). Fields left as ``MISSING`` are required and must be provided by the user configuration. """ class_type: type[Thruster] = Thruster """Concrete Python class that consumes this config.""" dt: float = MISSING """Simulation/integration timestep used by the thruster update [s].""" thrust_range: tuple[float, float] = MISSING """Per-motor thrust clamp range [N]: values are clipped to this interval.""" max_thrust_rate: float = 100000.0 """Per-motor thrust slew-rate limit applied inside the first-order model [N/s].""" thrust_const_range: tuple[float, float] = MISSING """Range for thrust coefficient :math:`k_f` [N/(rps²)].""" tau_inc_range: tuple[float, float] = MISSING """Range of time constants when commanded output is **increasing** (rise dynamics) [s].""" tau_dec_range: tuple[float, float] = MISSING """Range of time constants when commanded output is **decreasing** (fall dynamics) [s].""" torque_to_thrust_ratio: float = MISSING """Yaw-moment coefficient converting thrust to motor torque about +Z [N·m per N]. Used as ``tau_z = torque_to_thrust_ratio * thrust_z * direction``. """ use_discrete_approximation: bool = True """ Determines how the actuator/motor mixing factor is computed. Defaults to True. If True, uses the discrete-time factor ``1 / (dt + tau)``, accounting for the control loop timestep. If False, uses the continuous-time factor ``1 / tau``. """ integration_scheme: Literal["rk4", "euler"] = "rk4" """Numerical integrator for the first-order model. Defaults to 'rk4'.""" thruster_names_expr: list[str] = MISSING """Articulation's joint names that are part of the group."""