isaaclab.actuators

Contents

isaaclab.actuators#

Sub-package for different actuator models.

Actuator models are used to model the behavior of the actuators in an articulation. These are usually meant to be used in simulation to model different actuator dynamics and delays.

There are two main categories of actuator models that are supported:

  • Implicit: Motor model with ideal PD from the physics engine. This is similar to having a continuous time PD controller. The motor model is implicit in the sense that the motor model is not explicitly defined by the user.

  • Explicit: Motor models based on physical drive models.

    • Physics-based: Derives the motor models based on first-principles.

    • Neural Network-based: Learned motor models from actuator data.

Every actuator model inherits from the isaaclab.actuators.ActuatorBase class, which defines the common interface for all actuator models. Runtime actuator groups, commands, and telemetry are handled by isaaclab.actuators.ActuatorCollection, which is exposed through isaaclab.assets.Articulation.actuators.

Classes

ActuatorBase

Base class for actuator models over a collection of actuated joints in an articulation.

ActuatorBaseCfg

Configuration for default actuators in an articulation.

ActuatorTargetCommand

Commands received by the actuator models.

ActuatorCollection

Read-only runtime collection of actuator groups for one articulation.

ActuatorControl

Backend-neutral bridge used by ActuatorCollection.

ActuatorOutputCommand

Processed commands produced for the simulated joints.

ImplicitActuator

Implicit actuator model that is handled by the simulation.

ImplicitActuatorCfg

Configuration for an implicit actuator.

IdealPDActuator

Ideal torque-controlled actuator model with a simple saturation model.

IdealPDActuatorCfg

Configuration for an ideal PD actuator.

DCMotor

Direct control (DC) motor actuator model with velocity-based saturation model.

DCMotorCfg

Configuration for direct control (DC) motor actuator model.

DelayedPDActuator

Ideal PD actuator with delayed command application.

DelayedPDActuatorCfg

Configuration for a delayed PD actuator.

RemotizedPDActuator

Ideal PD actuator with angle-dependent torque limits.

RemotizedPDActuatorCfg

Configuration for a remotized PD actuator.

ActuatorNetMLP

Actuator model based on multi-layer perceptron and joint history.

ActuatorNetMLPCfg

Configuration for MLP-based actuator model.

ActuatorNetLSTM

Actuator model based on recurrent neural network (LSTM).

ActuatorNetLSTMCfg

Configuration for LSTM-based actuator model.

Functions

resolve_joint_parameter(cfg_value, ...)

Resolve one group-shaped joint parameter from configuration and defaults.

Actuator Base#

class isaaclab.actuators.ActuatorBase[source]#

Base class for actuator models over a collection of actuated joints in an articulation.

Actuator models augment the simulated articulation joints with an external drive dynamics model. The model is used to convert the user-provided joint commands (positions, velocities and efforts) into the desired joint positions, velocities and efforts that are applied to the simulated articulation.

The base class provides the interface for the actuator models. It is responsible for parsing the actuator parameters from the configuration and storing them as buffers. It also provides the interface for resetting the actuator state and computing the desired joint commands for the simulation.

For each actuator model, a corresponding configuration class is provided. The configuration class is used to parse the actuator parameters from the configuration. It also specifies the joint names for which the actuator model is applied. These names can be specified as regular expressions, which are matched against the joint names in the articulation.

To see how the class is used, check the isaaclab.assets.Articulation class.

Attributes:

is_implicit_model

Flag indicating if the actuator is an implicit or explicit actuator model.

computed_effort

The computed effort [N or N·m, depending on joint type] for the actuator group.

applied_effort

The applied effort [N or N·m, depending on joint type] for the actuator group.

actuator_velocity_limit

The actuator velocity limit [m/s or rad/s, depending on joint type].

num_joints

Number of actuators in the group.

joint_names

Articulation's joint names that are part of the group.

joint_indices

Articulation's joint indices that are part of the group.

effort_limit

Deprecated actuator effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Methods:

__init__(cfg, joint_names, joint_ids, ...[, ...])

Initialize the actuator.

reset(env_ids)

Reset the internals within the group.

compute(control_action, joint_pos, joint_vel)

Process the actuator group actions and compute the articulation actions.

is_implicit_model: ClassVar[bool] = False#

Flag indicating if the actuator is an implicit or explicit actuator model.

If a class inherits from ImplicitActuator, then this flag should be set to True.

__init__(cfg: ActuatorBaseCfg, joint_names: list[str], joint_ids: slice | torch.Tensor, num_envs: int, device: str, actuator_effort_limit: torch.Tensor | float | None = None, actuator_velocity_limit: torch.Tensor | float | None = None, effort_limit: torch.Tensor | float | None = None, velocity_limit: torch.Tensor | float | None = None)[source]#

Initialize the actuator.

The actuator parameters are parsed from the configuration and stored as buffers. If the parameters are not specified in the configuration, then their values provided in the constructor are used.

Note

The constructor defaults are typically read from the backend’s authored joint properties.

