unilab.envs.locomotion.go2_arm.manip_loco

Classes

ArmStageConfig

ArmStageConfig(freeze_arm_joints: 'bool' = False, disable_ee_goal_trajectory: 'bool' = False, fixed_ee_goal_cart: 'list[float]' = <factory>)

CommandsConfig

CommandsConfig(vel_limit: 'list[list[float]]' = <factory>, resampling_time: 'float' = 0.0, heading_command: 'bool' = False, heading_range: 'list[float]' = <factory>, heading_control_stiffness: 'float' = 0.5, rel_standing_envs: 'float' = 0.0, resample_time_s: 'float | None' = None, zero_command_prob: 'float' = 0.2)

CurriculumConfig

Expand velocity command ranges when mean tracking_lin_vel exceeds a threshold.

EEGoalConfig

End-effector goal config in spherical coordinates.

Go2ArmDomainRandConfig

Go2ArmDomainRandConfig(randomize_base_mass: 'bool' = False, added_mass_range: 'list[float]' = <factory>, randomize_body_mass: 'bool' = False, body_mass_multiplier_range: 'list[float]' = <factory>, random_com: 'bool' = False, com_offset_x: 'list[float]' = <factory>, randomize_gravity: 'bool' = False, gravity_range: 'list[list[float]]' = <factory>, randomize_ground_friction: 'bool' = False, ground_friction_multiplier_range: 'list[float]' = <factory>, randomize_dof_armature: 'bool' = False, dof_armature_multiplier_range: 'list[float]' = <factory>, push_robots: 'bool' = False, push_interval: 'int' = 750, max_force: 'list[float]' = <factory>, push_body_name: 'str | None' = None, randomize_kp: 'bool' = True, kp_multiplier_range: 'list[float]' = <factory>, randomize_kd: 'bool' = True, kd_multiplier_range: 'list[float]' = <factory>)

Go2ArmManipLocoCfg

Go2ArmManipLocoCfg(scene: 'SceneCfg' = <factory>, sim_dt: 'float' = 0.01, max_episode_seconds: 'float' = 20.0, ctrl_dt: 'float' = 0.02, render_spacing: float = 1.0, render_offset_mode: str = 'grid', motrix_max_iterations: Optional[int] = None, post_step_forward_sensor: bool = False, control_config: 'ControlConfig' = <factory>, noise_config: 'NoiseConfig' = <factory>, sensor: 'Go2ArmSensor' = <factory>, ik: 'IKConfig' = <factory>, asset: 'Asset' = <factory>, iterations: 'int | None' = None, model_file: 'str' = <factory>, init_state: 'InitState' = <factory>, commands: 'CommandsConfig' = <factory>, reward_config: 'RewardConfig | None' = None, domain_rand: 'Go2ArmDomainRandConfig' = <factory>, goal_ee: 'EEGoalConfig' = <factory>, history: 'HistoryConfig' = <factory>, arm_stage: 'ArmStageConfig' = <factory>, curriculum: 'CurriculumConfig' = <factory>)

Go2ArmManipLocoDRProvider

Go2ArmManipLocoEnv

HistoryConfig

Actor/critic observation history lengths.

InitState

InitState(pos: 'list[float]' = <factory>)

RewardConfig

RewardConfig(scales: 'dict[str, float]', tracking_sigma: 'float', base_height_target: 'float', target_foot_height: 'float' = 0.1, object_sigma: 'float' = 0.1, leg_dof_upper_limits: 'list[float]' = <factory>, leg_dof_lower_limits: 'list[float]' = <factory>, dof_pos_limit_margin: 'float' = 0.01)

class unilab.envs.locomotion.go2_arm.manip_loco.InitState[source]

Bases: object

InitState(pos: ‘list[float]’ = <factory>)

Parameters:

pos (list[float])

pos: list[float]
__init__(pos=<factory>)
Parameters:

pos (list[float])

