PositionWithinLimitsActionManager#

class genesis_forge.managers.action.PositionWithinLimitsActionManager(env: GenesisEnv, joint_names: list[str] | str = '.*', default_pos: dict[str, T] | T = {'.*': 0.0}, pd_kp: dict[str, T] | T = None, pd_kv: dict[str, T] | T = None, max_force: dict[str, T] | T = None, damping: dict[str, T] | T = None, stiffness: dict[str, T] | T = None, frictionloss: dict[str, T] | T = None, noise_scale: float = 0.0, action_handler: Callable[[torch.Tensor], None] = None, quiet_action_errors: bool = False, delay_step: int = 0)[source]#

Bases: PositionActionManager

This is similar to PositionActionManager but converts actions from the range -1.0 - 1.0 to DOF positions within the limits of the actuators.

Parameters:
  • env – The environment to manage the DOF actuators for.

  • joint_names – The joint names to manage.

  • default_pos – The default DOF positions.

  • pd_kp – The PD kp values.

  • pd_kv – The PD kv values.

  • max_force – The max force values.

  • damping – The damping values.

  • stiffness – The stiffness values.

  • frictionloss – The frictionloss values.

  • reset_random_scale – Scale all DOF values on reset by this amount +/-.

  • action_handler – A function to handle the actions.

  • quiet_action_errors – Whether to quiet action errors.

  • randomization_cfg – The randomization configuration used to randomize the DOF values across all environments and between resets.

  • resample_randomization_s – The time interval to resample the randomization values.

  • delay_step – The number of steps to delay the actions for. This is an easy way to emulate the latency in the system.

Example:

class MyEnv(ManagedEnvironment):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

    def config(self):
        self.action_manager = PositionalActionManager(
            self,
            joint_names=".*",
            default_pos={
                # Hip joints
                "Leg[1-2]_Hip": -1.0,
                "Leg[3-4]_Hip": 1.0,
                # Femur joints
                "Leg[1-4]_Femur": 0.5,
                # Tibia joints
                "Leg[1-4]_Tibia": 0.6,
            },
            pd_kp={".*": 50},
            pd_kv={".*": 0.5},
            max_force={".*": 8.0},
        )

    @property
    def action_space(self):
        return self.action_manager.action_space
build()[source]#

Builds the manager and initialized all the buffers.

get_actions() torch.Tensor#

Get the current actions for the environments.

get_dofs_force(noise: float = 0.0, clip_to_max_force: bool = False)#

Return the force experienced by the enabled DOFs. This is a wrapper for RigidEntity.get_dofs_force.

Parameters:
  • noise – The maximum amount of random noise to add to the force values returned.

  • clip_to_max_force – Clip the force returned to the maximum force defined by the max_force parameter.

Returns:

The force experienced by the enabled DOFs.

get_dofs_position(noise: float = 0.0)#

Return the current position of the enabled DOFs. This is a wrapper for RigidEntity.get_dofs_position.

Parameters:

noise – The maximum amount of random noise to add to the position values returned.

get_dofs_velocity(noise: float = 0.0, clip: tuple[float, float] = None)#

Return the current velocity of the enabled DOFs. This is a wrapper for RigidEntity.get_dofs_velocity.

Parameters:
  • noise – The maximum amount of random noise to add to the velocity values returned.

  • clip – Clip the velocity returned.

handle_actions(actions: torch.Tensor) torch.Tensor[source]#

Converts the actions to position commands, and send them to the DOF actuators. Override this function if you want to change the action handling logic.

Parameters:

actions – The incoming step actions to handle.

Returns:

The processed and handled actions.

reset(envs_idx: list[int] = None)#

Reset the DOF positions.

step(actions: torch.Tensor) torch.Tensor#

Take the incoming actions for this step and handle them.

Parameters:

actions – The incoming step actions to handle.

property action_space: tuple[float, float]#

Returns the actions space for the environment, based on the number of DOFs defined in this action manager.

property actions: torch.Tensor#

The actions for for the current step.

property default_dofs_pos: torch.Tensor#

Return the default DOF positions.

property dofs_idx: list[int]#

Get the indices of the DOF that are enabled (via joint_names).

property num_actions: int#

Get the number of actions.

property raw_actions: torch.Tensor#

The actions received from the policy, before being converted.