Parameters:
  • cfg – The configuration of the actuator model.

  • joint_names – The joint names in the articulation.

  • joint_ids – The joint indices in the articulation. If slice(None), then all the joints in the articulation are part of the group.

  • num_envs – Number of articulations in the view.

  • device – Device used for processing.

  • actuator_effort_limit – Default actuator-model effort clipping limit [N or N·m, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • actuator_velocity_limit – Default actuator velocity limit [m/s or rad/s, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • effort_limit – Deprecated alias for actuator_effort_limit.

  • velocity_limit – Deprecated alias for actuator_velocity_limit.

computed_effort: torch.Tensor#

The computed effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

applied_effort: torch.Tensor#

The applied effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

This is the effort obtained after clipping the computed_effort based on the actuator characteristics.

actuator_velocity_limit: torch.Tensor#

The actuator velocity limit [m/s or rad/s, depending on joint type]. Shape is (num_envs, num_joints).

The peak velocity of the actuated joint (the actuator’s rated speed reflected at the joint, after any gearbox). Feeds the articulation data buffers (e.g. soft joint velocity limits) and explicit-model effort clipping; it is not pushed to the physics solver. Defaults to joint_velocity_limit when only the solver constraint is configured.

property num_joints: int#

Number of actuators in the group.

property joint_names: list[str]#

Articulation’s joint names that are part of the group.

property joint_indices: slice | torch.Tensor#

Articulation’s joint indices that are part of the group.

Note

If slice(None) is returned, then the group contains all the joints in the articulation. We do this to avoid unnecessary indexing of the joints for performance reasons.

abstractmethod reset(env_ids: Sequence[int])[source]#

Reset the internals within the group.

Parameters:

env_ids – List of environment IDs to reset.

abstractmethod compute(control_action: ArticulationActions, joint_pos: torch.Tensor, joint_vel: torch.Tensor) ArticulationActions[source]#

Process the actuator group actions and compute the articulation actions.

It computes the articulation actions based on the actuator model type

Parameters:
  • control_action – The joint action instance comprising of the desired joint positions, joint velocities and (feed-forward) joint efforts.

  • joint_pos – The current joint positions of the joints in the group. Shape is (num_envs, num_joints).

  • joint_vel – The current joint velocities of the joints in the group. Shape is (num_envs, num_joints).

Returns:

The computed desired joint positions, joint velocities and joint efforts.

property effort_limit: torch.Tensor#

Deprecated actuator effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: Use actuator_effort_limit instead. This alias will be removed in 4.0.

property velocity_limit: torch.Tensor#

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit instead. This alias will be removed in 4.0.

isaaclab.actuators.resolve_joint_parameter(cfg_value: float | dict[str, float] | None, default_value: float | torch.Tensor | None, joint_names: list[str], num_envs: int, device: str) torch.Tensor[source]#

Resolve one group-shaped joint parameter from configuration and defaults.

The single source of joint-parameter resolution semantics, shared by the actuator models and by ActuatorCollection when it resolves the construction-time joint properties.

Parameters:
  • cfg_value – The parameter value from the configuration, a scalar or a joint-name-pattern dictionary. If None, then the default value is used.

  • default_value – The default value, a scalar or a (num_envs, len(joint_names)) tensor. If it is also None, then an error is raised.

  • joint_names – The group’s joint names, defining the column order.

  • num_envs – Number of articulation instances.

  • device – Torch device string.

Returns:

The resolved parameter value, shape (num_envs, len(joint_names)).

Raises:
  • TypeError – If the parameter or default value is not of the expected type.

  • ValueError – If both values are None, or the default tensor has the wrong shape.

class isaaclab.actuators.ActuatorBaseCfg[source]#

Configuration for default actuators in an articulation.

Attributes:

joint_names_expr

Articulation's joint names that are part of the group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

Velocity limit of the joints in the group.

joint_effort_limit

Construction-time joint solver effort override [N or N·m, depending on joint type].

joint_velocity_limit

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

effort_limit_sim

Deprecated alias for joint_effort_limit.

velocity_limit_sim

Deprecated alias for joint_velocity_limit.

stiffness

Stiffness gains (also known as p-gain) of the joints in the group.

damping

Damping gains (also known as d-gain) of the joints in the group.

armature

Armature of the joints in the group.

friction

The static friction coefficient of the joints in the group.

dynamic_friction

The dynamic friction coefficient of the joints in the group.

viscous_friction

The viscous friction coefficient of the joints in the group.

effort_limit

Deprecated effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated velocity limit [m/s or rad/s, depending on joint type].

joint_names_expr: list[str]#

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. “.*”).

actuator_effort_limit: dict[str, float] | float | None#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint. Explicit actuator models clip their computed effort with it; implicit actuators use it as the model-facing limit for effort telemetry. If None, it defaults to the authored/USD joint effort limit (explicit) or tracks the live solver limit (implicit). It is not a solver limit; that is joint_effort_limit.

RemotizedPDActuator instead uses the angle-dependent limits in its joint_parameter_lookup.

actuator_velocity_limit: dict[str, float] | float | None#

Velocity limit of the joints in the group. Defaults to None.

This limit is used by the actuator model. If None, the limit is set to the value specified in the USD joint prim.

Attention

This attribute describes the actuator’s peak velocity, i.e. the actuator’s rated speed reflected at the joint (after any gearbox). It populates the actuator data buffers (e.g. soft_joint_vel_limits, read by velocity-limit terminations and rewards). Explicit models with speed-dependent limits, such as DCMotor, also use it to clip effort. It is not pushed to the physics solver.

Use joint_velocity_limit to request a solver-level hard clamp. A physical actuator limits joint speed through its torque curve rather than a kinematic clamp, so the two limits are resolved independently. When only joint_velocity_limit is set, it also serves as the joint velocity limit.

joint_effort_limit: dict[str, float] | float | None#

Construction-time joint solver effort override [N or N·m, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData.

joint_velocity_limit: dict[str, float] | float | None#

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData; enforcement is backend-dependent.

effort_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_effort_limit.

Deprecated since version 3.0: Use joint_effort_limit instead. This alias will be removed in 4.0.

velocity_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_velocity_limit.

Deprecated since version 3.0: Use joint_velocity_limit instead. This alias will be removed in 4.0.

stiffness: dict[str, float] | float | None#

Stiffness gains (also known as p-gain) of the joints in the group.

The behavior of the stiffness is different for implicit and explicit actuators. For implicit actuators, the stiffness gets set into the physics engine directly. For explicit actuators, the stiffness is used by the actuator model to compute the joint efforts.

If None, the stiffness is set to the value from the USD joint prim.

damping: dict[str, float] | float | None#

Damping gains (also known as d-gain) of the joints in the group.

The behavior of the damping is different for implicit and explicit actuators. For implicit actuators, the damping gets set into the physics engine directly. For explicit actuators, the damping gain is used by the actuator model to compute the joint efforts.

If None, the damping is set to the value from the USD joint prim.

armature: dict[str, float] | float | None#

Armature of the joints in the group. Defaults to None.

The armature is directly added to the corresponding joint-space inertia. It helps improve the simulation stability by reducing the joint velocities.

It is a physics engine solver parameter that gets set into the simulation.

If None, the armature is set to the value from the USD joint prim.

friction: dict[str, float] | float | None#

The static friction coefficient of the joints in the group. Defaults to None.

The joint static friction is a unitless quantity. It relates the magnitude of the spatial force transmitted from the parent body to the child body to the maximal static friction force that may be applied by the solver to resist the joint motion.

Mathematically, this means that: \(F_{resist} \leq \mu F_{spatial}\), where \(F_{resist}\) is the resisting force applied by the solver and \(F_{spatial}\) is the spatial force transmitted from the parent body to the child body. The simulated static friction effect is therefore similar to static and Coulomb static friction.

If None, the joint static friction is set to the value from the USD joint prim.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

dynamic_friction: dict[str, float] | float | None#

The dynamic friction coefficient of the joints in the group. Defaults to None.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

viscous_friction: dict[str, float] | float | None#

The viscous friction coefficient of the joints in the group. Defaults to None.

effort_limit: dict[str, float] | float | None#

Deprecated effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: For explicit actuators, use actuator_effort_limit. For implicit actuators, use joint_effort_limit. This alias will be removed in 4.0.

velocity_limit: dict[str, float] | float | None#

Deprecated velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit for the actuator-model limit or joint_velocity_limit for the solver limit. This alias will be removed in 4.0.

Actuator Collection#

class isaaclab.actuators.ActuatorCollection[source]#

Read-only runtime collection of actuator groups for one articulation.

Mapping entries return whoever owns the group. Isaac Lab-executed groups map to their ActuatorBase model instances. Newton-executed groups map to the Newton Actuator objects that drive their joints, so users read and modify the owning controller directly. Newton merges structurally identical joints into one actuator, so several groups can map to the same object (or to a tuple when a group spans several); the collection keeps each group’s joint indices, which read_group_parameter() and write_group_parameter() use for group-scoped, user-ordered access.

Configure membership through isaaclab.assets.ArticulationCfg.actuators before construction; assigning or deleting mapping entries raises TypeError. Each joint can belong to at most one group; overlapping joint selections raise ValueError during construction.

Plain ImplicitActuator groups are not executed one group at a time: a single internal executor computes all of their joints in one fused kernel launch. All other Lab-executed groups, including subclasses of ImplicitActuator, execute per group.

Methods:

__init__(actuator_cfgs, control, *[, ...])

Initialize the actuator collection.

reset([env_ids])

Reset all actuator group states.

compute([dt])

Compute processed actuator commands and telemetry.

submit_commands()

Submit processed actuator command buffers through the backend control object.

get(k[,d])

items()

keys()

values()

Attributes:

target_command

Commands received by the actuator models.

output_command

Processed commands produced for the simulated joints.

num_instances

Number of articulation instances.

num_joints

Number of articulation joints.

device

Warp/Torch device string.

has_implicit_actuators

Whether any configured actuator group is implicit.

computed_effort

Joint efforts computed before clipping [N or N·m, depending on joint type].

applied_effort

Joint efforts applied after clipping [N or N·m, depending on joint type].

__init__(actuator_cfgs: dict[str, ActuatorBaseCfg], control: ActuatorControl, *, debug_value_resolution: bool = False)[source]#

Initialize the actuator collection.

Parameters:
  • actuator_cfgs – Mapping of actuator group names to actuator configs.

  • control – Backend control bridge for state reads and sim writes.

  • debug_value_resolution – Whether to log actuator value resolution.

property target_command: ActuatorTargetCommand#

Commands received by the actuator models.

property output_command: ActuatorOutputCommand#

Processed commands produced for the simulated joints.

This view is not submitted-command telemetry for native controllers, which bypass the processed-command arrays.

property num_instances: int#

Number of articulation instances.

property num_joints: int#

Number of articulation joints.

property device: str#

Warp/Torch device string.

property has_implicit_actuators: bool#

Whether any configured actuator group is implicit.

property computed_effort: ProxyArray#

Joint efforts computed before clipping [N or N·m, depending on joint type].

property applied_effort: ProxyArray#

Joint efforts applied after clipping [N or N·m, depending on joint type].

reset(env_ids: Sequence[int] | slice | None = None) None[source]#

Reset all actuator group states.

Parameters:

env_ids – Environment indices to reset. Defaults to all environments.

compute(dt: float = 0.0) None[source]#

Compute processed actuator commands and telemetry.

Parameters:

dt – Physics step size [s].

submit_commands() None[source]#

Submit processed actuator command buffers through the backend control object.

get(k[, d]) D[k] if k in D, else d.  d defaults to None.#
items() a set-like object providing a view on D's items#
keys() a set-like object providing a view on D's keys#
values() an object providing a view on D's values#
class isaaclab.actuators.ActuatorTargetCommand[source]#

Commands received by the actuator models.

Position and velocity commands use joint-side coordinates. All command arrays are indexed by articulation joint, not by motor shaft.

Index selectors must contain unique environment and joint indices. Repeated indices dispatch concurrent writes to the same destination and produce an undefined result. Deduplicate selectors or use mask setters.

Methods:

__init__(collection)

Initialize the command view.

set_position_index(*, value[, joint_ids, ...])

Set desired positions using indices.

set_velocity_index(*, value[, joint_ids, ...])

Set desired velocities using indices.

set_effort_index(*, value[, joint_ids, ...])

Set effort commands using indices.

set_position_mask(*, value[, joint_mask, ...])

Set desired positions using masks.

set_velocity_mask(*, value[, joint_mask, ...])

Set desired velocities using masks.

set_effort_mask(*, value[, joint_mask, env_mask])

Set effort commands using masks.

Attributes:

position

Desired positions [m or rad, depending on joint type].

velocity

Desired velocities [m/s or rad/s, depending on joint type].

effort

Effort commands [N or N·m, depending on joint type].

__init__(collection: ActuatorCollection) None[source]#

Initialize the command view.

Parameters:

collection – Owning actuator collection.

property position: ProxyArray#

Desired positions [m or rad, depending on joint type].

property velocity: ProxyArray#

Desired velocities [m/s or rad/s, depending on joint type].

property effort: ProxyArray#

Effort commands [N or N·m, depending on joint type].

set_position_index(*, value: torch.Tensor | wp.array(dtype=wp.float32), joint_ids: Sequence[int] | torch.Tensor | wp.array | None = None, env_ids: Sequence[int] | torch.Tensor | wp.array | None = None, full_data: bool = False) None[source]#

Set desired positions using indices.

Parameters:
  • value – Desired positions [m or rad, depending on joint type]. Shape is (len(env_ids), len(joint_ids)), or (num_instances, num_joints) when full_data is true.

  • joint_ids – Joint indices. Defaults to all joints.

  • env_ids – Environment indices. Defaults to all environments.

  • full_data – Whether value is a full articulation command buffer.

set_velocity_index(*, value: torch.Tensor | wp.array(dtype=wp.float32), joint_ids: Sequence[int] | torch.Tensor | wp.array | None = None, env_ids: Sequence[int] | torch.Tensor | wp.array | None = None, full_data: bool = False) None[source]#

Set desired velocities using indices.

Parameters:
  • value – Desired velocities [m/s or rad/s, depending on joint type]. Shape is (len(env_ids), len(joint_ids)), or (num_instances, num_joints) when full_data is true.

  • joint_ids – Joint indices. Defaults to all joints.

  • env_ids – Environment indices. Defaults to all environments.

  • full_data – Whether value is a full articulation command buffer.

set_effort_index(*, value: torch.Tensor | wp.array(dtype=wp.float32), joint_ids: Sequence[int] | torch.Tensor | wp.array | None = None, env_ids: Sequence[int] | torch.Tensor | wp.array | None = None, full_data: bool = False) None[source]#

Set effort commands using indices.

Parameters:
  • value – Effort commands [N or N·m, depending on joint type]. Shape is (len(env_ids), len(joint_ids)), or (num_instances, num_joints) when full_data is true.

  • joint_ids – Joint indices. Defaults to all joints.

  • env_ids – Environment indices. Defaults to all environments.

  • full_data – Whether value is a full articulation command buffer.

set_position_mask(*, value: torch.Tensor | wp.array(dtype=wp.float32), joint_mask: wp.array(dtype=wp.bool) | None = None, env_mask: wp.array(dtype=wp.bool) | None = None) None[source]#

Set desired positions using masks.

Parameters:
  • value – Full articulation position commands [m or rad, depending on joint type]. Shape is (num_instances, num_joints).

  • joint_mask – Joint selection mask. Defaults to all joints.

  • env_mask – Environment selection mask. Defaults to all environments.

set_velocity_mask(*, value: torch.Tensor | wp.array(dtype=wp.float32), joint_mask: wp.array(dtype=wp.bool) | None = None, env_mask: wp.array(dtype=wp.bool) | None = None) None[source]#

Set desired velocities using masks.

Parameters:
  • value – Full articulation velocity commands [m/s or rad/s, depending on joint type]. Shape is (num_instances, num_joints).

  • joint_mask – Joint selection mask. Defaults to all joints.

  • env_mask – Environment selection mask. Defaults to all environments.

set_effort_mask(*, value: torch.Tensor | wp.array(dtype=wp.float32), joint_mask: wp.array(dtype=wp.bool) | None = None, env_mask: wp.array(dtype=wp.bool) | None = None) None[source]#

Set effort commands using masks.

Parameters:
  • value – Full articulation effort commands [N or N·m, depending on joint type]. Shape is (num_instances, num_joints).

  • joint_mask – Joint selection mask. Defaults to all joints.

  • env_mask – Environment selection mask. Defaults to all environments.

class isaaclab.actuators.ActuatorOutputCommand[source]#

Processed commands produced for the simulated joints.

These arrays contain submitted-command telemetry for Isaac Lab-managed actuator models. Native controllers bypass the arrays, so they do not provide submitted-command telemetry on a native path.

Methods:

__init__(collection)

Initialize the joint command view.

Attributes:

position

Processed position commands [m or rad, depending on joint type].

velocity

Processed velocity commands [m/s or rad/s, depending on joint type].

effort

Processed effort commands [N or N·m, depending on joint type].

__init__(collection: ActuatorCollection) None[source]#

Initialize the joint command view.

Parameters:

collection – Owning actuator collection.

property position: ProxyArray#

Processed position commands [m or rad, depending on joint type].

property velocity: ProxyArray#

Processed velocity commands [m/s or rad/s, depending on joint type].

property effort: ProxyArray#

Processed effort commands [N or N·m, depending on joint type].

Actuator Control#

class isaaclab.actuators.ActuatorControl[source]#

Backend-neutral bridge used by ActuatorCollection.

Attributes:

num_instances

Number of articulation instances.

num_joints

Number of articulation joints.

num_fixed_tendons

Number of fixed tendons.

device

Warp/Torch device string.

joint_pos

Current joint positions [m or rad, depending on joint type].

joint_vel

Current joint velocities [m/s or rad/s, depending on joint type].

joint_stiffness

Current joint stiffness values [N/m or N·m/rad, depending on joint type].

joint_damping

Current joint damping values [N·s/m or N·m·s/rad, depending on joint type].

joint_effort_limits

Current joint effort limits [N or N·m, depending on joint type].

native_actuator_path_active

Whether backend handling replaces the Isaac Lab actuator loop.

Methods:

find_joints(name_keys)

Resolve joint name expressions to user-order joint indices and names.

resolve_env_ids(env_ids)

Resolve optional environment indices.

resolve_joint_ids(joint_ids)

Resolve optional joint indices.

assert_shape_and_dtype(tensor, shape, dtype, ...)

Validate tensor shape and dtype using the owning asset's policy.

assert_shape_and_dtype_mask(tensor, masks, ...)

Validate a full-sized mask-write tensor.

get_default_joint_properties(joint_ids)

Return backend defaults used to construct one actuator group.

write_resolved_joint_properties(properties, ...)

Write construction-resolved joint properties to the backend.

stage_user_command(command_name, collection, ...)

Stage a raw user command when the backend requires eager binding writes.

prepare_native_actuators(collection, ...)

Prepare backend-native actuators.

finalize_native_actuators(collection)

Finalize backend-native state after group construction.

compute_native_actuators(collection, dt)

Compute backend-native actuator outputs.

submit_commands(collection)

Submit processed command buffers to the backend.

reset_native_actuators(env_ids)

Reset backend-native actuator state.

abstract property num_instances: int#

Number of articulation instances.

abstract property num_joints: int#

Number of articulation joints.

abstract property num_fixed_tendons: int#

Number of fixed tendons.

abstract property device: str#

Warp/Torch device string.

abstract property joint_pos: ProxyArray#

Current joint positions [m or rad, depending on joint type].

abstract property joint_vel: ProxyArray#

Current joint velocities [m/s or rad/s, depending on joint type].

property joint_stiffness: ProxyArray#

Current joint stiffness values [N/m or N·m/rad, depending on joint type].

property joint_damping: ProxyArray#

Current joint damping values [N·s/m or N·m·s/rad, depending on joint type].

property joint_effort_limits: ProxyArray#

Current joint effort limits [N or N·m, depending on joint type].

abstractmethod find_joints(name_keys: str | Sequence[str]) tuple[ProxyArray, list[str]][source]#

Resolve joint name expressions to user-order joint indices and names.

Parameters:

name_keys – Joint-name regular expressions.

Returns:

Resolved joint indices and names in user order.

abstractmethod resolve_env_ids(env_ids: Sequence[int] | torch.Tensor | wp.array | None) torch.Tensor | wp.array[source]#

Resolve optional environment indices.

Parameters:

env_ids – Environment indices. Defaults to all environments.

Returns:

Device-local environment indices.

abstractmethod resolve_joint_ids(joint_ids: Sequence[int] | torch.Tensor | wp.array | None) torch.Tensor | wp.array[source]#

Resolve optional joint indices.

Parameters:

joint_ids – Joint indices. Defaults to all joints.

Returns:

Device-local joint indices.

abstractmethod assert_shape_and_dtype(tensor: torch.Tensor | wp.array(dtype=wp.float32) | float, shape: tuple[int, ...], dtype: type, name: str) None[source]#

Validate tensor shape and dtype using the owning asset’s policy.

Parameters:
  • tensor – Tensor or scalar to validate.

  • shape – Required tensor shape.

  • dtype – Required Warp dtype.

  • name – Value name used in validation errors.

abstractmethod assert_shape_and_dtype_mask(tensor: torch.Tensor | wp.array(dtype=wp.float32) | float, masks: tuple[wp.array(dtype=wp.bool), ...], dtype: type, name: str) None[source]#

Validate a full-sized mask-write tensor.

Parameters:
  • tensor – Tensor or scalar to validate.

  • masks – Selection masks that define the required shape.

  • dtype – Required Warp dtype.

  • name – Value name used in validation errors.

abstractmethod get_default_joint_properties(joint_ids: torch.Tensor | wp.array | slice) dict[str, torch.Tensor][source]#

Return backend defaults used to construct one actuator group.

Parameters:

joint_ids – Articulation joints in the actuator group.

Returns:

Default properties for the selected joints, keyed by _JOINT_PROPERTY_KEYS.

abstractmethod write_resolved_joint_properties(properties: dict[str, torch.Tensor], joint_ids: torch.Tensor | wp.array | slice, *, implicit: bool, native_managed: bool) None[source]#

Write construction-resolved joint properties to the backend.

Parameters:
  • properties – Resolved joint properties for one configured group, keyed by _JOINT_PROPERTY_KEYS.

  • joint_ids – Articulation joints in the configured group.

  • implicit – Whether the group uses an implicit solver drive.

  • native_managed – Whether the backend executes this group natively.

stage_user_command(command_name: str, collection: ActuatorCollection, env_ids: torch.Tensor | wp.array | None, joint_ids: torch.Tensor | wp.array | None, env_mask: wp.array(dtype=wp.bool) | None, joint_mask: wp.array(dtype=wp.bool) | None) None[source]#

Stage a raw user command when the backend requires eager binding writes.

Parameters:
  • command_name – Command field to stage.

  • collection – Collection that owns the command buffers.

  • env_ids – Selected environment indices, or None for a mask write.

  • joint_ids – Selected joint indices, or None for a mask write.

  • env_mask – Selected environments, or None for an index write.

  • joint_mask – Selected joints, or None for an index write.

property native_actuator_path_active: bool#

Whether backend handling replaces the Isaac Lab actuator loop.

prepare_native_actuators(collection: ActuatorCollection, actuator_cfgs: dict[str, ActuatorBaseCfg]) set[str][source]#

Prepare backend-native actuators.

Parameters:
  • collection – Collection being constructed.

  • actuator_cfgs – Configured actuator groups.

Returns:

Names of groups managed by the backend.

finalize_native_actuators(collection: ActuatorCollection) NewtonActuatorSelection | None[source]#

Finalize backend-native state after group construction.

Parameters:

collection – Fully constructed actuator collection.

Returns:

The Newton actuator selection produced by the backend’s execution setup (view, actuators, and joint ordering), or None when no Newton actuators are active. The collection’s parameter door consumes this; controls perform no parameter access themselves.

compute_native_actuators(collection: ActuatorCollection, dt: float) bool[source]#

Compute backend-native actuator outputs.

Parameters:
  • collection – Collection that owns actuator command and telemetry buffers.

  • dt – Physics step size [s].

Returns:

True when native handling replaced the standard Python actuator loop.

abstractmethod submit_commands(collection: ActuatorCollection) None[source]#

Submit processed command buffers to the backend.

Parameters:

collection – Collection that owns the processed commands.

reset_native_actuators(env_ids: Sequence[int] | slice) None[source]#

Reset backend-native actuator state.

Parameters:

env_ids – Environments to reset.

Implicit Actuator#

class isaaclab.actuators.ImplicitActuator[source]#

Bases: ActuatorBase

Implicit actuator model that is handled by the simulation.

The articulation writes the configured gains and solver limits to the backend, whose discrete solver applies the joint drive. This model also computes approximate effort telemetry from the current state because the solver does not expose the applied joint effort on every backend.

Attributes:

cfg

The configuration for the actuator model.

is_implicit_model

Flag indicating if the actuator is an implicit or explicit actuator model.

stiffness

Current joint stiffness values [N/m or N·m/rad, depending on joint type].

damping

Current joint damping values [N·s/m or N·m·s/rad, depending on joint type].

joint_effort_limit

Current joint effort limits [N or N·m, depending on joint type].

actuator_effort_limit

Actuator effort limit [N or N·m, depending on joint type].

effort_limit

Deprecated actuator effort limit [N or N·m, depending on joint type].

joint_indices

Articulation's joint indices that are part of the group.

joint_names

Articulation's joint names that are part of the group.

num_joints

Number of actuators in the group.

velocity_limit

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

computed_effort

The computed effort [N or N·m, depending on joint type] for the actuator group.

applied_effort

The applied effort [N or N·m, depending on joint type] for the actuator group.

actuator_velocity_limit

The actuator velocity limit [m/s or rad/s, depending on joint type].

Methods:

__init__(cfg, joint_names, joint_ids, ...[, ...])

Initialize the implicit actuator.

reset([env_ids])

Reset the internals within the group.

compute(control_action, joint_pos, joint_vel)

Process the actuator group actions and compute the articulation actions.

cfg: ImplicitActuatorCfg#

The configuration for the actuator model.

is_implicit_model: ClassVar[bool] = True#

Flag indicating if the actuator is an implicit or explicit actuator model.

If a class inherits from ImplicitActuator, then this flag should be set to True.

__init__(cfg: ImplicitActuatorCfg, joint_names: list[str], joint_ids: slice | torch.Tensor, num_envs: int, device: str, stiffness: torch.Tensor | float = 0.0, damping: torch.Tensor | float = 0.0, joint_effort_limit: torch.Tensor | float | None = None, actuator_velocity_limit: torch.Tensor | float | None = None, effort_limit: torch.Tensor | float | None = None, velocity_limit: torch.Tensor | float | None = None)[source]#

Initialize the implicit actuator.

Parameters:
  • cfg – The configuration of the actuator model.

  • joint_names – The joint names in the articulation.

  • joint_ids – The joint indices in the articulation. If slice(None), then all the joints in the articulation are part of the group.

  • num_envs – Number of articulations in the view.

  • device – Device used for processing.

  • stiffness – Default joint stiffness [N/m or N·m/rad, depending on joint type].

  • damping – Default joint damping [N·s/m or N·m·s/rad, depending on joint type].

  • joint_effort_limit – Default solver joint effort limit [N or N·m, depending on joint type]. Defaults to infinity.

  • actuator_velocity_limit – Default actuator velocity limit [m/s or rad/s, depending on joint type]. Defaults to infinity.

  • effort_limit – Deprecated alias for joint_effort_limit.

  • velocity_limit – Deprecated alias for actuator_velocity_limit.

property stiffness: torch.Tensor#

Current joint stiffness values [N/m or N·m/rad, depending on joint type].

property damping: torch.Tensor#

Current joint damping values [N·s/m or N·m·s/rad, depending on joint type].

property joint_effort_limit: torch.Tensor#

Current joint effort limits [N or N·m, depending on joint type].

property actuator_effort_limit: torch.Tensor#

Actuator effort limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint when configured through actuator_effort_limit; it clips the effort telemetry but is not pushed to the solver. When unset, it tracks the live articulation joint effort limit (joint_effort_limit).

reset(env_ids: Sequence[int] | None = None)[source]#

Reset the internals within the group.

Parameters:

env_ids – List of environment IDs to reset.

compute(control_action: ArticulationActions, joint_pos: torch.Tensor, joint_vel: torch.Tensor) ArticulationActions[source]#

Process the actuator group actions and compute the articulation actions.

For an implicit actuator, the desired control action is returned unchanged because the physics solver applies the PD drive. This method still computes approximate computed and applied effort telemetry from the current joint state. That telemetry may differ from the effort applied internally by the solver.

Parameters:
  • control_action – Desired joint positions [m or rad, depending on joint type], velocities [m/s or rad/s, depending on joint type], and feed-forward efforts [N or N·m, depending on joint type].

  • joint_pos – Current joint positions [m or rad, depending on joint type], shape (num_envs, num_joints).

  • joint_vel – Current joint velocities [m/s or rad/s, depending on joint type], shape (num_envs, num_joints).

Returns:

Desired joint positions [m or rad, depending on joint type], velocities [m/s or rad/s, depending on joint type], and efforts [N or N·m, depending on joint type].

property effort_limit: torch.Tensor#

Deprecated actuator effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: Use actuator_effort_limit instead. This alias will be removed in 4.0.

property joint_indices: slice | torch.Tensor#

Articulation’s joint indices that are part of the group.

Note

If slice(None) is returned, then the group contains all the joints in the articulation. We do this to avoid unnecessary indexing of the joints for performance reasons.

property joint_names: list[str]#

Articulation’s joint names that are part of the group.

property num_joints: int#

Number of actuators in the group.

property velocity_limit: torch.Tensor#

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit instead. This alias will be removed in 4.0.

computed_effort: torch.Tensor#

The computed effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

applied_effort: torch.Tensor#

The applied effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

This is the effort obtained after clipping the computed_effort based on the actuator characteristics.

actuator_velocity_limit: torch.Tensor#

The actuator velocity limit [m/s or rad/s, depending on joint type]. Shape is (num_envs, num_joints).

The peak velocity of the actuated joint (the actuator’s rated speed reflected at the joint, after any gearbox). Feeds the articulation data buffers (e.g. soft joint velocity limits) and explicit-model effort clipping; it is not pushed to the physics solver. Defaults to joint_velocity_limit when only the solver constraint is configured.

class isaaclab.actuators.ImplicitActuatorCfg[source]#

Bases: ActuatorBaseCfg

Configuration for an implicit actuator.

Note

The PD control is handled implicitly by the simulation.

Attributes:

joint_names_expr

Articulation's joint names that are part of the group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

Velocity limit of the joints in the group.

joint_effort_limit

Construction-time joint solver effort override [N or N·m, depending on joint type].

joint_velocity_limit

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

effort_limit_sim

Deprecated alias for joint_effort_limit.

velocity_limit_sim

Deprecated alias for joint_velocity_limit.

stiffness

Stiffness gains (also known as p-gain) of the joints in the group.

damping

Damping gains (also known as d-gain) of the joints in the group.

armature

Armature of the joints in the group.

friction

The static friction coefficient of the joints in the group.

dynamic_friction

The dynamic friction coefficient of the joints in the group.

viscous_friction

The viscous friction coefficient of the joints in the group.

effort_limit

Deprecated effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated velocity limit [m/s or rad/s, depending on joint type].

joint_names_expr: list[str]#

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. “.*”).

actuator_effort_limit: dict[str, float] | float | None#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint. Explicit actuator models clip their computed effort with it; implicit actuators use it as the model-facing limit for effort telemetry. If None, it defaults to the authored/USD joint effort limit (explicit) or tracks the live solver limit (implicit). It is not a solver limit; that is joint_effort_limit.

RemotizedPDActuator instead uses the angle-dependent limits in its joint_parameter_lookup.

actuator_velocity_limit: dict[str, float] | float | None#

Velocity limit of the joints in the group. Defaults to None.

This limit is used by the actuator model. If None, the limit is set to the value specified in the USD joint prim.

Attention

This attribute describes the actuator’s peak velocity, i.e. the actuator’s rated speed reflected at the joint (after any gearbox). It populates the actuator data buffers (e.g. soft_joint_vel_limits, read by velocity-limit terminations and rewards). Explicit models with speed-dependent limits, such as DCMotor, also use it to clip effort. It is not pushed to the physics solver.

Use joint_velocity_limit to request a solver-level hard clamp. A physical actuator limits joint speed through its torque curve rather than a kinematic clamp, so the two limits are resolved independently. When only joint_velocity_limit is set, it also serves as the joint velocity limit.

joint_effort_limit: dict[str, float] | float | None#

Construction-time joint solver effort override [N or N·m, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData.

joint_velocity_limit: dict[str, float] | float | None#

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData; enforcement is backend-dependent.

effort_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_effort_limit.

Deprecated since version 3.0: Use joint_effort_limit instead. This alias will be removed in 4.0.

velocity_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_velocity_limit.

Deprecated since version 3.0: Use joint_velocity_limit instead. This alias will be removed in 4.0.

stiffness: dict[str, float] | float | None#

Stiffness gains (also known as p-gain) of the joints in the group.

The behavior of the stiffness is different for implicit and explicit actuators. For implicit actuators, the stiffness gets set into the physics engine directly. For explicit actuators, the stiffness is used by the actuator model to compute the joint efforts.

If None, the stiffness is set to the value from the USD joint prim.

damping: dict[str, float] | float | None#

Damping gains (also known as d-gain) of the joints in the group.

The behavior of the damping is different for implicit and explicit actuators. For implicit actuators, the damping gets set into the physics engine directly. For explicit actuators, the damping gain is used by the actuator model to compute the joint efforts.

If None, the damping is set to the value from the USD joint prim.

armature: dict[str, float] | float | None#

Armature of the joints in the group. Defaults to None.

The armature is directly added to the corresponding joint-space inertia. It helps improve the simulation stability by reducing the joint velocities.

It is a physics engine solver parameter that gets set into the simulation.

If None, the armature is set to the value from the USD joint prim.

friction: dict[str, float] | float | None#

The static friction coefficient of the joints in the group. Defaults to None.

The joint static friction is a unitless quantity. It relates the magnitude of the spatial force transmitted from the parent body to the child body to the maximal static friction force that may be applied by the solver to resist the joint motion.

Mathematically, this means that: \(F_{resist} \leq \mu F_{spatial}\), where \(F_{resist}\) is the resisting force applied by the solver and \(F_{spatial}\) is the spatial force transmitted from the parent body to the child body. The simulated static friction effect is therefore similar to static and Coulomb static friction.

If None, the joint static friction is set to the value from the USD joint prim.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

dynamic_friction: dict[str, float] | float | None#

The dynamic friction coefficient of the joints in the group. Defaults to None.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

viscous_friction: dict[str, float] | float | None#

The viscous friction coefficient of the joints in the group. Defaults to None.

effort_limit: dict[str, float] | float | None#

Deprecated effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: For explicit actuators, use actuator_effort_limit. For implicit actuators, use joint_effort_limit. This alias will be removed in 4.0.

velocity_limit: dict[str, float] | float | None#

Deprecated velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit for the actuator-model limit or joint_velocity_limit for the solver limit. This alias will be removed in 4.0.

Ideal PD Actuator#

class isaaclab.actuators.IdealPDActuator[source]#

Bases: ActuatorBase

Ideal torque-controlled actuator model with a simple saturation model.

It employs the following model for computing torques for the actuated joint \(j\):

\[\tau_{j, computed} = k_p * (q_{des} - q) + k_d * (\dot{q}_{des} - \dot{q}) + \tau_{ff}\]

where, \(k_p\) and \(k_d\) are joint stiffness and damping gains, \(q\) and \(\dot{q}\) are the current joint positions and velocities, \(q_{des}\), \(\dot{q}_{des}\) and \(\tau_{ff}\) are the desired joint positions, velocities and torques commands.

The model clips the resulting joint effort directly to actuator_effort_limit:

\[\tau_{j, applied} = clip(\tau_{j, computed}, -\tau_{max}, \tau_{max})\]

where \(\tau_{max}\) is the configured joint-side effort limit [N or N·m, depending on joint type].

Attributes:

cfg

The configuration for the actuator model.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

effort_limit

Deprecated actuator effort limit [N or N·m, depending on joint type].

is_implicit_model

Flag indicating if the actuator is an implicit or explicit actuator model.

joint_indices

Articulation's joint indices that are part of the group.

joint_names

Articulation's joint names that are part of the group.

num_joints

Number of actuators in the group.

velocity_limit

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

computed_effort

The computed effort [N or N·m, depending on joint type] for the actuator group.

applied_effort

The applied effort [N or N·m, depending on joint type] for the actuator group.

actuator_velocity_limit

The actuator velocity limit [m/s or rad/s, depending on joint type].

Methods:

__init__(cfg, joint_names, joint_ids, ...[, ...])

Initialize the actuator.

reset(env_ids)

Reset the internals within the group.

compute(control_action, joint_pos, joint_vel)

Process the actuator group actions and compute the articulation actions.

cfg: IdealPDActuatorCfg#

The configuration for the actuator model.

actuator_effort_limit: torch.Tensor#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

Shape is (num_envs, num_joints).

__init__(cfg: IdealPDActuatorCfg, joint_names: list[str], joint_ids: slice | torch.Tensor, num_envs: int, device: str, stiffness: torch.Tensor | float = 0.0, damping: torch.Tensor | float = 0.0, actuator_effort_limit: torch.Tensor | float | None = None, actuator_velocity_limit: torch.Tensor | float | None = None, effort_limit: torch.Tensor | float | None = None, velocity_limit: torch.Tensor | float | None = None)[source]#

Initialize the actuator.

The actuator parameters are parsed from the configuration and stored as buffers. If the parameters are not specified in the configuration, then their values provided in the constructor are used.

Note

The constructor defaults are typically read from the backend’s authored joint properties.

Parameters:
  • cfg – The configuration of the actuator model.

  • joint_names – The joint names in the articulation.

  • joint_ids – The joint indices in the articulation. If slice(None), then all the joints in the articulation are part of the group.

  • num_envs – Number of articulations in the view.

  • device – Device used for processing.

  • actuator_effort_limit – Default actuator-model effort clipping limit [N or N·m, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • actuator_velocity_limit – Default actuator velocity limit [m/s or rad/s, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • effort_limit – Deprecated alias for actuator_effort_limit.

  • velocity_limit – Deprecated alias for actuator_velocity_limit.

reset(env_ids: Sequence[int])[source]#

Reset the internals within the group.

Parameters:

env_ids – List of environment IDs to reset.

compute(control_action: ArticulationActions, joint_pos: torch.Tensor, joint_vel: torch.Tensor) ArticulationActions[source]#

Process the actuator group actions and compute the articulation actions.

It computes the articulation actions based on the actuator model type

Parameters:
  • control_action – The joint action instance comprising of the desired joint positions, joint velocities and (feed-forward) joint efforts.

  • joint_pos – The current joint positions of the joints in the group. Shape is (num_envs, num_joints).

  • joint_vel – The current joint velocities of the joints in the group. Shape is (num_envs, num_joints).

Returns:

The computed desired joint positions, joint velocities and joint efforts.

property effort_limit: torch.Tensor#

Deprecated actuator effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: Use actuator_effort_limit instead. This alias will be removed in 4.0.

is_implicit_model: ClassVar[bool] = False#

Flag indicating if the actuator is an implicit or explicit actuator model.

If a class inherits from ImplicitActuator, then this flag should be set to True.

property joint_indices: slice | torch.Tensor#

Articulation’s joint indices that are part of the group.

Note

If slice(None) is returned, then the group contains all the joints in the articulation. We do this to avoid unnecessary indexing of the joints for performance reasons.

property joint_names: list[str]#

Articulation’s joint names that are part of the group.

property num_joints: int#

Number of actuators in the group.

property velocity_limit: torch.Tensor#

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit instead. This alias will be removed in 4.0.

computed_effort: torch.Tensor#

The computed effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

applied_effort: torch.Tensor#

The applied effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

This is the effort obtained after clipping the computed_effort based on the actuator characteristics.

actuator_velocity_limit: torch.Tensor#

The actuator velocity limit [m/s or rad/s, depending on joint type]. Shape is (num_envs, num_joints).

The peak velocity of the actuated joint (the actuator’s rated speed reflected at the joint, after any gearbox). Feeds the articulation data buffers (e.g. soft joint velocity limits) and explicit-model effort clipping; it is not pushed to the physics solver. Defaults to joint_velocity_limit when only the solver constraint is configured.

class isaaclab.actuators.IdealPDActuatorCfg[source]#

Bases: ActuatorBaseCfg

Configuration for an ideal PD actuator.

Attributes:

joint_names_expr

Articulation's joint names that are part of the group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

Velocity limit of the joints in the group.

joint_effort_limit

Construction-time joint solver effort override [N or N·m, depending on joint type].

joint_velocity_limit

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

effort_limit_sim

Deprecated alias for joint_effort_limit.

velocity_limit_sim

Deprecated alias for joint_velocity_limit.

stiffness

Stiffness gains (also known as p-gain) of the joints in the group.

damping

Damping gains (also known as d-gain) of the joints in the group.

armature

Armature of the joints in the group.

friction

The static friction coefficient of the joints in the group.

dynamic_friction

The dynamic friction coefficient of the joints in the group.

viscous_friction

The viscous friction coefficient of the joints in the group.

effort_limit

Deprecated effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated velocity limit [m/s or rad/s, depending on joint type].

joint_names_expr: list[str]#

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. “.*”).

actuator_effort_limit: dict[str, float] | float | None#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint. Explicit actuator models clip their computed effort with it; implicit actuators use it as the model-facing limit for effort telemetry. If None, it defaults to the authored/USD joint effort limit (explicit) or tracks the live solver limit (implicit). It is not a solver limit; that is joint_effort_limit.

RemotizedPDActuator instead uses the angle-dependent limits in its joint_parameter_lookup.

actuator_velocity_limit: dict[str, float] | float | None#

Velocity limit of the joints in the group. Defaults to None.

This limit is used by the actuator model. If None, the limit is set to the value specified in the USD joint prim.

Attention

This attribute describes the actuator’s peak velocity, i.e. the actuator’s rated speed reflected at the joint (after any gearbox). It populates the actuator data buffers (e.g. soft_joint_vel_limits, read by velocity-limit terminations and rewards). Explicit models with speed-dependent limits, such as DCMotor, also use it to clip effort. It is not pushed to the physics solver.

Use joint_velocity_limit to request a solver-level hard clamp. A physical actuator limits joint speed through its torque curve rather than a kinematic clamp, so the two limits are resolved independently. When only joint_velocity_limit is set, it also serves as the joint velocity limit.

joint_effort_limit: dict[str, float] | float | None#

Construction-time joint solver effort override [N or N·m, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData.

joint_velocity_limit: dict[str, float] | float | None#

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData; enforcement is backend-dependent.

effort_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_effort_limit.

Deprecated since version 3.0: Use joint_effort_limit instead. This alias will be removed in 4.0.

velocity_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_velocity_limit.

Deprecated since version 3.0: Use joint_velocity_limit instead. This alias will be removed in 4.0.

stiffness: dict[str, float] | float | None#

Stiffness gains (also known as p-gain) of the joints in the group.

The behavior of the stiffness is different for implicit and explicit actuators. For implicit actuators, the stiffness gets set into the physics engine directly. For explicit actuators, the stiffness is used by the actuator model to compute the joint efforts.

If None, the stiffness is set to the value from the USD joint prim.

damping: dict[str, float] | float | None#

Damping gains (also known as d-gain) of the joints in the group.

The behavior of the damping is different for implicit and explicit actuators. For implicit actuators, the damping gets set into the physics engine directly. For explicit actuators, the damping gain is used by the actuator model to compute the joint efforts.

If None, the damping is set to the value from the USD joint prim.

armature: dict[str, float] | float | None#

Armature of the joints in the group. Defaults to None.

The armature is directly added to the corresponding joint-space inertia. It helps improve the simulation stability by reducing the joint velocities.

It is a physics engine solver parameter that gets set into the simulation.

If None, the armature is set to the value from the USD joint prim.

friction: dict[str, float] | float | None#

The static friction coefficient of the joints in the group. Defaults to None.

The joint static friction is a unitless quantity. It relates the magnitude of the spatial force transmitted from the parent body to the child body to the maximal static friction force that may be applied by the solver to resist the joint motion.

Mathematically, this means that: \(F_{resist} \leq \mu F_{spatial}\), where \(F_{resist}\) is the resisting force applied by the solver and \(F_{spatial}\) is the spatial force transmitted from the parent body to the child body. The simulated static friction effect is therefore similar to static and Coulomb static friction.

If None, the joint static friction is set to the value from the USD joint prim.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

dynamic_friction: dict[str, float] | float | None#

The dynamic friction coefficient of the joints in the group. Defaults to None.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

viscous_friction: dict[str, float] | float | None#

The viscous friction coefficient of the joints in the group. Defaults to None.

effort_limit: dict[str, float] | float | None#

Deprecated effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: For explicit actuators, use actuator_effort_limit. For implicit actuators, use joint_effort_limit. This alias will be removed in 4.0.

velocity_limit: dict[str, float] | float | None#

Deprecated velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit for the actuator-model limit or joint_velocity_limit for the solver limit. This alias will be removed in 4.0.

DC Motor Actuator#

class isaaclab.actuators.DCMotor[source]#

Bases: IdealPDActuator

Direct control (DC) motor actuator model with velocity-based saturation model.

It uses the same model as the IdealPDActuator for computing the torques from input commands. However, it implements a saturation model defined by a linear four quadrant DC motor torque-speed curve.

A DC motor is a type of electric motor that is powered by direct current electricity. In most cases, the motor is connected to a constant source of voltage supply, and the current is controlled by a rheostat. Depending on various design factors such as windings and materials, the motor can draw a limited maximum power from the electronic source, which limits the produced motor torque and speed.

A DC motor characteristics are defined by the following parameters:

  • No-load speed (\(\dot{q}_{motor, max}\)) [m/s or rad/s, depending on joint type]: The maximum-rated speed of the motor at zero torque (actuator_velocity_limit).

  • Stall torque (\(\tau_{motor, stall}\)): The maximum-rated torque produced at zero speed [N or N·m, depending on joint type] (saturation_effort).

  • Continuous torque (\(\tau_{motor, con}\)) [N or N·m, depending on joint type]: The maximum torque that can be outputted for a short period. This is often enforced on the current drives for a DC motor to limit overheating, prevent mechanical damage, or enforced by electrical limitations (actuator_effort_limit).

  • Corner velocity (\(V_{c}\)) [m/s or rad/s, depending on joint type]: The velocity where the torque-speed curve intersects with continuous torque.

Based on these parameters, the instantaneous minimum and maximum torques for velocities between corner velocities (where torque-speed curve intersects with continuous torque) are defined as follows:

\[\begin{split}\tau_{j, max}(\dot{q}) & = clip \left (\tau_{j, stall} \times \left(1 - \frac{\dot{q}}{\dot{q}_{j, max}}\right), -∞, \tau_{j, con} \right) \\ \tau_{j, min}(\dot{q}) & = clip \left (\tau_{j, stall} \times \left( -1 - \frac{\dot{q}}{\dot{q}_{j, max}}\right), - \tau_{j, con}, ∞ \right)\end{split}\]

where \(\gamma\) is the gear ratio of the gear box connecting the motor and the actuated joint ends, \(\dot{q}_{j, max} = \gamma^{-1} \times \dot{q}_{motor, max}\), \(\tau_{j, con} = \gamma \times \tau_{motor, con}\) and \(\tau_{j, stall} = \gamma \times \tau_{motor, stall}\) are the maximum joint velocity, continuous joint torque and stall torque, respectively. These parameters are read from the configuration instance passed to the class.

Using these values, the computed torques are clipped to the minimum and maximum values based on the instantaneous joint velocity:

\[\tau_{j, applied} = clip(\tau_{computed}, \tau_{j, min}(\dot{q}), \tau_{j, max}(\dot{q}))\]

If the velocity of the joint is outside corner velocities (this would be due to external forces) the applied output torque will be driven to the continuous torque (actuator_effort_limit).

The figure below demonstrates the clipping action for example (velocity, torque) pairs.

The effort clipping as a function of joint velocity for a linear DC Motor.

Attributes:

cfg

The configuration for the actuator model.

effort_limit

Deprecated actuator effort limit [N or N·m, depending on joint type].

is_implicit_model

Flag indicating if the actuator is an implicit or explicit actuator model.

joint_indices

Articulation's joint indices that are part of the group.

joint_names

Articulation's joint names that are part of the group.

num_joints

Number of actuators in the group.

velocity_limit

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

computed_effort

The computed effort [N or N·m, depending on joint type] for the actuator group.

applied_effort

The applied effort [N or N·m, depending on joint type] for the actuator group.

actuator_velocity_limit

The actuator velocity limit [m/s or rad/s, depending on joint type].

Methods:

__init__(cfg, *args, **kwargs)

Initialize the actuator.

compute(control_action, joint_pos, joint_vel)

Process the actuator group actions and compute the articulation actions.

reset(env_ids)

Reset the internals within the group.

cfg: DCMotorCfg#

The configuration for the actuator model.

__init__(cfg: DCMotorCfg, *args, **kwargs)[source]#

Initialize the actuator.

The actuator parameters are parsed from the configuration and stored as buffers. If the parameters are not specified in the configuration, then their values provided in the constructor are used.

Note

The constructor defaults are typically read from the backend’s authored joint properties.

Parameters:
  • cfg – The configuration of the actuator model.

  • joint_names – The joint names in the articulation.

  • joint_ids – The joint indices in the articulation. If slice(None), then all the joints in the articulation are part of the group.

  • num_envs – Number of articulations in the view.

  • device – Device used for processing.

  • actuator_effort_limit – Default actuator-model effort clipping limit [N or N·m, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • actuator_velocity_limit – Default actuator velocity limit [m/s or rad/s, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • effort_limit – Deprecated alias for actuator_effort_limit.

  • velocity_limit – Deprecated alias for actuator_velocity_limit.

compute(control_action: ArticulationActions, joint_pos: torch.Tensor, joint_vel: torch.Tensor) ArticulationActions[source]#

Process the actuator group actions and compute the articulation actions.

It computes the articulation actions based on the actuator model type

Parameters:
  • control_action – The joint action instance comprising of the desired joint positions, joint velocities and (feed-forward) joint efforts.

  • joint_pos – The current joint positions of the joints in the group. Shape is (num_envs, num_joints).

  • joint_vel – The current joint velocities of the joints in the group. Shape is (num_envs, num_joints).

Returns:

The computed desired joint positions, joint velocities and joint efforts.

property effort_limit: torch.Tensor#

Deprecated actuator effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: Use actuator_effort_limit instead. This alias will be removed in 4.0.

is_implicit_model: ClassVar[bool] = False#

Flag indicating if the actuator is an implicit or explicit actuator model.

If a class inherits from ImplicitActuator, then this flag should be set to True.

property joint_indices: slice | torch.Tensor#

Articulation’s joint indices that are part of the group.

Note

If slice(None) is returned, then the group contains all the joints in the articulation. We do this to avoid unnecessary indexing of the joints for performance reasons.

property joint_names: list[str]#

Articulation’s joint names that are part of the group.

property num_joints: int#

Number of actuators in the group.

reset(env_ids: Sequence[int])#

Reset the internals within the group.

Parameters:

env_ids – List of environment IDs to reset.

property velocity_limit: torch.Tensor#

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit instead. This alias will be removed in 4.0.

actuator_effort_limit: torch.Tensor#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

Shape is (num_envs, num_joints).

computed_effort: torch.Tensor#

The computed effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

applied_effort: torch.Tensor#

The applied effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

This is the effort obtained after clipping the computed_effort based on the actuator characteristics.

actuator_velocity_limit: torch.Tensor#

The actuator velocity limit [m/s or rad/s, depending on joint type]. Shape is (num_envs, num_joints).

The peak velocity of the actuated joint (the actuator’s rated speed reflected at the joint, after any gearbox). Feeds the articulation data buffers (e.g. soft joint velocity limits) and explicit-model effort clipping; it is not pushed to the physics solver. Defaults to joint_velocity_limit when only the solver constraint is configured.

class isaaclab.actuators.DCMotorCfg[source]#

Bases: IdealPDActuatorCfg

Configuration for direct control (DC) motor actuator model.

Attributes:

saturation_effort

Peak motor force/torque of the electric DC motor (in N-m).

joint_names_expr

Articulation's joint names that are part of the group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

Velocity limit of the joints in the group.

joint_effort_limit

Construction-time joint solver effort override [N or N·m, depending on joint type].

joint_velocity_limit

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

effort_limit_sim

Deprecated alias for joint_effort_limit.

velocity_limit_sim

Deprecated alias for joint_velocity_limit.

stiffness

Stiffness gains (also known as p-gain) of the joints in the group.

damping

Damping gains (also known as d-gain) of the joints in the group.

armature

Armature of the joints in the group.

friction

The static friction coefficient of the joints in the group.

dynamic_friction

The dynamic friction coefficient of the joints in the group.

viscous_friction

The viscous friction coefficient of the joints in the group.

effort_limit

Deprecated effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated velocity limit [m/s or rad/s, depending on joint type].

saturation_effort: float#

Peak motor force/torque of the electric DC motor (in N-m).

joint_names_expr: list[str]#

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. “.*”).

actuator_effort_limit: dict[str, float] | float | None#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint. Explicit actuator models clip their computed effort with it; implicit actuators use it as the model-facing limit for effort telemetry. If None, it defaults to the authored/USD joint effort limit (explicit) or tracks the live solver limit (implicit). It is not a solver limit; that is joint_effort_limit.

RemotizedPDActuator instead uses the angle-dependent limits in its joint_parameter_lookup.

actuator_velocity_limit: dict[str, float] | float | None#

Velocity limit of the joints in the group. Defaults to None.

This limit is used by the actuator model. If None, the limit is set to the value specified in the USD joint prim.

Attention

This attribute describes the actuator’s peak velocity, i.e. the actuator’s rated speed reflected at the joint (after any gearbox). It populates the actuator data buffers (e.g. soft_joint_vel_limits, read by velocity-limit terminations and rewards). Explicit models with speed-dependent limits, such as DCMotor, also use it to clip effort. It is not pushed to the physics solver.

Use joint_velocity_limit to request a solver-level hard clamp. A physical actuator limits joint speed through its torque curve rather than a kinematic clamp, so the two limits are resolved independently. When only joint_velocity_limit is set, it also serves as the joint velocity limit.

joint_effort_limit: dict[str, float] | float | None#

Construction-time joint solver effort override [N or N·m, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData.

joint_velocity_limit: dict[str, float] | float | None#

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData; enforcement is backend-dependent.

effort_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_effort_limit.

Deprecated since version 3.0: Use joint_effort_limit instead. This alias will be removed in 4.0.

velocity_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_velocity_limit.

Deprecated since version 3.0: Use joint_velocity_limit instead. This alias will be removed in 4.0.

stiffness: dict[str, float] | float | None#

Stiffness gains (also known as p-gain) of the joints in the group.

The behavior of the stiffness is different for implicit and explicit actuators. For implicit actuators, the stiffness gets set into the physics engine directly. For explicit actuators, the stiffness is used by the actuator model to compute the joint efforts.

If None, the stiffness is set to the value from the USD joint prim.

damping: dict[str, float] | float | None#

Damping gains (also known as d-gain) of the joints in the group.

The behavior of the damping is different for implicit and explicit actuators. For implicit actuators, the damping gets set into the physics engine directly. For explicit actuators, the damping gain is used by the actuator model to compute the joint efforts.

If None, the damping is set to the value from the USD joint prim.

armature: dict[str, float] | float | None#

Armature of the joints in the group. Defaults to None.

The armature is directly added to the corresponding joint-space inertia. It helps improve the simulation stability by reducing the joint velocities.

It is a physics engine solver parameter that gets set into the simulation.

If None, the armature is set to the value from the USD joint prim.

friction: dict[str, float] | float | None#

The static friction coefficient of the joints in the group. Defaults to None.

The joint static friction is a unitless quantity. It relates the magnitude of the spatial force transmitted from the parent body to the child body to the maximal static friction force that may be applied by the solver to resist the joint motion.

Mathematically, this means that: \(F_{resist} \leq \mu F_{spatial}\), where \(F_{resist}\) is the resisting force applied by the solver and \(F_{spatial}\) is the spatial force transmitted from the parent body to the child body. The simulated static friction effect is therefore similar to static and Coulomb static friction.

If None, the joint static friction is set to the value from the USD joint prim.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

dynamic_friction: dict[str, float] | float | None#

The dynamic friction coefficient of the joints in the group. Defaults to None.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

viscous_friction: dict[str, float] | float | None#

The viscous friction coefficient of the joints in the group. Defaults to None.

effort_limit: dict[str, float] | float | None#

Deprecated effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: For explicit actuators, use actuator_effort_limit. For implicit actuators, use joint_effort_limit. This alias will be removed in 4.0.

velocity_limit: dict[str, float] | float | None#

Deprecated velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit for the actuator-model limit or joint_velocity_limit for the solver limit. This alias will be removed in 4.0.

Delayed PD Actuator#

class isaaclab.actuators.DelayedPDActuator[source]#

Bases: IdealPDActuator

Ideal PD actuator with delayed command application.

This class extends the IdealPDActuator class by adding a delay to the actuator commands. The delay is implemented using a circular buffer that stores the actuator commands for a certain number of physics steps. The most recent actuation value is pushed to the buffer at every physics step, but the final actuation value applied to the simulation is lagged by a certain number of physics steps.

The amount of time lag is configurable and can be set to a random value between the minimum and maximum time lag bounds at every reset. The minimum and maximum time lag values are set in the configuration instance passed to the class.

Attributes:

cfg

The configuration for the actuator model.

effort_limit

Deprecated actuator effort limit [N or N·m, depending on joint type].

is_implicit_model

Flag indicating if the actuator is an implicit or explicit actuator model.

joint_indices

Articulation's joint indices that are part of the group.

joint_names

Articulation's joint names that are part of the group.

num_joints

Number of actuators in the group.

velocity_limit

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

computed_effort

The computed effort [N or N·m, depending on joint type] for the actuator group.

applied_effort

The applied effort [N or N·m, depending on joint type] for the actuator group.

actuator_velocity_limit

The actuator velocity limit [m/s or rad/s, depending on joint type].

Methods:

__init__(cfg, *args, **kwargs)

Initialize the actuator.

reset(env_ids)

Reset the internals within the group.

compute(control_action, joint_pos, joint_vel)

Process the actuator group actions and compute the articulation actions.

cfg: DelayedPDActuatorCfg#

The configuration for the actuator model.

__init__(cfg: DelayedPDActuatorCfg, *args, **kwargs)[source]#

Initialize the actuator.

The actuator parameters are parsed from the configuration and stored as buffers. If the parameters are not specified in the configuration, then their values provided in the constructor are used.

Note

The constructor defaults are typically read from the backend’s authored joint properties.

Parameters:
  • cfg – The configuration of the actuator model.

  • joint_names – The joint names in the articulation.

  • joint_ids – The joint indices in the articulation. If slice(None), then all the joints in the articulation are part of the group.

  • num_envs – Number of articulations in the view.

  • device – Device used for processing.

  • actuator_effort_limit – Default actuator-model effort clipping limit [N or N·m, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • actuator_velocity_limit – Default actuator velocity limit [m/s or rad/s, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • effort_limit – Deprecated alias for actuator_effort_limit.

  • velocity_limit – Deprecated alias for actuator_velocity_limit.

reset(env_ids: Sequence[int])[source]#

Reset the internals within the group.

Parameters:

env_ids – List of environment IDs to reset.

compute(control_action: ArticulationActions, joint_pos: torch.Tensor, joint_vel: torch.Tensor) ArticulationActions[source]#

Process the actuator group actions and compute the articulation actions.

It computes the articulation actions based on the actuator model type

Parameters:
  • control_action – The joint action instance comprising of the desired joint positions, joint velocities and (feed-forward) joint efforts.

  • joint_pos – The current joint positions of the joints in the group. Shape is (num_envs, num_joints).

  • joint_vel – The current joint velocities of the joints in the group. Shape is (num_envs, num_joints).

Returns:

The computed desired joint positions, joint velocities and joint efforts.

property effort_limit: torch.Tensor#

Deprecated actuator effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: Use actuator_effort_limit instead. This alias will be removed in 4.0.

is_implicit_model: ClassVar[bool] = False#

Flag indicating if the actuator is an implicit or explicit actuator model.

If a class inherits from ImplicitActuator, then this flag should be set to True.

property joint_indices: slice | torch.Tensor#

Articulation’s joint indices that are part of the group.

Note

If slice(None) is returned, then the group contains all the joints in the articulation. We do this to avoid unnecessary indexing of the joints for performance reasons.

property joint_names: list[str]#

Articulation’s joint names that are part of the group.

property num_joints: int#

Number of actuators in the group.

property velocity_limit: torch.Tensor#

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit instead. This alias will be removed in 4.0.

actuator_effort_limit: torch.Tensor#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

Shape is (num_envs, num_joints).

computed_effort: torch.Tensor#

The computed effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

applied_effort: torch.Tensor#

The applied effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

This is the effort obtained after clipping the computed_effort based on the actuator characteristics.

actuator_velocity_limit: torch.Tensor#

The actuator velocity limit [m/s or rad/s, depending on joint type]. Shape is (num_envs, num_joints).

The peak velocity of the actuated joint (the actuator’s rated speed reflected at the joint, after any gearbox). Feeds the articulation data buffers (e.g. soft joint velocity limits) and explicit-model effort clipping; it is not pushed to the physics solver. Defaults to joint_velocity_limit when only the solver constraint is configured.

class isaaclab.actuators.DelayedPDActuatorCfg[source]#

Bases: IdealPDActuatorCfg

Configuration for a delayed PD actuator.

Attributes:

min_delay

Minimum number of physics time-steps with which the actuator command may be delayed.

max_delay

Maximum number of physics time-steps with which the actuator command may be delayed.

joint_names_expr

Articulation's joint names that are part of the group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

Velocity limit of the joints in the group.

joint_effort_limit

Construction-time joint solver effort override [N or N·m, depending on joint type].

joint_velocity_limit

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

effort_limit_sim

Deprecated alias for joint_effort_limit.

velocity_limit_sim

Deprecated alias for joint_velocity_limit.

stiffness

Stiffness gains (also known as p-gain) of the joints in the group.

damping

Damping gains (also known as d-gain) of the joints in the group.

armature

Armature of the joints in the group.

friction

The static friction coefficient of the joints in the group.

dynamic_friction

The dynamic friction coefficient of the joints in the group.

viscous_friction

The viscous friction coefficient of the joints in the group.

effort_limit

Deprecated effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated velocity limit [m/s or rad/s, depending on joint type].

min_delay: int#

Minimum number of physics time-steps with which the actuator command may be delayed. Defaults to 0.

max_delay: int#

Maximum number of physics time-steps with which the actuator command may be delayed. Defaults to 0.

joint_names_expr: list[str]#

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. “.*”).

actuator_effort_limit: dict[str, float] | float | None#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint. Explicit actuator models clip their computed effort with it; implicit actuators use it as the model-facing limit for effort telemetry. If None, it defaults to the authored/USD joint effort limit (explicit) or tracks the live solver limit (implicit). It is not a solver limit; that is joint_effort_limit.

RemotizedPDActuator instead uses the angle-dependent limits in its joint_parameter_lookup.

actuator_velocity_limit: dict[str, float] | float | None#

Velocity limit of the joints in the group. Defaults to None.

This limit is used by the actuator model. If None, the limit is set to the value specified in the USD joint prim.

Attention

This attribute describes the actuator’s peak velocity, i.e. the actuator’s rated speed reflected at the joint (after any gearbox). It populates the actuator data buffers (e.g. soft_joint_vel_limits, read by velocity-limit terminations and rewards). Explicit models with speed-dependent limits, such as DCMotor, also use it to clip effort. It is not pushed to the physics solver.

Use joint_velocity_limit to request a solver-level hard clamp. A physical actuator limits joint speed through its torque curve rather than a kinematic clamp, so the two limits are resolved independently. When only joint_velocity_limit is set, it also serves as the joint velocity limit.

joint_effort_limit: dict[str, float] | float | None#

Construction-time joint solver effort override [N or N·m, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData.

joint_velocity_limit: dict[str, float] | float | None#

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData; enforcement is backend-dependent.

effort_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_effort_limit.

Deprecated since version 3.0: Use joint_effort_limit instead. This alias will be removed in 4.0.

velocity_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_velocity_limit.

Deprecated since version 3.0: Use joint_velocity_limit instead. This alias will be removed in 4.0.

stiffness: dict[str, float] | float | None#

Stiffness gains (also known as p-gain) of the joints in the group.

The behavior of the stiffness is different for implicit and explicit actuators. For implicit actuators, the stiffness gets set into the physics engine directly. For explicit actuators, the stiffness is used by the actuator model to compute the joint efforts.

If None, the stiffness is set to the value from the USD joint prim.

damping: dict[str, float] | float | None#

Damping gains (also known as d-gain) of the joints in the group.

The behavior of the damping is different for implicit and explicit actuators. For implicit actuators, the damping gets set into the physics engine directly. For explicit actuators, the damping gain is used by the actuator model to compute the joint efforts.

If None, the damping is set to the value from the USD joint prim.

armature: dict[str, float] | float | None#

Armature of the joints in the group. Defaults to None.

The armature is directly added to the corresponding joint-space inertia. It helps improve the simulation stability by reducing the joint velocities.

It is a physics engine solver parameter that gets set into the simulation.

If None, the armature is set to the value from the USD joint prim.

friction: dict[str, float] | float | None#

The static friction coefficient of the joints in the group. Defaults to None.

The joint static friction is a unitless quantity. It relates the magnitude of the spatial force transmitted from the parent body to the child body to the maximal static friction force that may be applied by the solver to resist the joint motion.

Mathematically, this means that: \(F_{resist} \leq \mu F_{spatial}\), where \(F_{resist}\) is the resisting force applied by the solver and \(F_{spatial}\) is the spatial force transmitted from the parent body to the child body. The simulated static friction effect is therefore similar to static and Coulomb static friction.

If None, the joint static friction is set to the value from the USD joint prim.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

dynamic_friction: dict[str, float] | float | None#

The dynamic friction coefficient of the joints in the group. Defaults to None.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

viscous_friction: dict[str, float] | float | None#

The viscous friction coefficient of the joints in the group. Defaults to None.

effort_limit: dict[str, float] | float | None#

Deprecated effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: For explicit actuators, use actuator_effort_limit. For implicit actuators, use joint_effort_limit. This alias will be removed in 4.0.

velocity_limit: dict[str, float] | float | None#

Deprecated velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit for the actuator-model limit or joint_velocity_limit for the solver limit. This alias will be removed in 4.0.

Remotized PD Actuator#

class isaaclab.actuators.RemotizedPDActuator[source]#

Bases: DelayedPDActuator

Ideal PD actuator with angle-dependent torque limits.

This class extends DelayedPDActuator with angle-dependent effort limits [N or N·m, depending on joint type]. The limits are applied by querying a lookup table describing the relationship between joint angle [m or rad, depending on joint type] and maximum output effort [N or N·m, depending on joint type]. The lookup table is provided in the configuration instance passed to the class.

The torque limits are interpolated based on the current joint positions and applied to the actuator commands.

Attributes:

effort_limit

Deprecated actuator effort limit [N or N·m, depending on joint type].

is_implicit_model

Flag indicating if the actuator is an implicit or explicit actuator model.

joint_indices

Articulation's joint indices that are part of the group.

joint_names

Articulation's joint names that are part of the group.

num_joints

Number of actuators in the group.

velocity_limit

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

cfg

The configuration for the actuator model.

computed_effort

The computed effort [N or N·m, depending on joint type] for the actuator group.

applied_effort

The applied effort [N or N·m, depending on joint type] for the actuator group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

The actuator velocity limit [m/s or rad/s, depending on joint type].

angle_samples

Lookup joint positions [m or rad, depending on joint type].

transmission_ratio_samples

Dimensionless lookup transmission ratios.

max_torque_samples

Lookup effort limits [N or N·m, depending on joint type].

Methods:

reset(env_ids)

Reset the internals within the group.

__init__(cfg, joint_names, joint_ids, ...[, ...])

Initialize the actuator.

compute(control_action, joint_pos, joint_vel)

Process the actuator group actions and compute the articulation actions.

property effort_limit: torch.Tensor#

Deprecated actuator effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: Use actuator_effort_limit instead. This alias will be removed in 4.0.

is_implicit_model: ClassVar[bool] = False#

Flag indicating if the actuator is an implicit or explicit actuator model.

If a class inherits from ImplicitActuator, then this flag should be set to True.

property joint_indices: slice | torch.Tensor#

Articulation’s joint indices that are part of the group.

Note

If slice(None) is returned, then the group contains all the joints in the articulation. We do this to avoid unnecessary indexing of the joints for performance reasons.

property joint_names: list[str]#

Articulation’s joint names that are part of the group.

property num_joints: int#

Number of actuators in the group.

reset(env_ids: Sequence[int])#

Reset the internals within the group.

Parameters:

env_ids – List of environment IDs to reset.

property velocity_limit: torch.Tensor#

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit instead. This alias will be removed in 4.0.

cfg: DelayedPDActuatorCfg#

The configuration for the actuator model.

computed_effort: torch.Tensor#

The computed effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

applied_effort: torch.Tensor#

The applied effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

This is the effort obtained after clipping the computed_effort based on the actuator characteristics.

__init__(cfg: RemotizedPDActuatorCfg, joint_names: list[str], joint_ids: slice | torch.Tensor, num_envs: int, device: str, stiffness: torch.Tensor | float = 0.0, damping: torch.Tensor | float = 0.0, actuator_effort_limit: torch.Tensor | float | None = None, actuator_velocity_limit: torch.Tensor | float | None = None, effort_limit: torch.Tensor | float | None = None, velocity_limit: torch.Tensor | float | None = None)[source]#

Initialize the actuator.

The actuator parameters are parsed from the configuration and stored as buffers. If the parameters are not specified in the configuration, then their values provided in the constructor are used.

Note

The constructor defaults are typically read from the backend’s authored joint properties.

Parameters:
  • cfg – The configuration of the actuator model.

  • joint_names – The joint names in the articulation.

  • joint_ids – The joint indices in the articulation. If slice(None), then all the joints in the articulation are part of the group.

  • num_envs – Number of articulations in the view.

  • device – Device used for processing.

  • actuator_effort_limit – Default actuator-model effort clipping limit [N or N·m, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • actuator_velocity_limit – Default actuator velocity limit [m/s or rad/s, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • effort_limit – Deprecated alias for actuator_effort_limit.

  • velocity_limit – Deprecated alias for actuator_velocity_limit.

actuator_effort_limit: torch.Tensor#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

Shape is (num_envs, num_joints).

actuator_velocity_limit: torch.Tensor#

The actuator velocity limit [m/s or rad/s, depending on joint type]. Shape is (num_envs, num_joints).

The peak velocity of the actuated joint (the actuator’s rated speed reflected at the joint, after any gearbox). Feeds the articulation data buffers (e.g. soft joint velocity limits) and explicit-model effort clipping; it is not pushed to the physics solver. Defaults to joint_velocity_limit when only the solver constraint is configured.

property angle_samples: torch.Tensor#

Lookup joint positions [m or rad, depending on joint type].

property transmission_ratio_samples: torch.Tensor#

Dimensionless lookup transmission ratios.

property max_torque_samples: torch.Tensor#

Lookup effort limits [N or N·m, depending on joint type].

compute(control_action: ArticulationActions, joint_pos: torch.Tensor, joint_vel: torch.Tensor) ArticulationActions[source]#

Process the actuator group actions and compute the articulation actions.

It computes the articulation actions based on the actuator model type

Parameters:
  • control_action – The joint action instance comprising of the desired joint positions, joint velocities and (feed-forward) joint efforts.

  • joint_pos – The current joint positions of the joints in the group. Shape is (num_envs, num_joints).

  • joint_vel – The current joint velocities of the joints in the group. Shape is (num_envs, num_joints).

Returns:

The computed desired joint positions, joint velocities and joint efforts.

class isaaclab.actuators.RemotizedPDActuatorCfg[source]#

Bases: DelayedPDActuatorCfg

Configuration for a remotized PD actuator.

Note

The torque output limits for this actuator is derived from a linear interpolation of a lookup table in joint_parameter_lookup. This table describes the relationship between joint angles and the output torques.

Attributes:

joint_names_expr

Articulation's joint names that are part of the group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

Velocity limit of the joints in the group.

joint_effort_limit

Construction-time joint solver effort override [N or N·m, depending on joint type].

joint_velocity_limit

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

effort_limit_sim

Deprecated alias for joint_effort_limit.

velocity_limit_sim

Deprecated alias for joint_velocity_limit.

stiffness

Stiffness gains (also known as p-gain) of the joints in the group.

damping

Damping gains (also known as d-gain) of the joints in the group.

armature

Armature of the joints in the group.

friction

The static friction coefficient of the joints in the group.

dynamic_friction

The dynamic friction coefficient of the joints in the group.

viscous_friction

The viscous friction coefficient of the joints in the group.

effort_limit

Deprecated effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated velocity limit [m/s or rad/s, depending on joint type].

min_delay

Minimum number of physics time-steps with which the actuator command may be delayed.

max_delay

Maximum number of physics time-steps with which the actuator command may be delayed.

joint_parameter_lookup

Joint parameter lookup table.

joint_names_expr: list[str]#

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. “.*”).

actuator_effort_limit: dict[str, float] | float | None#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint. Explicit actuator models clip their computed effort with it; implicit actuators use it as the model-facing limit for effort telemetry. If None, it defaults to the authored/USD joint effort limit (explicit) or tracks the live solver limit (implicit). It is not a solver limit; that is joint_effort_limit.

RemotizedPDActuator instead uses the angle-dependent limits in its joint_parameter_lookup.

actuator_velocity_limit: dict[str, float] | float | None#

Velocity limit of the joints in the group. Defaults to None.

This limit is used by the actuator model. If None, the limit is set to the value specified in the USD joint prim.

Attention

This attribute describes the actuator’s peak velocity, i.e. the actuator’s rated speed reflected at the joint (after any gearbox). It populates the actuator data buffers (e.g. soft_joint_vel_limits, read by velocity-limit terminations and rewards). Explicit models with speed-dependent limits, such as DCMotor, also use it to clip effort. It is not pushed to the physics solver.

Use joint_velocity_limit to request a solver-level hard clamp. A physical actuator limits joint speed through its torque curve rather than a kinematic clamp, so the two limits are resolved independently. When only joint_velocity_limit is set, it also serves as the joint velocity limit.

joint_effort_limit: dict[str, float] | float | None#

Construction-time joint solver effort override [N or N·m, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData.

joint_velocity_limit: dict[str, float] | float | None#

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData; enforcement is backend-dependent.

effort_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_effort_limit.

Deprecated since version 3.0: Use joint_effort_limit instead. This alias will be removed in 4.0.

velocity_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_velocity_limit.

Deprecated since version 3.0: Use joint_velocity_limit instead. This alias will be removed in 4.0.

stiffness: dict[str, float] | float | None#

Stiffness gains (also known as p-gain) of the joints in the group.

The behavior of the stiffness is different for implicit and explicit actuators. For implicit actuators, the stiffness gets set into the physics engine directly. For explicit actuators, the stiffness is used by the actuator model to compute the joint efforts.

If None, the stiffness is set to the value from the USD joint prim.

damping: dict[str, float] | float | None#

Damping gains (also known as d-gain) of the joints in the group.

The behavior of the damping is different for implicit and explicit actuators. For implicit actuators, the damping gets set into the physics engine directly. For explicit actuators, the damping gain is used by the actuator model to compute the joint efforts.

If None, the damping is set to the value from the USD joint prim.

armature: dict[str, float] | float | None#

Armature of the joints in the group. Defaults to None.

The armature is directly added to the corresponding joint-space inertia. It helps improve the simulation stability by reducing the joint velocities.

It is a physics engine solver parameter that gets set into the simulation.

If None, the armature is set to the value from the USD joint prim.

friction: dict[str, float] | float | None#

The static friction coefficient of the joints in the group. Defaults to None.

The joint static friction is a unitless quantity. It relates the magnitude of the spatial force transmitted from the parent body to the child body to the maximal static friction force that may be applied by the solver to resist the joint motion.

Mathematically, this means that: \(F_{resist} \leq \mu F_{spatial}\), where \(F_{resist}\) is the resisting force applied by the solver and \(F_{spatial}\) is the spatial force transmitted from the parent body to the child body. The simulated static friction effect is therefore similar to static and Coulomb static friction.

If None, the joint static friction is set to the value from the USD joint prim.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

dynamic_friction: dict[str, float] | float | None#

The dynamic friction coefficient of the joints in the group. Defaults to None.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

viscous_friction: dict[str, float] | float | None#

The viscous friction coefficient of the joints in the group. Defaults to None.

effort_limit: dict[str, float] | float | None#

Deprecated effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: For explicit actuators, use actuator_effort_limit. For implicit actuators, use joint_effort_limit. This alias will be removed in 4.0.

velocity_limit: dict[str, float] | float | None#

Deprecated velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit for the actuator-model limit or joint_velocity_limit for the solver limit. This alias will be removed in 4.0.

min_delay: int#

Minimum number of physics time-steps with which the actuator command may be delayed. Defaults to 0.

max_delay: int#

Maximum number of physics time-steps with which the actuator command may be delayed. Defaults to 0.

joint_parameter_lookup: list[list[float]]#

Joint parameter lookup table. Shape is (num_lookup_points, 3).

This tensor describes the relationship between the joint angle (rad), the transmission ratio (in/out), and the output torque (N*m). The table is used to interpolate the output torque based on the joint angle.

MLP Network Actuator#

class isaaclab.actuators.ActuatorNetMLP[source]#

Bases: DCMotor

Actuator model based on multi-layer perceptron and joint history.

Many times the analytical model is not sufficient to capture the actuator dynamics, the delay in the actuator response, or the non-linearities in the actuator. In these cases, a neural network model can be used to approximate the actuator dynamics. This model is trained using data collected from the physical actuator and maps the joint state and the desired joint command to the produced torque by the actuator.

This class implements the learned model as a neural network based on the work from Hwangbo et al. [HLD+19]. The class stores the history of the joint positions errors and velocities which are used to provide input to the neural network. The model is loaded as a TorchScript.

Note

Only the desired joint positions are used as inputs to the network.

Attributes:

cfg

The configuration of the actuator model.

effort_limit

Deprecated actuator effort limit [N or N·m, depending on joint type].

is_implicit_model

Flag indicating if the actuator is an implicit or explicit actuator model.

joint_indices

Articulation's joint indices that are part of the group.

joint_names

Articulation's joint names that are part of the group.

num_joints

Number of actuators in the group.

velocity_limit

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

computed_effort

The computed effort [N or N·m, depending on joint type] for the actuator group.

applied_effort

The applied effort [N or N·m, depending on joint type] for the actuator group.

actuator_velocity_limit

The actuator velocity limit [m/s or rad/s, depending on joint type].

Methods:

__init__(cfg, *args, **kwargs)

Initialize the actuator.

reset(env_ids)

Reset the internals within the group.

compute(control_action, joint_pos, joint_vel)

Process the actuator group actions and compute the articulation actions.

cfg: ActuatorNetMLPCfg#

The configuration of the actuator model.

__init__(cfg: ActuatorNetMLPCfg, *args, **kwargs)[source]#

Initialize the actuator.

The actuator parameters are parsed from the configuration and stored as buffers. If the parameters are not specified in the configuration, then their values provided in the constructor are used.

Note

The constructor defaults are typically read from the backend’s authored joint properties.

Parameters:
  • cfg – The configuration of the actuator model.

  • joint_names – The joint names in the articulation.

  • joint_ids – The joint indices in the articulation. If slice(None), then all the joints in the articulation are part of the group.

  • num_envs – Number of articulations in the view.

  • device – Device used for processing.

  • actuator_effort_limit – Default actuator-model effort clipping limit [N or N·m, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • actuator_velocity_limit – Default actuator velocity limit [m/s or rad/s, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • effort_limit – Deprecated alias for actuator_effort_limit.

  • velocity_limit – Deprecated alias for actuator_velocity_limit.

property effort_limit: torch.Tensor#

Deprecated actuator effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: Use actuator_effort_limit instead. This alias will be removed in 4.0.

is_implicit_model: ClassVar[bool] = False#

Flag indicating if the actuator is an implicit or explicit actuator model.

If a class inherits from ImplicitActuator, then this flag should be set to True.

property joint_indices: slice | torch.Tensor#

Articulation’s joint indices that are part of the group.

Note

If slice(None) is returned, then the group contains all the joints in the articulation. We do this to avoid unnecessary indexing of the joints for performance reasons.

property joint_names: list[str]#

Articulation’s joint names that are part of the group.

property num_joints: int#

Number of actuators in the group.

reset(env_ids: Sequence[int])[source]#

Reset the internals within the group.

Parameters:

env_ids – List of environment IDs to reset.

property velocity_limit: torch.Tensor#

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit instead. This alias will be removed in 4.0.

actuator_effort_limit: torch.Tensor#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

Shape is (num_envs, num_joints).

computed_effort: torch.Tensor#

The computed effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

applied_effort: torch.Tensor#

The applied effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

This is the effort obtained after clipping the computed_effort based on the actuator characteristics.

actuator_velocity_limit: torch.Tensor#

The actuator velocity limit [m/s or rad/s, depending on joint type]. Shape is (num_envs, num_joints).

The peak velocity of the actuated joint (the actuator’s rated speed reflected at the joint, after any gearbox). Feeds the articulation data buffers (e.g. soft joint velocity limits) and explicit-model effort clipping; it is not pushed to the physics solver. Defaults to joint_velocity_limit when only the solver constraint is configured.

compute(control_action: ArticulationActions, joint_pos: torch.Tensor, joint_vel: torch.Tensor) ArticulationActions[source]#

Process the actuator group actions and compute the articulation actions.

It computes the articulation actions based on the actuator model type

Parameters:
  • control_action – The joint action instance comprising of the desired joint positions, joint velocities and (feed-forward) joint efforts.

  • joint_pos – The current joint positions of the joints in the group. Shape is (num_envs, num_joints).

  • joint_vel – The current joint velocities of the joints in the group. Shape is (num_envs, num_joints).

Returns:

The computed desired joint positions, joint velocities and joint efforts.

class isaaclab.actuators.ActuatorNetMLPCfg[source]#

Bases: DCMotorCfg

Configuration for MLP-based actuator model.

Attributes:

stiffness

Stiffness gains (also known as p-gain) of the joints in the group.

damping

Damping gains (also known as d-gain) of the joints in the group.

network_file

Path to the file containing network weights.

pos_scale

Scaling of the joint position errors input to the network.

joint_names_expr

Articulation's joint names that are part of the group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

Velocity limit of the joints in the group.

joint_effort_limit

Construction-time joint solver effort override [N or N·m, depending on joint type].

joint_velocity_limit

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

effort_limit_sim

Deprecated alias for joint_effort_limit.

velocity_limit_sim

Deprecated alias for joint_velocity_limit.

armature

Armature of the joints in the group.

friction

The static friction coefficient of the joints in the group.

dynamic_friction

The dynamic friction coefficient of the joints in the group.

viscous_friction

The viscous friction coefficient of the joints in the group.

effort_limit

Deprecated effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated velocity limit [m/s or rad/s, depending on joint type].

saturation_effort

Peak motor force/torque of the electric DC motor (in N-m).

vel_scale

Scaling of the joint velocities input to the network.

torque_scale

Scaling of the joint efforts output from the network.

input_order

Order of the inputs to the network.

input_idx

Indices of the actuator history buffer passed as inputs to the network.

stiffness: dict[str, float] | float | None#

Stiffness gains (also known as p-gain) of the joints in the group.

The behavior of the stiffness is different for implicit and explicit actuators. For implicit actuators, the stiffness gets set into the physics engine directly. For explicit actuators, the stiffness is used by the actuator model to compute the joint efforts.

If None, the stiffness is set to the value from the USD joint prim.

damping: dict[str, float] | float | None#

Damping gains (also known as d-gain) of the joints in the group.

The behavior of the damping is different for implicit and explicit actuators. For implicit actuators, the damping gets set into the physics engine directly. For explicit actuators, the damping gain is used by the actuator model to compute the joint efforts.

If None, the damping is set to the value from the USD joint prim.

network_file: str#

Path to the file containing network weights.

pos_scale: float#

Scaling of the joint position errors input to the network.

joint_names_expr: list[str]#

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. “.*”).

actuator_effort_limit: dict[str, float] | float | None#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint. Explicit actuator models clip their computed effort with it; implicit actuators use it as the model-facing limit for effort telemetry. If None, it defaults to the authored/USD joint effort limit (explicit) or tracks the live solver limit (implicit). It is not a solver limit; that is joint_effort_limit.

RemotizedPDActuator instead uses the angle-dependent limits in its joint_parameter_lookup.

actuator_velocity_limit: dict[str, float] | float | None#

Velocity limit of the joints in the group. Defaults to None.

This limit is used by the actuator model. If None, the limit is set to the value specified in the USD joint prim.

Attention

This attribute describes the actuator’s peak velocity, i.e. the actuator’s rated speed reflected at the joint (after any gearbox). It populates the actuator data buffers (e.g. soft_joint_vel_limits, read by velocity-limit terminations and rewards). Explicit models with speed-dependent limits, such as DCMotor, also use it to clip effort. It is not pushed to the physics solver.

Use joint_velocity_limit to request a solver-level hard clamp. A physical actuator limits joint speed through its torque curve rather than a kinematic clamp, so the two limits are resolved independently. When only joint_velocity_limit is set, it also serves as the joint velocity limit.

joint_effort_limit: dict[str, float] | float | None#

Construction-time joint solver effort override [N or N·m, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData.

joint_velocity_limit: dict[str, float] | float | None#

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData; enforcement is backend-dependent.

effort_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_effort_limit.

Deprecated since version 3.0: Use joint_effort_limit instead. This alias will be removed in 4.0.

velocity_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_velocity_limit.

Deprecated since version 3.0: Use joint_velocity_limit instead. This alias will be removed in 4.0.

armature: dict[str, float] | float | None#

Armature of the joints in the group. Defaults to None.

The armature is directly added to the corresponding joint-space inertia. It helps improve the simulation stability by reducing the joint velocities.

It is a physics engine solver parameter that gets set into the simulation.

If None, the armature is set to the value from the USD joint prim.

friction: dict[str, float] | float | None#

The static friction coefficient of the joints in the group. Defaults to None.

The joint static friction is a unitless quantity. It relates the magnitude of the spatial force transmitted from the parent body to the child body to the maximal static friction force that may be applied by the solver to resist the joint motion.

Mathematically, this means that: \(F_{resist} \leq \mu F_{spatial}\), where \(F_{resist}\) is the resisting force applied by the solver and \(F_{spatial}\) is the spatial force transmitted from the parent body to the child body. The simulated static friction effect is therefore similar to static and Coulomb static friction.

If None, the joint static friction is set to the value from the USD joint prim.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

dynamic_friction: dict[str, float] | float | None#

The dynamic friction coefficient of the joints in the group. Defaults to None.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

viscous_friction: dict[str, float] | float | None#

The viscous friction coefficient of the joints in the group. Defaults to None.

effort_limit: dict[str, float] | float | None#

Deprecated effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: For explicit actuators, use actuator_effort_limit. For implicit actuators, use joint_effort_limit. This alias will be removed in 4.0.

velocity_limit: dict[str, float] | float | None#

Deprecated velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit for the actuator-model limit or joint_velocity_limit for the solver limit. This alias will be removed in 4.0.

saturation_effort: float#

Peak motor force/torque of the electric DC motor (in N-m).

vel_scale: float#

Scaling of the joint velocities input to the network.

torque_scale: float#

Scaling of the joint efforts output from the network.

input_order: Literal['pos_vel', 'vel_pos']#

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]#

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.

LSTM Network Actuator#

class isaaclab.actuators.ActuatorNetLSTM[source]#

Bases: DCMotor

Actuator model based on recurrent neural network (LSTM).

Unlike the MLP implementation Hwangbo et al. [HLD+19], this class implements the learned model as a temporal neural network (LSTM) based on the work from Rudin et al. [RHRH22]. This removes the need of storing a history as the hidden states of the recurrent network captures the history.

Note

Only the desired joint positions are used as inputs to the network.

Attributes:

cfg

The configuration of the actuator model.

effort_limit

Deprecated actuator effort limit [N or N·m, depending on joint type].

is_implicit_model

Flag indicating if the actuator is an implicit or explicit actuator model.

joint_indices

Articulation's joint indices that are part of the group.

joint_names

Articulation's joint names that are part of the group.

num_joints

Number of actuators in the group.

velocity_limit

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

computed_effort

The computed effort [N or N·m, depending on joint type] for the actuator group.

applied_effort

The applied effort [N or N·m, depending on joint type] for the actuator group.

actuator_velocity_limit

The actuator velocity limit [m/s or rad/s, depending on joint type].

Methods:

__init__(cfg, *args, **kwargs)

Initialize the actuator.

reset(env_ids)

Reset the internals within the group.

compute(control_action, joint_pos, joint_vel)

Process the actuator group actions and compute the articulation actions.

cfg: ActuatorNetLSTMCfg#

The configuration of the actuator model.

__init__(cfg: ActuatorNetLSTMCfg, *args, **kwargs)[source]#

Initialize the actuator.

The actuator parameters are parsed from the configuration and stored as buffers. If the parameters are not specified in the configuration, then their values provided in the constructor are used.

Note

The constructor defaults are typically read from the backend’s authored joint properties.

Parameters:
  • cfg – The configuration of the actuator model.

  • joint_names – The joint names in the articulation.

  • joint_ids – The joint indices in the articulation. If slice(None), then all the joints in the articulation are part of the group.

  • num_envs – Number of articulations in the view.

  • device – Device used for processing.

  • actuator_effort_limit – Default actuator-model effort clipping limit [N or N·m, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • actuator_velocity_limit – Default actuator velocity limit [m/s or rad/s, depending on joint type]. Defaults to infinity. If a tensor, then the shape is (num_envs, num_joints).

  • effort_limit – Deprecated alias for actuator_effort_limit.

  • velocity_limit – Deprecated alias for actuator_velocity_limit.

reset(env_ids: Sequence[int])[source]#

Reset the internals within the group.

Parameters:

env_ids – List of environment IDs to reset.

compute(control_action: ArticulationActions, joint_pos: torch.Tensor, joint_vel: torch.Tensor) ArticulationActions[source]#

Process the actuator group actions and compute the articulation actions.

It computes the articulation actions based on the actuator model type

Parameters:
  • control_action – The joint action instance comprising of the desired joint positions, joint velocities and (feed-forward) joint efforts.

  • joint_pos – The current joint positions of the joints in the group. Shape is (num_envs, num_joints).

  • joint_vel – The current joint velocities of the joints in the group. Shape is (num_envs, num_joints).

Returns:

The computed desired joint positions, joint velocities and joint efforts.

property effort_limit: torch.Tensor#

Deprecated actuator effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: Use actuator_effort_limit instead. This alias will be removed in 4.0.

is_implicit_model: ClassVar[bool] = False#

Flag indicating if the actuator is an implicit or explicit actuator model.

If a class inherits from ImplicitActuator, then this flag should be set to True.

property joint_indices: slice | torch.Tensor#

Articulation’s joint indices that are part of the group.

Note

If slice(None) is returned, then the group contains all the joints in the articulation. We do this to avoid unnecessary indexing of the joints for performance reasons.

property joint_names: list[str]#

Articulation’s joint names that are part of the group.

property num_joints: int#

Number of actuators in the group.

property velocity_limit: torch.Tensor#

Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit instead. This alias will be removed in 4.0.

actuator_effort_limit: torch.Tensor#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

Shape is (num_envs, num_joints).

computed_effort: torch.Tensor#

The computed effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

applied_effort: torch.Tensor#

The applied effort [N or N·m, depending on joint type] for the actuator group.

Shape is (num_envs, num_joints).

This is the effort obtained after clipping the computed_effort based on the actuator characteristics.

actuator_velocity_limit: torch.Tensor#

The actuator velocity limit [m/s or rad/s, depending on joint type]. Shape is (num_envs, num_joints).

The peak velocity of the actuated joint (the actuator’s rated speed reflected at the joint, after any gearbox). Feeds the articulation data buffers (e.g. soft joint velocity limits) and explicit-model effort clipping; it is not pushed to the physics solver. Defaults to joint_velocity_limit when only the solver constraint is configured.

class isaaclab.actuators.ActuatorNetLSTMCfg[source]#

Bases: DCMotorCfg

Configuration for LSTM-based actuator model.

Attributes:

stiffness

Stiffness gains (also known as p-gain) of the joints in the group.

damping

Damping gains (also known as d-gain) of the joints in the group.

network_file

Path to the file containing network weights.

joint_names_expr

Articulation's joint names that are part of the group.

actuator_effort_limit

Actuator-model effort clipping limit [N or N·m, depending on joint type].

actuator_velocity_limit

Velocity limit of the joints in the group.

joint_effort_limit

Construction-time joint solver effort override [N or N·m, depending on joint type].

joint_velocity_limit

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

effort_limit_sim

Deprecated alias for joint_effort_limit.

velocity_limit_sim

Deprecated alias for joint_velocity_limit.

armature

Armature of the joints in the group.

friction

The static friction coefficient of the joints in the group.

dynamic_friction

The dynamic friction coefficient of the joints in the group.

viscous_friction

The viscous friction coefficient of the joints in the group.

effort_limit

Deprecated effort limit [N or N·m, depending on joint type].

velocity_limit

Deprecated velocity limit [m/s or rad/s, depending on joint type].

saturation_effort

Peak motor force/torque of the electric DC motor (in N-m).

stiffness: dict[str, float] | float | None#

Stiffness gains (also known as p-gain) of the joints in the group.

The behavior of the stiffness is different for implicit and explicit actuators. For implicit actuators, the stiffness gets set into the physics engine directly. For explicit actuators, the stiffness is used by the actuator model to compute the joint efforts.

If None, the stiffness is set to the value from the USD joint prim.

damping: dict[str, float] | float | None#

Damping gains (also known as d-gain) of the joints in the group.

The behavior of the damping is different for implicit and explicit actuators. For implicit actuators, the damping gets set into the physics engine directly. For explicit actuators, the damping gain is used by the actuator model to compute the joint efforts.

If None, the damping is set to the value from the USD joint prim.

network_file: str#

Path to the file containing network weights.

joint_names_expr: list[str]#

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. “.*”).

actuator_effort_limit: dict[str, float] | float | None#

Actuator-model effort clipping limit [N or N·m, depending on joint type].

The actuator’s rated force/torque reflected at the joint. Explicit actuator models clip their computed effort with it; implicit actuators use it as the model-facing limit for effort telemetry. If None, it defaults to the authored/USD joint effort limit (explicit) or tracks the live solver limit (implicit). It is not a solver limit; that is joint_effort_limit.

RemotizedPDActuator instead uses the angle-dependent limits in its joint_parameter_lookup.

actuator_velocity_limit: dict[str, float] | float | None#

Velocity limit of the joints in the group. Defaults to None.

This limit is used by the actuator model. If None, the limit is set to the value specified in the USD joint prim.

Attention

This attribute describes the actuator’s peak velocity, i.e. the actuator’s rated speed reflected at the joint (after any gearbox). It populates the actuator data buffers (e.g. soft_joint_vel_limits, read by velocity-limit terminations and rewards). Explicit models with speed-dependent limits, such as DCMotor, also use it to clip effort. It is not pushed to the physics solver.

Use joint_velocity_limit to request a solver-level hard clamp. A physical actuator limits joint speed through its torque curve rather than a kinematic clamp, so the two limits are resolved independently. When only joint_velocity_limit is set, it also serves as the joint velocity limit.

joint_effort_limit: dict[str, float] | float | None#

Construction-time joint solver effort override [N or N·m, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData.

joint_velocity_limit: dict[str, float] | float | None#

Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].

The live value is owned by isaaclab.assets.ArticulationData; enforcement is backend-dependent.

effort_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_effort_limit.

Deprecated since version 3.0: Use joint_effort_limit instead. This alias will be removed in 4.0.

velocity_limit_sim: dict[str, float] | float | None#

Deprecated alias for joint_velocity_limit.

Deprecated since version 3.0: Use joint_velocity_limit instead. This alias will be removed in 4.0.

armature: dict[str, float] | float | None#

Armature of the joints in the group. Defaults to None.

The armature is directly added to the corresponding joint-space inertia. It helps improve the simulation stability by reducing the joint velocities.

It is a physics engine solver parameter that gets set into the simulation.

If None, the armature is set to the value from the USD joint prim.

friction: dict[str, float] | float | None#

The static friction coefficient of the joints in the group. Defaults to None.

The joint static friction is a unitless quantity. It relates the magnitude of the spatial force transmitted from the parent body to the child body to the maximal static friction force that may be applied by the solver to resist the joint motion.

Mathematically, this means that: \(F_{resist} \leq \mu F_{spatial}\), where \(F_{resist}\) is the resisting force applied by the solver and \(F_{spatial}\) is the spatial force transmitted from the parent body to the child body. The simulated static friction effect is therefore similar to static and Coulomb static friction.

If None, the joint static friction is set to the value from the USD joint prim.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

dynamic_friction: dict[str, float] | float | None#

The dynamic friction coefficient of the joints in the group. Defaults to None.

Note: In Isaac Sim 4.5, this parameter is modeled as a coefficient. In Isaac Sim 5.0 and later, it is modeled as an effort (torque or force).

viscous_friction: dict[str, float] | float | None#

The viscous friction coefficient of the joints in the group. Defaults to None.

effort_limit: dict[str, float] | float | None#

Deprecated effort limit [N or N·m, depending on joint type].

Deprecated since version 3.0: For explicit actuators, use actuator_effort_limit. For implicit actuators, use joint_effort_limit. This alias will be removed in 4.0.

velocity_limit: dict[str, float] | float | None#

Deprecated velocity limit [m/s or rad/s, depending on joint type].

Deprecated since version 3.0: Use actuator_velocity_limit for the actuator-model limit or joint_velocity_limit for the solver limit. This alias will be removed in 4.0.

saturation_effort: float#

Peak motor force/torque of the electric DC motor (in N-m).

Newton Actuator Access#

Newton-native actuator integration for Isaac Lab.

Public API surface:

  • NewtonActuatorAdapter — the actuator adapter used by Newton and the host adapters. Newton constructs it directly from model.actuators; PhysX and OVPhysX use from_usd() to build actuators from authored NewtonActuator USD prims.

  • PhysxActuatorWrapper — flat-array wrapper that satisfies the Newton actuator sim_state / sim_control protocol on PhysX and OVPhysX.

  • build_implicit_dof_mask() — builds the per-DOF implicit-actuator mask consumed by the in-graph post-actuator kernel.

  • read_group_parameter() / write_group_parameter() — group-scoped, user-ordered access to Newton actuator parameters through the selection API; the raw alternative is the Newton actuator object returned by the actuator collection mapping.

USD authoring lives on the schema side as define_actuator_properties(); each backend calls it through ArticulationCfg._post_spawn().

Functions

read_group_parameter(collection, name, ...)

Read one live Newton actuator parameter for a native group.

write_group_parameter(collection, name, ...)

Write one Newton actuator parameter for a native group.

isaaclab.actuators.newton.read_group_parameter(collection: ActuatorCollection, name: str, component: str, attr: str) torch.Tensor[source]#

Read one live Newton actuator parameter for a native group.

Group-scoped, user-ordered reads of the controller-owned storage. For raw component access, use the group’s Newton actuator object (the collection mapping entry) directly.

Parameters:
  • collection – The articulation’s actuator collection.

  • name – Actuator group name.

  • component – Component kind: "controller", "delay", or "clamping".

  • attr – Parameter name on that component (e.g. "kp", "max_effort").

Returns:

Live values in the group’s joint order, shape (num_instances, group_num_joints), in the parameter’s dtype. Units follow the addressed parameter.

Raises:

ValueError – If the group is not executed by Newton actuators, the component name is unknown, or no actuator exposes the parameter.

isaaclab.actuators.newton.write_group_parameter(collection: ActuatorCollection, name: str, component: str, attr: str, values: torch.Tensor, env_ids: torch.Tensor | None = None, joint_ids: torch.Tensor | None = None) None[source]#

Write one Newton actuator parameter for a native group.

Group-scoped, user-ordered writes that reach the controller-owned storage through Newton’s selection API. For raw component access, use the group’s Newton actuator object (the collection mapping entry) directly.

Parameters:
  • collection – The articulation’s actuator collection.

  • name – Actuator group name.

  • component – Component kind: "controller", "delay", or "clamping".

  • attr – Parameter name on that component (e.g. "kp", "max_effort").

  • values – New values, shape (len(env_ids), len(joint_ids)). Units follow the addressed parameter.

  • env_ids – Environment indices to update. Defaults to all environments.

  • joint_ids – Group-local joint indices to update. Defaults to all of the group’s joints.

Raises:

ValueError – Same conditions as read_group_parameter().