decimation: 4 scene: num_envs: 4096 env_spacing: 2.0 terrain: init_state: pos: !!python/tuple - 0.0 - 0.0 - 0.0 rot: !!python/tuple - 1.0 - 0.0 - 0.0 - 0.0 lin_vel: !!python/tuple - 0.0 - 0.0 - 0.0 ang_vel: !!python/tuple - 0.0 - 0.0 - 0.0 joint_pos: .*: 0.0 joint_vel: .*: 0.0 spec_fn: !!python/name:mjlab.entity.entity.%3Clambda%3E '' articulation: null sort_actuators: false lights: !!python/tuple - name: sun body: world mode: fixed target: null type: directional castshadow: true pos: !!python/tuple - 0.0 - 0.0 - 1.5 dir: !!python/tuple - 0.0 - 0.0 - -1.0 cutoff: 45.0 exponent: 10.0 cameras: !!python/tuple [] textures: !!python/tuple - name: groundplane type: 2d builtin: checker rgb1: !!python/tuple - 0.2 - 0.3 - 0.4 rgb2: !!python/tuple - 0.1 - 0.2 - 0.3 width: 300 height: 300 mark: edge markrgb: !!python/tuple - 0.8 - 0.8 - 0.8 materials: !!python/tuple - name: groundplane rgba: !!python/tuple - 1.0 - 1.0 - 1.0 - 1.0 texuniform: true texrepeat: !!python/tuple - 4.0 - 4.0 reflectance: 0.2 texture: groundplane geom_names_expr: !!python/tuple - terrain$ collisions: !!python/tuple [] terrain_type: plane terrain_generator: null env_spacing: 2.0 max_init_terrain_level: 5 num_envs: 4096 entities: robot: init_state: pos: !!python/tuple - 0.0 - 0.0 - 0.0 rot: !!python/tuple - 1.0 - 0.0 - 0.0 - 0.0 lin_vel: !!python/tuple - 0.0 - 0.0 - 0.0 ang_vel: !!python/tuple - 0.0 - 0.0 - 0.0 joint_pos: .*hip_yaw.*: 0.0 .*left_hip_roll.*: -0.0873 .*right_hip_roll.*: 0.0873 .*left_hip_pitch.*: -0.4579 .*right_hip_pitch.*: 0.4579 .*left_knee.*: -0.0049 .*right_knee.*: 0.0049 .*left_ankle.*: 0.453 .*right_ankle.*: -0.453 .*neck_pitch.*: 0.3491 .*head_pitch.*: 0.3491 .*head_yaw.*: 0.0 .*head_roll.*: 0.0 joint_vel: .*: 0.0 spec_fn: !!python/name:mjlab_microduck.robot.microduck_constants.get_standup_spec '' articulation: actuators: !!python/tuple - target_names_expr: !!python/tuple - ^(?!passive_).* transmission_type: !!python/object/apply:mjlab.actuator.actuator.TransmissionType - joint armature: null frictionloss: null viscous_damping: null delay_min_lag: 3 delay_max_lag: 6 delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true motor_name: xl330 model: m6 json_path: null vin: null kp_fw: 200.0 vin_range: !!python/tuple - 6.5 - 8.2 vin_drop_gain_range: !!python/tuple - 0.0 - 0.2 vin_min: 6.0 stiff_frictionloss: true soft_joint_pos_limit_factor: 0.9 sort_actuators: false lights: !!python/tuple [] cameras: !!python/tuple [] textures: !!python/tuple [] materials: !!python/tuple [] collisions: !!python/tuple - geom_names_expr: - .*_collision contype: 1 conaffinity: 1 condim: ^(left|right)_foot_collision$: 3 .*_collision: 1 priority: ^(left|right)_foot_collision$: 1 friction: ^(left|right)_foot_collision$: !!python/tuple - 1.0 solref: null solimp: null margin: null gap: null solmix: null disable_other_geoms: true ball: init_state: pos: !!python/tuple - 0.3 - 0.0 - 0.035 rot: !!python/tuple - 1.0 - 0.0 - 0.0 - 0.0 lin_vel: !!python/tuple - 0.0 - 0.0 - 0.0 ang_vel: !!python/tuple - 0.0 - 0.0 - 0.0 joint_pos: .*: 0.0 joint_vel: .*: 0.0 spec_fn: !!python/name:mjlab_microduck.robot.microduck_constants.get_ball_spec '' articulation: null sort_actuators: false lights: !!python/tuple [] cameras: !!python/tuple [] textures: !!python/tuple [] materials: !!python/tuple [] collisions: !!python/tuple [] sensors: !!python/tuple - name: feet_ground_contact primary: mode: geom pattern: ^(left_foot_collision|right_foot_collision)$ entity: robot exclude: !!python/tuple [] secondary: mode: body pattern: terrain entity: null exclude: !!python/tuple [] fields: !!python/tuple - found - force reduce: netforce num_slots: 1 secondary_policy: first track_air_time: true global_frame: false history_length: 0 debug: false - name: support_foot_ground_contact primary: mode: geom pattern: ^left_foot_collision$ entity: robot exclude: !!python/tuple [] secondary: mode: body pattern: terrain entity: null exclude: !!python/tuple [] fields: !!python/tuple - found reduce: netforce num_slots: 1 secondary_policy: first track_air_time: false global_frame: false history_length: 0 debug: false - name: self_collision primary: mode: subtree pattern: trunk_base entity: robot exclude: !!python/tuple [] secondary: mode: subtree pattern: trunk_base entity: robot exclude: !!python/tuple [] fields: !!python/tuple - found reduce: none num_slots: 1 secondary_policy: first track_air_time: false global_frame: false history_length: 0 debug: false extent: 2.0 spec_fn: null observations: actor: terms: base_ang_vel: func: !!python/name:mjlab_microduck.tasks.mdp.base_ang_vel_imu_misaligned '' params: max_angle_deg: 6.0 noise: operation: add _tensor_cache: {} n_min: -0.03 n_max: 0.03 clip: null scale: null delay_min_lag: 0 delay_max_lag: 1 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 64 delay_per_env_phase: true history_length: 0 flatten_history_dim: true projected_gravity: func: !!python/name:mjlab_microduck.tasks.mdp.projected_gravity_imu_misaligned '' params: max_angle_deg: 6.0 noise: operation: add _tensor_cache: {} n_min: -0.01 n_max: 0.01 clip: null scale: null delay_min_lag: 0 delay_max_lag: 1 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 64 delay_per_env_phase: true history_length: 0 flatten_history_dim: true joint_pos: func: &id002 !!python/name:mjlab.envs.mdp.observations.joint_pos_rel '' params: asset_cfg: name: robot joint_names: !!python/tuple - ^(?!passive_).* joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false biased: true noise: operation: add _tensor_cache: {} n_min: -0.001 n_max: 0.001 clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true joint_vel: func: &id003 !!python/name:mjlab.envs.mdp.observations.joint_vel_rel '' params: asset_cfg: name: robot joint_names: !!python/tuple - ^(?!passive_).* joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false noise: operation: add _tensor_cache: {} n_min: -0.25 n_max: 0.25 clip: null scale: null delay_min_lag: 1 delay_max_lag: 1 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true actions: func: &id004 !!python/name:mjlab.envs.mdp.observations.last_action '' params: {} noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true command: func: &id005 !!python/name:mjlab.envs.mdp.observations.generated_commands '' params: command_name: twist noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true head_command: func: &id001 !!python/name:mjlab_microduck.tasks.mdp.zero_command_padding '' params: dim: 4 noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true body_command: func: *id001 params: dim: 6 noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true concatenate_terms: true concatenate_dim: -1 enable_corruption: true history_length: null flatten_history_dim: true nan_policy: disabled nan_check_per_term: true critic: terms: base_lin_vel: func: !!python/name:mjlab.envs.mdp.observations.base_lin_vel '' params: {} noise: null clip: null scale: 1.0 delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true base_ang_vel: func: !!python/name:mjlab.envs.mdp.observations.builtin_sensor '' params: sensor_name: robot/imu_ang_vel noise: operation: add _tensor_cache: {} n_min: -0.2 n_max: 0.2 clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true projected_gravity: func: !!python/name:mjlab.envs.mdp.observations.projected_gravity '' params: {} noise: operation: add _tensor_cache: {} n_min: -0.05 n_max: 0.05 clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true joint_pos: func: *id002 params: asset_cfg: name: robot joint_names: !!python/tuple - ^(?!passive_).* joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false biased: false noise: operation: add _tensor_cache: {} n_min: -0.001 n_max: 0.001 clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true joint_vel: func: *id003 params: asset_cfg: name: robot joint_names: !!python/tuple - ^(?!passive_).* joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false noise: operation: add _tensor_cache: {} n_min: -0.25 n_max: 0.25 clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true actions: func: *id004 params: {} noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true command: func: *id005 params: command_name: twist noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true foot_air_time: func: !!python/name:mjlab.tasks.velocity.mdp.observations.foot_air_time '' params: sensor_name: feet_ground_contact noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true foot_contact: func: !!python/name:mjlab.tasks.velocity.mdp.observations.foot_contact '' params: sensor_name: feet_ground_contact noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true foot_contact_forces: func: !!python/name:mjlab.tasks.velocity.mdp.observations.foot_contact_forces '' params: sensor_name: feet_ground_contact noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true head_command: func: *id001 params: dim: 4 noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true body_command: func: *id001 params: dim: 6 noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true ball_position: func: !!python/name:mjlab_microduck.tasks.mdp.ball_pos_in_base '' params: asset_name: ball noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true ball_velocity: func: !!python/name:mjlab_microduck.tasks.mdp.ball_vel_in_base '' params: asset_name: ball noise: null clip: null scale: null delay_min_lag: 0 delay_max_lag: 0 delay_per_env: true delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true history_length: 0 flatten_history_dim: true concatenate_terms: true concatenate_dim: -1 enable_corruption: false history_length: null flatten_history_dim: true nan_policy: disabled nan_check_per_term: true actions: joint_pos: entity_name: robot clip: null transmission_type: !!python/object/apply:mjlab.actuator.actuator.TransmissionType - joint actuator_names: !!python/tuple - .* scale: 1.0 offset: 0.0 preserve_order: false use_default_offset: true events: reset_base: func: !!python/name:mjlab.envs.mdp.events.reset_root_state_uniform '' params: pose_range: x: !!python/tuple - -0.5 - 0.5 y: !!python/tuple - -0.5 - 0.5 z: !!python/tuple - 0.01 - 0.05 yaw: !!python/tuple - -3.14 - 3.14 velocity_range: {} mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 reset_robot_joints: func: !!python/name:mjlab.envs.mdp.events.reset_joints_by_offset '' params: position_range: !!python/tuple - -0.05 - 0.05 velocity_range: !!python/tuple - 0.0 - 0.0 asset_cfg: name: robot joint_names: !!python/tuple - .* joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 push_robot: func: !!python/name:mjlab.envs.mdp.events.push_by_setting_velocity '' params: velocity_range: x: !!python/tuple - -0.3 - 0.3 y: !!python/tuple - -0.3 - 0.3 asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false mode: interval interval_range_s: !!python/tuple - 3.0 - 6.0 is_global_time: false min_step_count_between_reset: 0 foot_friction: func: !!python/name:mjlab.envs.mdp.dr.geom.geom_friction '' params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: !!python/tuple - left_foot_collision - right_foot_collision geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false operation: abs ranges: !!python/tuple - 0.7 - 1.3 shared_random: true mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 encoder_bias: func: !!python/name:mjlab.envs.mdp.dr.joint.encoder_bias '' params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false bias_range: !!python/tuple - -0.015 - 0.015 mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 base_com: func: &id006 !!python/name:mjlab.envs.mdp.dr.body.body_com_offset '' params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple [] body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false operation: add ranges: 0: !!python/tuple - -0.025 - 0.025 1: !!python/tuple - -0.025 - 0.025 2: !!python/tuple - -0.03 - 0.03 mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 expand_bam_friction_fields: func: !!python/name:mjlab_microduck.tasks.mdp.expand_bam_friction_fields '' params: {} mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 reset_action_history: func: !!python/name:mjlab_microduck.tasks.mdp.reset_action_history '' params: {} mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 set_ground_state: func: !!python/name:mjlab_microduck.tasks.mdp.set_random_ground_state '' params: face_down_prob: 0.0 face_up_prob: 0.0 sitting_prob: 0.0 standing_prob: 1.0 sitting_tilt_max: 0.08726646259971647 standing_z_min: 0.11 standing_z_max: 0.12 mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 reset_ball: func: !!python/name:mjlab_microduck.tasks.mdp.reset_ball_in_front_of_foot '' params: offset: !!python/tuple - 0.09 - -0.042 noise_xy: 0.015 ball_radius: 0.035 asset_name: ball mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 randomize_com: func: *id006 params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple - trunk_base body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false operation: add ranges: !!python/tuple - -0.003 - 0.003 mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 randomize_head_com: func: *id006 params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple - neck - neck_pitch - yaw_roll_motion - (bottom_head_shell|jaw_soft) - bearing_roll body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false operation: add ranges: !!python/tuple - -0.003 - 0.003 mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 randomize_armature: func: !!python/name:mjlab.envs.mdp.dr.joint.joint_armature '' params: asset_cfg: name: robot joint_names: !!python/tuple - .* joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false operation: scale ranges: !!python/tuple - 0.9 - 1.1 mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 randomize_mass_inertia: func: !!python/name:mjlab.envs.mdp.dr.body.pseudo_inertia '' params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple - trunk_base body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false alpha_range: !!python/tuple - -0.02564664719377529 - 0.024395082084716024 mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 randomize_joint_friction: func: !!python/name:mjlab_microduck.tasks.mdp.randomize_bam_friction '' params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: null body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false scale_range: !!python/tuple - 0.9 - 1.1 mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 seed: 42 sim: nconmax: 50 njmax: 1500 ls_parallel: true contact_sensor_maxmatch: 64 mujoco: timestep: 0.005 integrator: implicitfast impratio: 1.0 cone: pyramidal jacobian: auto solver: newton iterations: 10 tolerance: 1.0e-08 ls_iterations: 20 ls_tolerance: 0.01 ccd_iterations: 50 gravity: !!python/tuple - 0.0 - 0.0 - -9.81 disableflags: !!python/tuple [] enableflags: !!python/tuple [] nan_guard: enabled: false buffer_size: 100 output_dir: /tmp/mjlab/nan_dumps max_envs_to_dump: 5 viewer: lookat: !!python/tuple - 0.0 - 0.0 - 0.0 distance: 3.0 fovy: null elevation: -5.0 azimuth: 90.0 origin_type: !!python/object/apply:mjlab.viewer.viewer_config.OriginType - 4 entity_name: robot body_name: trunk_base env_idx: 0 max_extra_envs: 2 enable_reflections: true enable_shadows: true height: 240 width: 320 episode_length_s: 5.0 rewards: upright: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.upright '' params: std: 0.22360679774997896 asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple - trunk_base body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false weight: 2.0 body_ang_vel: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.body_angular_velocity_penalty '' params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple - trunk_base body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false weight: -0.05 angular_momentum: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.angular_momentum_penalty '' params: sensor_name: robot/root_angmom weight: -0.02 dof_pos_limits: func: !!python/name:mjlab.envs.mdp.rewards.joint_pos_limits '' params: {} weight: -1.0 action_rate_l2: func: !!python/name:mjlab.envs.mdp.rewards.action_rate_l2 '' params: {} weight: -0.1 ball_forward_velocity: func: !!python/name:mjlab_microduck.tasks.mdp.ball_forward_velocity '' params: asset_name: ball max_speed: 1.0 weight: 12.0 ball_speed_overshoot: func: !!python/name:mjlab_microduck.tasks.mdp.ball_speed_overshoot_penalty '' params: asset_name: ball target_speed: 1.0 weight: -4.0 support_foot_grounded: func: !!python/name:mjlab_microduck.tasks.mdp.single_foot_grounded_reward '' params: sensor_name: support_foot_ground_contact weight: 2.0 pose_stand_legs: func: &id007 !!python/name:mjlab_microduck.tasks.mdp.pose_target_match '' params: std: 0.5 joint_indices: - 0 - 1 - 2 - 3 - 4 - 9 - 10 - 11 - 12 - 13 target_overrides: null weight: 2.0 pose_stand_neck: func: *id007 params: std: 0.3 joint_indices: - 5 - 6 - 7 - 8 target_overrides: null weight: 1.0 height_stand: func: !!python/name:mjlab_microduck.tasks.mdp.height_target_gaussian '' params: std: 0.04 target_height: 0.115 asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple - trunk_base body_ids: !!python/object/apply:builtins.slice - null - null - null geom_names: null geom_ids: !!python/object/apply:builtins.slice - null - null - null site_names: null site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null tendon_names: null tendon_ids: !!python/object/apply:builtins.slice - null - null - null camera_names: null camera_ids: !!python/object/apply:builtins.slice - null - null - null light_names: null light_ids: !!python/object/apply:builtins.slice - null - null - null material_names: null material_ids: !!python/object/apply:builtins.slice - null - null - null pair_names: null pair_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false weight: 1.0 self_collisions: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.self_collision_cost '' params: sensor_name: self_collision weight: -1.0 terminations: time_out: func: !!python/name:mjlab.envs.mdp.terminations.time_out '' params: {} time_out: true fell_over: func: !!python/name:mjlab.envs.mdp.terminations.bad_orientation '' params: limit_angle: 1.2217304763960306 time_out: false out_of_terrain_bounds: func: !!python/name:mjlab.tasks.velocity.mdp.terminations.out_of_terrain_bounds '' params: {} time_out: true nan_state: func: !!python/name:mjlab_microduck.tasks.mdp.robot_state_is_nan '' params: {} time_out: false commands: twist: resampling_time_range: !!python/tuple - 5.0 - 10.0 debug_vis: false entity_name: robot heading_command: false heading_control_stiffness: 0.5 rel_standing_envs: 0.0 rel_heading_envs: 0.0 rel_world_envs: 0.0 rel_forward_envs: 0.2 init_velocity_prob: 0.0 ranges: lin_vel_x: !!python/tuple - -0.01 - 0.01 lin_vel_y: !!python/tuple - -0.01 - 0.01 ang_vel_z: !!python/tuple - -0.05 - 0.05 heading: null viz: z_offset: 0.2 scale: 0.5 rel_turn_in_place_envs: 0.0 curriculum: action_rate_weight: func: !!python/name:mjlab_microduck.tasks.mdp.reward_weight '' params: reward_name: action_rate_l2 weight_stages: - step: 0 weight: -0.1 - step: 12000 weight: -0.2 - step: 18000 weight: -0.4 - step: 24000 weight: -0.6 - step: 30000 weight: -0.8 - step: 36000 weight: -1.0 com_range: func: &id008 !!python/name:mjlab_microduck.tasks.mdp.com_range_curriculum '' params: event_name: randomize_com range_stages: - step: 0 range: 0.003 - step: 12000 range: 0.005 - step: 24000 range: 0.01 - step: 36000 range: 0.015 head_com_range: func: *id008 params: event_name: randomize_head_com range_stages: - step: 0 range: 0.003 - step: 12000 range: 0.005 - step: 24000 range: 0.01 push_magnitude: func: !!python/name:mjlab_microduck.tasks.mdp.push_curriculum '' params: event_name: push_robot push_stages: - step: 0 velocity_range: x: !!python/tuple - 0.0 - 0.0 y: !!python/tuple - 0.0 - 0.0 - step: 12000 velocity_range: x: !!python/tuple - -0.08 - 0.08 y: !!python/tuple - -0.08 - 0.08 - step: 24000 velocity_range: x: !!python/tuple - -0.3 - 0.3 y: !!python/tuple - -0.3 - 0.3 metrics: mean_action_acc: func: !!python/name:mjlab.envs.mdp.metrics.mean_action_acc '' params: {} per_substep: false reduce: mean recorders: {} is_finite_horizon: false auto_reset: true scale_rewards_by_dt: true