class unilab.envs.locomotion.go2_arm.manip_loco.Go2ArmDomainRandConfig[source]

Bases: DomainRandConfig

Go2ArmDomainRandConfig(randomize_base_mass: ‘bool’ = False, added_mass_range: ‘list[float]’ = <factory>, randomize_body_mass: ‘bool’ = False, body_mass_multiplier_range: ‘list[float]’ = <factory>, random_com: ‘bool’ = False, com_offset_x: ‘list[float]’ = <factory>, randomize_gravity: ‘bool’ = False, gravity_range: ‘list[list[float]]’ = <factory>, randomize_ground_friction: ‘bool’ = False, ground_friction_multiplier_range: ‘list[float]’ = <factory>, randomize_dof_armature: ‘bool’ = False, dof_armature_multiplier_range: ‘list[float]’ = <factory>, push_robots: ‘bool’ = False, push_interval: ‘int’ = 750, max_force: ‘list[float]’ = <factory>, push_body_name: ‘str | None’ = None, randomize_kp: ‘bool’ = True, kp_multiplier_range: ‘list[float]’ = <factory>, randomize_kd: ‘bool’ = True, kd_multiplier_range: ‘list[float]’ = <factory>)

Parameters:
randomize_kp: bool = True
kp_multiplier_range: list[float]
randomize_kd: bool = True
kd_multiplier_range: list[float]
__init__(randomize_base_mass=False, added_mass_range=<factory>, randomize_body_mass=False, body_mass_multiplier_range=<factory>, random_com=False, com_offset_x=<factory>, randomize_gravity=False, gravity_range=<factory>, randomize_ground_friction=False, ground_friction_multiplier_range=<factory>, randomize_dof_armature=False, dof_armature_multiplier_range=<factory>, push_robots=False, push_interval=750, max_force=<factory>, push_body_name=None, randomize_kp=True, kp_multiplier_range=<factory>, randomize_kd=True, kd_multiplier_range=<factory>)
Parameters:
class unilab.envs.locomotion.go2_arm.manip_loco.EEGoalConfig[source]

Bases: object

End-effector goal config in spherical coordinates.

Parameters:
sphere_l_range: list[float]
sphere_phi_range: list[float]
sphere_theta_range: list[float]
traj_time_range: list[float]
hold_time_range: list[float]
collision_upper_limits: list[float]
collision_lower_limits: list[float]
underground_limit: float = -0.57
num_collision_check_samples: int = 10
num_resample_attempts: int = 10
default_orn_roll: float = 1.5707963267948966
arm_induced_pitch: float = 0.78
delta_orn_r: list[float]
delta_orn_p: list[float]
delta_orn_y: list[float]
init_ee_cart: list[float]
__init__(sphere_l_range=<factory>, sphere_phi_range=<factory>, sphere_theta_range=<factory>, traj_time_range=<factory>, hold_time_range=<factory>, collision_upper_limits=<factory>, collision_lower_limits=<factory>, underground_limit=-0.57, num_collision_check_samples=10, num_resample_attempts=10, default_orn_roll=1.5707963267948966, arm_induced_pitch=0.78, delta_orn_r=<factory>, delta_orn_p=<factory>, delta_orn_y=<factory>, init_ee_cart=<factory>)
Parameters:
class unilab.envs.locomotion.go2_arm.manip_loco.CommandsConfig[source]

Bases: Commands

CommandsConfig(vel_limit: ‘list[list[float]]’ = <factory>, resampling_time: ‘float’ = 0.0, heading_command: ‘bool’ = False, heading_range: ‘list[float]’ = <factory>, heading_control_stiffness: ‘float’ = 0.5, rel_standing_envs: ‘float’ = 0.0, resample_time_s: ‘float | None’ = None, zero_command_prob: ‘float’ = 0.2)

