unilab.envs.manipulation.sharpa_inhand.rotation

Functions

sample_random_quaternion(num_envs)

Sample uniformly distributed random quaternions in wxyz convention.

Classes

RewardConfig

RewardConfig(scales: 'dict[str, float]' = <factory>, angvel_clip_min: 'float' = -0.5, angvel_clip_max: 'float' = 0.5)

SharpaInhandRotationCfg

SharpaInhandRotationCfg(scene: 'SceneCfg' = <factory>, sim_dt: 'float' = 0.004166666666666667, max_episode_seconds: 'float' = 20.0, ctrl_dt: 'float' = 0.05, render_spacing: float = 1.0, render_offset_mode: str = 'grid', motrix_max_iterations: Optional[int] = None, post_step_forward_sensor: bool = False, action_space: 'int' = 22, observation_space: 'int' = 192, prop_hist_len: 'int' = 30, critic_info_dim: 'int' = 9, clip_obs: 'float' = 5.0, clip_actions: 'float' = 1.0, num_hand_dofs: 'int' = 22, frame_obs_dim: 'int' = 64, obs_lag_steps: 'int' = 3, obs_history_len: 'int' = 80, base_name: 'str' = 'right_hand_C_MC', object_body_name: 'str' = 'object', object_geom_name: 'str' = 'object', actuated_joint_names: 'list[str]' = <factory>, fingertip_body_names: 'list[str]' = <factory>, control_config: 'SharpaControlConfig' = <factory>, sensor: 'SharpaSensorConfig' = <factory>, obs: 'SharpaObservationConfig' = <factory>, priv_info: 'SharpaPrivilegedInfoConfig' = <factory>, domain_rand: 'SharpaDomainRandConfig' = <factory>, reset_height_lower: 'float' = 0.59906, reset_height_upper: 'float' = 0.63906, reset_angle_diff: 'float' = 0.7853981633974483, rot_axis: 'tuple[float, float, float]' = (0.0, 0.0, 1.0), grasp_cache_path: 'str' = '/home/admin1/ws/Eric/UniLab/src/unilab/assets/caches/sharpa_grasp_linspace', disable_tactile_ids: 'list[int]' = <factory>, use_default_object_pose_for_object_pos_anchor: 'bool' = False, debug_show_axes: 'bool' = False, reward_config: 'RewardConfig | None' = None, zero_action_test_mode: 'bool' = False)

SharpaInhandRotationDRProvider

SharpaInhandRotationEnv

SharpaWaveRewardConfig

alias of RewardConfig

SharpaWaveRotationCfg

alias of SharpaInhandRotationCfg

class unilab.envs.manipulation.sharpa_inhand.rotation.RewardConfig[source]

Bases: object

RewardConfig(scales: ‘dict[str, float]’ = <factory>, angvel_clip_min: ‘float’ = -0.5, angvel_clip_max: ‘float’ = 0.5)

Parameters:
scales: dict[str, float]
angvel_clip_min: float = -0.5
angvel_clip_max: float = 0.5
__init__(scales=<factory>, angvel_clip_min=-0.5, angvel_clip_max=0.5)
Parameters:
class unilab.envs.manipulation.sharpa_inhand.rotation.SharpaInhandRotationCfg[source]

Bases: SharpaInhandBaseCfg

