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
Base class for actuator models over a collection of actuated joints in an articulation. |
|
Configuration for default actuators in an articulation. |
|
Commands received by the actuator models. |
|
Read-only runtime collection of actuator groups for one articulation. |
|
Backend-neutral bridge used by |
|
Processed commands produced for the simulated joints. |
|
Implicit actuator model that is handled by the simulation. |
|
Configuration for an implicit actuator. |
|
Ideal torque-controlled actuator model with a simple saturation model. |
|
Configuration for an ideal PD actuator. |
|
Direct control (DC) motor actuator model with velocity-based saturation model. |
|
Configuration for direct control (DC) motor actuator model. |
|
Ideal PD actuator with delayed command application. |
|
Configuration for a delayed PD actuator. |
|
Ideal PD actuator with angle-dependent torque limits. |
|
Configuration for a remotized PD actuator. |
|
Actuator model based on multi-layer perceptron and joint history. |
|
Configuration for MLP-based actuator model. |
|
Actuator model based on recurrent neural network (LSTM). |
|
Configuration for LSTM-based actuator model. |
Functions
|
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.Articulationclass.Attributes:
Flag indicating if the actuator is an implicit or explicit actuator model.
The computed effort [N or N·m, depending on joint type] for the actuator group.
The applied effort [N or N·m, depending on joint type] for the actuator group.
The actuator velocity limit [m/s or rad/s, depending on joint type].
Number of actuators in the group.
Articulation's joint names that are part of the group.
Articulation's joint indices that are part of the group.
Deprecated actuator effort limit [N or N·m, depending on joint type].
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 toTrue.
- __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_effortbased 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_limitwhen only the solver constraint is configured.
- 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_limitinstead. 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_limitinstead. 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
ActuatorCollectionwhen 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:
Articulation's joint names that are part of the group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Velocity limit of the joints in the group.
Construction-time joint solver effort override [N or N·m, depending on joint type].
Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].
Deprecated alias for
joint_effort_limit.Deprecated alias for
joint_velocity_limit.Stiffness gains (also known as p-gain) of the joints in the group.
Damping gains (also known as d-gain) of the joints in the group.
Armature of the joints in the group.
The static friction coefficient of the joints in the group.
The dynamic friction coefficient of the joints in the group.
The viscous friction coefficient of the joints in the group.
Deprecated effort limit [N or N·m, depending on joint type].
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.RemotizedPDActuatorinstead uses the angle-dependent limits in itsjoint_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 asDCMotor, also use it to clip effort. It is not pushed to the physics solver.Use
joint_velocity_limitto 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 onlyjoint_velocity_limitis 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_limitinstead. 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_limitinstead. 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, usejoint_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_limitfor the actuator-model limit orjoint_velocity_limitfor 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
ActuatorBasemodel instances. Newton-executed groups map to the NewtonActuatorobjects 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, whichread_group_parameter()andwrite_group_parameter()use for group-scoped, user-ordered access.Configure membership through
isaaclab.assets.ArticulationCfg.actuatorsbefore construction; assigning or deleting mapping entries raisesTypeError. Each joint can belong to at most one group; overlapping joint selections raiseValueErrorduring construction.Plain
ImplicitActuatorgroups 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 ofImplicitActuator, 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 processed actuator command buffers through the backend control object.
get(k[,d])items()keys()values()Attributes:
Commands received by the actuator models.
Processed commands produced for the simulated joints.
Number of articulation instances.
Number of articulation joints.
Warp/Torch device string.
Whether any configured actuator group is implicit.
Joint efforts computed before clipping [N or N·m, depending on joint type].
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.
- 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 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:
Desired positions [m or rad, depending on joint type].
Desired velocities [m/s or rad/s, depending on joint type].
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)whenfull_datais true.joint_ids¶ – Joint indices. Defaults to all joints.
env_ids¶ – Environment indices. Defaults to all environments.
full_data¶ – Whether
valueis 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)whenfull_datais true.joint_ids¶ – Joint indices. Defaults to all joints.
env_ids¶ – Environment indices. Defaults to all environments.
full_data¶ – Whether
valueis 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)whenfull_datais true.joint_ids¶ – Joint indices. Defaults to all joints.
env_ids¶ – Environment indices. Defaults to all environments.
full_data¶ – Whether
valueis 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.
- 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.
- 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:
Processed position commands [m or rad, depending on joint type].
Processed velocity commands [m/s or rad/s, depending on joint type].
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:
Number of articulation instances.
Number of articulation joints.
Number of fixed tendons.
Warp/Torch device string.
Current joint positions [m or rad, depending on joint type].
Current joint velocities [m/s or rad/s, depending on joint type].
Current joint stiffness values [N/m or N·m/rad, depending on joint type].
Current joint damping values [N·s/m or N·m·s/rad, depending on joint type].
Current joint effort limits [N or N·m, depending on joint type].
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 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.
- 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.
- 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.
- 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.
- 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
Nonewhen 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.
- abstractmethod submit_commands(collection: ActuatorCollection) None[source]#
Submit processed command buffers to the backend.
- Parameters:
collection¶ – Collection that owns the processed commands.
Implicit Actuator#
- class isaaclab.actuators.ImplicitActuator[source]#
Bases:
ActuatorBaseImplicit 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:
The configuration for the actuator model.
Flag indicating if the actuator is an implicit or explicit actuator model.
Current joint stiffness values [N/m or N·m/rad, depending on joint type].
Current joint damping values [N·s/m or N·m·s/rad, depending on joint type].
Current joint effort limits [N or N·m, depending on joint type].
Actuator effort limit [N or N·m, depending on joint type].
Deprecated actuator effort limit [N or N·m, depending on joint type].
Articulation's joint indices that are part of the group.
Articulation's joint names that are part of the group.
Number of actuators in the group.
Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].
The computed effort [N or N·m, depending on joint type] for the actuator group.
The applied effort [N or N·m, depending on joint type] for the actuator group.
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 toTrue.
- __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_limitinstead. 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 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_limitinstead. 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_effortbased 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_limitwhen only the solver constraint is configured.
- class isaaclab.actuators.ImplicitActuatorCfg[source]#
Bases:
ActuatorBaseCfgConfiguration for an implicit actuator.
Note
The PD control is handled implicitly by the simulation.
Attributes:
Articulation's joint names that are part of the group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Velocity limit of the joints in the group.
Construction-time joint solver effort override [N or N·m, depending on joint type].
Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].
Deprecated alias for
joint_effort_limit.Deprecated alias for
joint_velocity_limit.Stiffness gains (also known as p-gain) of the joints in the group.
Damping gains (also known as d-gain) of the joints in the group.
Armature of the joints in the group.
The static friction coefficient of the joints in the group.
The dynamic friction coefficient of the joints in the group.
The viscous friction coefficient of the joints in the group.
Deprecated effort limit [N or N·m, depending on joint type].
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.RemotizedPDActuatorinstead uses the angle-dependent limits in itsjoint_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 asDCMotor, also use it to clip effort. It is not pushed to the physics solver.Use
joint_velocity_limitto 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 onlyjoint_velocity_limitis 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_limitinstead. 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_limitinstead. 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, usejoint_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_limitfor the actuator-model limit orjoint_velocity_limitfor the solver limit. This alias will be removed in 4.0.
Ideal PD Actuator#
- class isaaclab.actuators.IdealPDActuator[source]#
Bases:
ActuatorBaseIdeal 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:
The configuration for the actuator model.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Deprecated actuator effort limit [N or N·m, depending on joint type].
Flag indicating if the actuator is an implicit or explicit actuator model.
Articulation's joint indices that are part of the group.
Articulation's joint names that are part of the group.
Number of actuators in the group.
Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].
The computed effort [N or N·m, depending on joint type] for the actuator group.
The applied effort [N or N·m, depending on joint type] for the actuator group.
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_limitinstead. 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 toTrue.
- 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 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_limitinstead. 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_effortbased 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_limitwhen only the solver constraint is configured.
- class isaaclab.actuators.IdealPDActuatorCfg[source]#
Bases:
ActuatorBaseCfgConfiguration for an ideal PD actuator.
Attributes:
Articulation's joint names that are part of the group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Velocity limit of the joints in the group.
Construction-time joint solver effort override [N or N·m, depending on joint type].
Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].
Deprecated alias for
joint_effort_limit.Deprecated alias for
joint_velocity_limit.Stiffness gains (also known as p-gain) of the joints in the group.
Damping gains (also known as d-gain) of the joints in the group.
Armature of the joints in the group.
The static friction coefficient of the joints in the group.
The dynamic friction coefficient of the joints in the group.
The viscous friction coefficient of the joints in the group.
Deprecated effort limit [N or N·m, depending on joint type].
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.RemotizedPDActuatorinstead uses the angle-dependent limits in itsjoint_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 asDCMotor, also use it to clip effort. It is not pushed to the physics solver.Use
joint_velocity_limitto 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 onlyjoint_velocity_limitis 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_limitinstead. 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_limitinstead. 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, usejoint_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_limitfor the actuator-model limit orjoint_velocity_limitfor the solver limit. This alias will be removed in 4.0.
DC Motor Actuator#
- class isaaclab.actuators.DCMotor[source]#
Bases:
IdealPDActuatorDirect control (DC) motor actuator model with velocity-based saturation model.
It uses the same model as the
IdealPDActuatorfor 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.
Attributes:
The configuration for the actuator model.
Deprecated actuator effort limit [N or N·m, depending on joint type].
Flag indicating if the actuator is an implicit or explicit actuator model.
Articulation's joint indices that are part of the group.
Articulation's joint names that are part of the group.
Number of actuators in the group.
Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].
Actuator-model effort clipping limit [N or N·m, depending on joint type].
The computed effort [N or N·m, depending on joint type] for the actuator group.
The applied effort [N or N·m, depending on joint type] for the actuator group.
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_limitinstead. 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 toTrue.
- 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.
- 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_limitinstead. 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_effortbased 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_limitwhen only the solver constraint is configured.
- class isaaclab.actuators.DCMotorCfg[source]#
Bases:
IdealPDActuatorCfgConfiguration for direct control (DC) motor actuator model.
Attributes:
Peak motor force/torque of the electric DC motor (in N-m).
Articulation's joint names that are part of the group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Velocity limit of the joints in the group.
Construction-time joint solver effort override [N or N·m, depending on joint type].
Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].
Deprecated alias for
joint_effort_limit.Deprecated alias for
joint_velocity_limit.Stiffness gains (also known as p-gain) of the joints in the group.
Damping gains (also known as d-gain) of the joints in the group.
Armature of the joints in the group.
The static friction coefficient of the joints in the group.
The dynamic friction coefficient of the joints in the group.
The viscous friction coefficient of the joints in the group.
Deprecated effort limit [N or N·m, depending on joint type].
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.RemotizedPDActuatorinstead uses the angle-dependent limits in itsjoint_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 asDCMotor, also use it to clip effort. It is not pushed to the physics solver.Use
joint_velocity_limitto 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 onlyjoint_velocity_limitis 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_limitinstead. 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_limitinstead. 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, usejoint_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_limitfor the actuator-model limit orjoint_velocity_limitfor the solver limit. This alias will be removed in 4.0.
Delayed PD Actuator#
- class isaaclab.actuators.DelayedPDActuator[source]#
Bases:
IdealPDActuatorIdeal PD actuator with delayed command application.
This class extends the
IdealPDActuatorclass 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:
The configuration for the actuator model.
Deprecated actuator effort limit [N or N·m, depending on joint type].
Flag indicating if the actuator is an implicit or explicit actuator model.
Articulation's joint indices that are part of the group.
Articulation's joint names that are part of the group.
Number of actuators in the group.
Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].
Actuator-model effort clipping limit [N or N·m, depending on joint type].
The computed effort [N or N·m, depending on joint type] for the actuator group.
The applied effort [N or N·m, depending on joint type] for the actuator group.
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_limitinstead. 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 toTrue.
- 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 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_limitinstead. 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_effortbased 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_limitwhen only the solver constraint is configured.
- class isaaclab.actuators.DelayedPDActuatorCfg[source]#
Bases:
IdealPDActuatorCfgConfiguration for a delayed PD actuator.
Attributes:
Minimum number of physics time-steps with which the actuator command may be delayed.
Maximum number of physics time-steps with which the actuator command may be delayed.
Articulation's joint names that are part of the group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Velocity limit of the joints in the group.
Construction-time joint solver effort override [N or N·m, depending on joint type].
Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].
Deprecated alias for
joint_effort_limit.Deprecated alias for
joint_velocity_limit.Stiffness gains (also known as p-gain) of the joints in the group.
Damping gains (also known as d-gain) of the joints in the group.
Armature of the joints in the group.
The static friction coefficient of the joints in the group.
The dynamic friction coefficient of the joints in the group.
The viscous friction coefficient of the joints in the group.
Deprecated effort limit [N or N·m, depending on joint type].
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.RemotizedPDActuatorinstead uses the angle-dependent limits in itsjoint_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 asDCMotor, also use it to clip effort. It is not pushed to the physics solver.Use
joint_velocity_limitto 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 onlyjoint_velocity_limitis 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_limitinstead. 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_limitinstead. 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, usejoint_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_limitfor the actuator-model limit orjoint_velocity_limitfor the solver limit. This alias will be removed in 4.0.
Remotized PD Actuator#
- class isaaclab.actuators.RemotizedPDActuator[source]#
Bases:
DelayedPDActuatorIdeal PD actuator with angle-dependent torque limits.
This class extends
DelayedPDActuatorwith 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:
Deprecated actuator effort limit [N or N·m, depending on joint type].
Flag indicating if the actuator is an implicit or explicit actuator model.
Articulation's joint indices that are part of the group.
Articulation's joint names that are part of the group.
Number of actuators in the group.
Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].
The configuration for the actuator model.
The computed effort [N or N·m, depending on joint type] for the actuator group.
The applied effort [N or N·m, depending on joint type] for the actuator group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
The actuator velocity limit [m/s or rad/s, depending on joint type].
Lookup joint positions [m or rad, depending on joint type].
Dimensionless lookup transmission ratios.
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_limitinstead. 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 toTrue.
- 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.
- 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_limitinstead. 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_effortbased 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_limitwhen 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:
DelayedPDActuatorCfgConfiguration 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:
Articulation's joint names that are part of the group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Velocity limit of the joints in the group.
Construction-time joint solver effort override [N or N·m, depending on joint type].
Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].
Deprecated alias for
joint_effort_limit.Deprecated alias for
joint_velocity_limit.Stiffness gains (also known as p-gain) of the joints in the group.
Damping gains (also known as d-gain) of the joints in the group.
Armature of the joints in the group.
The static friction coefficient of the joints in the group.
The dynamic friction coefficient of the joints in the group.
The viscous friction coefficient of the joints in the group.
Deprecated effort limit [N or N·m, depending on joint type].
Deprecated velocity limit [m/s or rad/s, depending on joint type].
Minimum number of physics time-steps with which the actuator command may be delayed.
Maximum number of physics time-steps with which the actuator command may be delayed.
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.RemotizedPDActuatorinstead uses the angle-dependent limits in itsjoint_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 asDCMotor, also use it to clip effort. It is not pushed to the physics solver.Use
joint_velocity_limitto 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 onlyjoint_velocity_limitis 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_limitinstead. 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_limitinstead. 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, usejoint_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_limitfor the actuator-model limit orjoint_velocity_limitfor 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:
DCMotorActuator 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:
The configuration of the actuator model.
Deprecated actuator effort limit [N or N·m, depending on joint type].
Flag indicating if the actuator is an implicit or explicit actuator model.
Articulation's joint indices that are part of the group.
Articulation's joint names that are part of the group.
Number of actuators in the group.
Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].
Actuator-model effort clipping limit [N or N·m, depending on joint type].
The computed effort [N or N·m, depending on joint type] for the actuator group.
The applied effort [N or N·m, depending on joint type] for the actuator group.
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_limitinstead. 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 toTrue.
- 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.
- 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_limitinstead. 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_effortbased 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_limitwhen 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:
DCMotorCfgConfiguration for MLP-based actuator model.
Attributes:
Stiffness gains (also known as p-gain) of the joints in the group.
Damping gains (also known as d-gain) of the joints in the group.
Path to the file containing network weights.
Scaling of the joint position errors input to the network.
Articulation's joint names that are part of the group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Velocity limit of the joints in the group.
Construction-time joint solver effort override [N or N·m, depending on joint type].
Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].
Deprecated alias for
joint_effort_limit.Deprecated alias for
joint_velocity_limit.Armature of the joints in the group.
The static friction coefficient of the joints in the group.
The dynamic friction coefficient of the joints in the group.
The viscous friction coefficient of the joints in the group.
Deprecated effort limit [N or N·m, depending on joint type].
Deprecated velocity limit [m/s or rad/s, depending on joint type].
Peak motor force/torque of the electric DC motor (in N-m).
Scaling of the joint velocities input to the network.
Scaling of the joint efforts output from the network.
Order of the inputs to the network.
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.
- 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.RemotizedPDActuatorinstead uses the angle-dependent limits in itsjoint_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 asDCMotor, also use it to clip effort. It is not pushed to the physics solver.Use
joint_velocity_limitto 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 onlyjoint_velocity_limitis 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_limitinstead. 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_limitinstead. 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, usejoint_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_limitfor the actuator-model limit orjoint_velocity_limitfor the solver limit. This alias will be removed in 4.0.
LSTM Network Actuator#
- class isaaclab.actuators.ActuatorNetLSTM[source]#
Bases:
DCMotorActuator 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:
The configuration of the actuator model.
Deprecated actuator effort limit [N or N·m, depending on joint type].
Flag indicating if the actuator is an implicit or explicit actuator model.
Articulation's joint indices that are part of the group.
Articulation's joint names that are part of the group.
Number of actuators in the group.
Deprecated actuator velocity limit [m/s or rad/s, depending on joint type].
Actuator-model effort clipping limit [N or N·m, depending on joint type].
The computed effort [N or N·m, depending on joint type] for the actuator group.
The applied effort [N or N·m, depending on joint type] for the actuator group.
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_limitinstead. 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 toTrue.
- 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 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_limitinstead. 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_effortbased 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_limitwhen only the solver constraint is configured.
- class isaaclab.actuators.ActuatorNetLSTMCfg[source]#
Bases:
DCMotorCfgConfiguration for LSTM-based actuator model.
Attributes:
Stiffness gains (also known as p-gain) of the joints in the group.
Damping gains (also known as d-gain) of the joints in the group.
Path to the file containing network weights.
Articulation's joint names that are part of the group.
Actuator-model effort clipping limit [N or N·m, depending on joint type].
Velocity limit of the joints in the group.
Construction-time joint solver effort override [N or N·m, depending on joint type].
Construction-time requested joint solver velocity limit [m/s or rad/s, depending on joint type].
Deprecated alias for
joint_effort_limit.Deprecated alias for
joint_velocity_limit.Armature of the joints in the group.
The static friction coefficient of the joints in the group.
The dynamic friction coefficient of the joints in the group.
The viscous friction coefficient of the joints in the group.
Deprecated effort limit [N or N·m, depending on joint type].
Deprecated velocity limit [m/s or rad/s, depending on joint type].
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.
- 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.RemotizedPDActuatorinstead uses the angle-dependent limits in itsjoint_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 asDCMotor, also use it to clip effort. It is not pushed to the physics solver.Use
joint_velocity_limitto 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 onlyjoint_velocity_limitis 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_limitinstead. 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_limitinstead. 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, usejoint_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_limitfor the actuator-model limit orjoint_velocity_limitfor the solver limit. This alias will be removed in 4.0.
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 frommodel.actuators; PhysX and OVPhysX usefrom_usd()to build actuators from authoredNewtonActuatorUSD prims.PhysxActuatorWrapper— flat-array wrapper that satisfies the Newton actuatorsim_state/sim_controlprotocol 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 one live Newton actuator parameter for a native group. |
|
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:
- 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().