Parameters:
resample_time_s: float | None = None
zero_command_prob: float = 0.2
__init__(vel_limit=<factory>, resampling_time=0.0, heading_command=False, heading_range=<factory>, heading_control_stiffness=0.5, rel_standing_envs=0.0, resample_time_s=None, zero_command_prob=0.2)
Parameters:
class unilab.envs.locomotion.go2_arm.manip_loco.CurriculumConfig[source]

Bases: object

Expand velocity command ranges when mean tracking_lin_vel exceeds a threshold.

Parameters:
enable: bool = False
threshold: float = 0.8
step_size: list[float]
max_vel_limit: list[float]
__init__(enable=False, threshold=0.8, step_size=<factory>, max_vel_limit=<factory>)
Parameters:
class unilab.envs.locomotion.go2_arm.manip_loco.RewardConfig[source]

Bases: object

RewardConfig(scales: ‘dict[str, float]’, tracking_sigma: ‘float’, base_height_target: ‘float’, target_foot_height: ‘float’ = 0.1, object_sigma: ‘float’ = 0.1, leg_dof_upper_limits: ‘list[float]’ = <factory>, leg_dof_lower_limits: ‘list[float]’ = <factory>, dof_pos_limit_margin: ‘float’ = 0.01)

Parameters:
scales: dict[str, float]
tracking_sigma: float
base_height_target: float
target_foot_height: float = 0.1
object_sigma: float = 0.1
leg_dof_upper_limits: list[float]
leg_dof_lower_limits: list[float]
dof_pos_limit_margin: float = 0.01
__init__(scales, tracking_sigma, base_height_target, target_foot_height=0.1, object_sigma=0.1, leg_dof_upper_limits=<factory>, leg_dof_lower_limits=<factory>, dof_pos_limit_margin=0.01)
Parameters:
class unilab.envs.locomotion.go2_arm.manip_loco.HistoryConfig[source]

Bases: object

Actor/critic observation history lengths. A value of 1 disables history.

Parameters:
  • num_actor_history (int)

  • num_critic_history (int)

num_actor_history: int = 1
num_critic_history: int = 1
__init__(num_actor_history=1, num_critic_history=1)
Parameters:
  • num_actor_history (int)

  • num_critic_history (int)

class unilab.envs.locomotion.go2_arm.manip_loco.ArmStageConfig[source]

Bases: object

ArmStageConfig(freeze_arm_joints: ‘bool’ = False, disable_ee_goal_trajectory: ‘bool’ = False, fixed_ee_goal_cart: ‘list[float]’ = <factory>)

Parameters:
  • freeze_arm_joints (bool)

  • disable_ee_goal_trajectory (bool)

  • fixed_ee_goal_cart (list[float])

freeze_arm_joints: bool = False
disable_ee_goal_trajectory: bool = False
fixed_ee_goal_cart: list[float]
__init__(freeze_arm_joints=False, disable_ee_goal_trajectory=False, fixed_ee_goal_cart=<factory>)
Parameters:
  • freeze_arm_joints (bool)

  • disable_ee_goal_trajectory (bool)

  • fixed_ee_goal_cart (list[float])

class unilab.envs.locomotion.go2_arm.manip_loco.Go2ArmManipLocoCfg[source]

Bases: Go2ArmBaseCfg