SharpaInhandRotationCfg(scene: ‘SceneCfg’ = <factory>, sim_dt: ‘float’ = 0.004166666666666667, max_episode_seconds: ‘float’ = 20.0, ctrl_dt: ‘float’ = 0.05, render_spacing: float = 1.0, render_offset_mode: str = ‘grid’, motrix_max_iterations: Optional[int] = None, post_step_forward_sensor: bool = False, action_space: ‘int’ = 22, observation_space: ‘int’ = 192, prop_hist_len: ‘int’ = 30, critic_info_dim: ‘int’ = 9, clip_obs: ‘float’ = 5.0, clip_actions: ‘float’ = 1.0, num_hand_dofs: ‘int’ = 22, frame_obs_dim: ‘int’ = 64, obs_lag_steps: ‘int’ = 3, obs_history_len: ‘int’ = 80, base_name: ‘str’ = ‘right_hand_C_MC’, object_body_name: ‘str’ = ‘object’, object_geom_name: ‘str’ = ‘object’, actuated_joint_names: ‘list[str]’ = <factory>, fingertip_body_names: ‘list[str]’ = <factory>, control_config: ‘SharpaControlConfig’ = <factory>, sensor: ‘SharpaSensorConfig’ = <factory>, obs: ‘SharpaObservationConfig’ = <factory>, priv_info: ‘SharpaPrivilegedInfoConfig’ = <factory>, domain_rand: ‘SharpaDomainRandConfig’ = <factory>, reset_height_lower: ‘float’ = 0.59906, reset_height_upper: ‘float’ = 0.63906, reset_angle_diff: ‘float’ = 0.7853981633974483, rot_axis: ‘tuple[float, float, float]’ = (0.0, 0.0, 1.0), grasp_cache_path: ‘str’ = ‘/home/admin1/ws/Eric/UniLab/src/unilab/assets/caches/sharpa_grasp_linspace’, disable_tactile_ids: ‘list[int]’ = <factory>, use_default_object_pose_for_object_pos_anchor: ‘bool’ = False, debug_show_axes: ‘bool’ = False, reward_config: ‘RewardConfig | None’ = None, zero_action_test_mode: ‘bool’ = False)

Parameters:
  • scene (SceneCfg)

  • sim_dt (float)

  • max_episode_seconds (float)

  • ctrl_dt (float)

  • render_spacing (float)

  • render_offset_mode (str)

  • motrix_max_iterations (Optional[int])

  • post_step_forward_sensor (bool)

  • action_space (int)

  • observation_space (int)

  • prop_hist_len (int)

  • critic_info_dim (int)

  • clip_obs (float)

  • clip_actions (float)

  • num_hand_dofs (int)

  • frame_obs_dim (int)

  • obs_lag_steps (int)

  • obs_history_len (int)

  • base_name (str)

  • object_body_name (str)

  • object_geom_name (str)

  • actuated_joint_names (list[str])

  • fingertip_body_names (list[str])

  • control_config (SharpaControlConfig)

  • sensor (SharpaSensorConfig)

  • obs (SharpaObservationConfig)

  • priv_info (SharpaPrivilegedInfoConfig)

  • domain_rand (SharpaDomainRandConfig)

  • reset_height_lower (float)

  • reset_height_upper (float)

  • reset_angle_diff (float)

  • rot_axis (tuple[float, float, float])

  • grasp_cache_path (str)

  • disable_tactile_ids (list[int])

  • use_default_object_pose_for_object_pos_anchor (bool)

  • debug_show_axes (bool)

  • reward_config (RewardConfig | None)

  • zero_action_test_mode (bool)