Go2ArmManipLocoCfg(scene: ‘SceneCfg’ = <factory>, sim_dt: ‘float’ = 0.01, max_episode_seconds: ‘float’ = 20.0, ctrl_dt: ‘float’ = 0.02, render_spacing: float = 1.0, render_offset_mode: str = ‘grid’, motrix_max_iterations: Optional[int] = None, post_step_forward_sensor: bool = False, control_config: ‘ControlConfig’ = <factory>, noise_config: ‘NoiseConfig’ = <factory>, sensor: ‘Go2ArmSensor’ = <factory>, ik: ‘IKConfig’ = <factory>, asset: ‘Asset’ = <factory>, iterations: ‘int | None’ = None, model_file: ‘str’ = <factory>, init_state: ‘InitState’ = <factory>, commands: ‘CommandsConfig’ = <factory>, reward_config: ‘RewardConfig | None’ = None, domain_rand: ‘Go2ArmDomainRandConfig’ = <factory>, goal_ee: ‘EEGoalConfig’ = <factory>, history: ‘HistoryConfig’ = <factory>, arm_stage: ‘ArmStageConfig’ = <factory>, curriculum: ‘CurriculumConfig’ = <factory>)

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)

  • control_config (ControlConfig)

  • noise_config (NoiseConfig)

  • sensor (Go2ArmSensor)

  • ik (IKConfig)

  • asset (Asset)

  • iterations (int | None)

  • model_file (str)

  • init_state (InitState)

  • commands (CommandsConfig)

  • reward_config (RewardConfig | None)

  • domain_rand (Go2ArmDomainRandConfig)

  • goal_ee (EEGoalConfig)

  • history (HistoryConfig)

  • arm_stage (ArmStageConfig)

  • curriculum (CurriculumConfig)

model_file: str
max_episode_seconds: float = 20.0
init_state: InitState
commands: CommandsConfig
reward_config: RewardConfig | None = None
sensor: Go2ArmSensor
domain_rand: Go2ArmDomainRandConfig
goal_ee: EEGoalConfig
history: HistoryConfig
arm_stage: ArmStageConfig
curriculum: CurriculumConfig
__init__(scene=<factory>, sim_dt=0.01, max_episode_seconds=20.0, ctrl_dt=0.02, render_spacing=1.0, render_offset_mode='grid', motrix_max_iterations=None, post_step_forward_sensor=False, control_config=<factory>, noise_config=<factory>, sensor=<factory>, ik=<factory>, asset=<factory>, iterations=None, model_file=<factory>, init_state=<factory>, commands=<factory>, reward_config=None, domain_rand=<factory>, goal_ee=<factory>, history=<factory>, arm_stage=<factory>, curriculum=<factory>)
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)

  • control_config (ControlConfig)

  • noise_config (NoiseConfig)

  • sensor (Go2ArmSensor)

  • ik (IKConfig)

  • asset (Asset)

  • iterations (int | None)

  • model_file (str)

  • init_state (InitState)

  • commands (CommandsConfig)

  • reward_config (RewardConfig | None)

  • domain_rand (Go2ArmDomainRandConfig)

  • goal_ee (EEGoalConfig)

  • history (HistoryConfig)

  • arm_stage (ArmStageConfig)

  • curriculum (CurriculumConfig)

class unilab.envs.locomotion.go2_arm.manip_loco.Go2ArmManipLocoDRProvider[source]

Bases: LocomotionDRProvider

Parameters:
__init__(*, base_kp=None, base_kd=None, base_body_mass=None, base_geom_friction=None, ground_geom_id=None, base_dof_armature=None)[source]
Parameters:
build_reset_plan(env, env_ids)[source]
Parameters:
Return type:

ResetPlan

class unilab.envs.locomotion.go2_arm.manip_loco.Go2ArmManipLocoEnv[source]

Bases: Go2ArmBaseEnv

Parameters:

cfg (Go2ArmManipLocoCfg)

__init__(cfg, num_envs=1, backend_type='mujoco')[source]
Parameters:

cfg (Go2ArmManipLocoCfg)

property obs_groups_spec: dict[str, int]

101}.

Subclasses MUST override this property.

Type:

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

Type:

98, “critic”

reset_ee_goals(env_ids)[source]

Reset EE goals by sampling the first segment from init_ee_cart.

Parameters:

env_ids (ndarray)

Return type:

None

apply_action(actions, state)[source]

子类实现:action → ctrl

Parameters:
Return type:

ndarray

update_state(state)[source]

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

Parameters:

state (NpEnvState)

Return type:

NpEnvState