critic_info_dim: int = 9
reward_config: RewardConfig | None = None
zero_action_test_mode: bool = False
__init__(scene=<factory>, sim_dt=0.004166666666666667, max_episode_seconds=20.0, ctrl_dt=0.05, render_spacing=1.0, render_offset_mode='grid', motrix_max_iterations=None, post_step_forward_sensor=False, action_space=22, observation_space=192, prop_hist_len=30, critic_info_dim=9, clip_obs=5.0, clip_actions=1.0, num_hand_dofs=22, frame_obs_dim=64, obs_lag_steps=3, obs_history_len=80, base_name='right_hand_C_MC', object_body_name='object', object_geom_name='object', actuated_joint_names=<factory>, fingertip_body_names=<factory>, control_config=<factory>, sensor=<factory>, obs=<factory>, priv_info=<factory>, domain_rand=<factory>, reset_height_lower=0.59906, reset_height_upper=0.63906, reset_angle_diff=0.7853981633974483, rot_axis=(0.0, 0.0, 1.0), grasp_cache_path='/home/admin1/ws/Eric/UniLab/src/unilab/assets/caches/sharpa_grasp_linspace', disable_tactile_ids=<factory>, use_default_object_pose_for_object_pos_anchor=False, debug_show_axes=False, reward_config=None, zero_action_test_mode=False)
Parameters:
  • scene (SceneCfg)

  • sim_dt (float)

  • max_episode_seconds (float)

  • ctrl_dt (float)

  • render_spacing (float)

  • render_offset_mode (str)

  • motrix_max_iterations (Optional[int])

  • post_step_forward_sensor (bool)

  • action_space (int)

  • observation_space (int)

  • prop_hist_len (int)

  • critic_info_dim (int)

  • clip_obs (float)

  • clip_actions (float)

  • num_hand_dofs (int)

  • frame_obs_dim (int)

  • obs_lag_steps (int)

  • obs_history_len (int)

  • base_name (str)

  • object_body_name (str)

  • object_geom_name (str)

  • actuated_joint_names (list[str])

  • fingertip_body_names (list[str])

  • control_config (SharpaControlConfig)

  • sensor (SharpaSensorConfig)

  • obs (SharpaObservationConfig)

  • priv_info (SharpaPrivilegedInfoConfig)

  • domain_rand (SharpaDomainRandConfig)

  • reset_height_lower (float)

  • reset_height_upper (float)

  • reset_angle_diff (float)

  • rot_axis (tuple[float, float, float])

  • grasp_cache_path (str)

  • disable_tactile_ids (list[int])

  • use_default_object_pose_for_object_pos_anchor (bool)

  • debug_show_axes (bool)

  • reward_config (RewardConfig | None)

  • zero_action_test_mode (bool)

unilab.envs.manipulation.sharpa_inhand.rotation.sample_random_quaternion(num_envs)[source]

Sample uniformly distributed random quaternions in wxyz convention.

Parameters:

num_envs (int) – Number of quaternions to sample.

Return type:

ndarray

Returns:

Quaternion array with shape (num_envs, 4).

class unilab.envs.manipulation.sharpa_inhand.rotation.SharpaInhandRotationDRProvider[source]

Bases: DomainRandomizationProvider

validate(env, capabilities)[source]
Parameters:
Return type:

None

build_init_randomization_plan(env)[source]
Parameters:

env (Any)

Return type:

InitRandomizationPlan | None

build_reset_plan(env, env_ids)[source]
Parameters:
Return type:

ResetPlan

build_reset_observation(env, env_ids, info_updates)[source]
Parameters:
Return type:

dict[str, ndarray]

build_interval_randomization_plan(env, step_counter)[source]

Build Sharpa object-force perturbations for the upcoming control step.

Parameters:
  • env (Any) – Sharpa rotation env instance.

  • step_counter (int) – Global environment step counter.

Return type:

IntervalRandomizationPlan | None

Returns:

Interval randomization plan carrying direct object-force perturbations, or None when object-force injection is disabled.

class unilab.envs.manipulation.sharpa_inhand.rotation.SharpaInhandRotationEnv[source]

Bases: SharpaInhandBaseEnv

Parameters:
__init__(cfg, num_envs=1, backend_type='motrix', dr_provider=None)[source]
Parameters:
apply_action(actions, state)[source]

子类实现:action → ctrl

Parameters:
Return type:

ndarray

property obs_groups_spec: dict[str, int]

101}.

Subclasses MUST override this property.

Type:

Return observation group dimensions, e.g. {“obs”

Type:

98, “critic”

update_state(state)[source]

子类实现:计算 obs/reward/terminated

Parameters:

state (NpEnvState)

Return type:

NpEnvState

unilab.envs.manipulation.sharpa_inhand.rotation.SharpaWaveRewardConfig

alias of RewardConfig

unilab.envs.manipulation.sharpa_inhand.rotation.SharpaWaveRotationCfg

alias of SharpaInhandRotationCfg