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: generator terrain_generator: seed: null curriculum: true size: !!python/tuple - 8.0 - 8.0 border_width: 20.0 border_height: 1.0 num_rows: 10 num_cols: 20 color_scheme: height sub_terrains: flat: proportion: 0.2 size: !!python/tuple - 8.0 - 8.0 flat_patch_sampling: null pyramid_stairs: proportion: 0.2 size: !!python/tuple - 8.0 - 8.0 flat_patch_sampling: null border_width: 1.0 step_height_range: !!python/tuple - 0.0 - 0.1 step_width: 0.3 platform_width: 3.0 holes: false pyramid_stairs_inv: proportion: 0.2 size: !!python/tuple - 8.0 - 8.0 flat_patch_sampling: null border_width: 1.0 step_height_range: !!python/tuple - 0.0 - 0.1 step_width: 0.3 platform_width: 3.0 holes: false hf_pyramid_slope: proportion: 0.1 size: !!python/tuple - 8.0 - 8.0 flat_patch_sampling: null slope_range: !!python/tuple - 0.0 - 1.0 platform_width: 2.0 inverted: false border_width: 0.25 horizontal_scale: 0.1 vertical_scale: 0.005 base_thickness_ratio: 1.0 hf_pyramid_slope_inv: proportion: 0.1 size: !!python/tuple - 8.0 - 8.0 flat_patch_sampling: null slope_range: !!python/tuple - 0.0 - 1.0 platform_width: 2.0 inverted: true border_width: 0.25 horizontal_scale: 0.1 vertical_scale: 0.005 base_thickness_ratio: 1.0 random_rough: proportion: 0.1 size: !!python/tuple - 8.0 - 8.0 flat_patch_sampling: null noise_range: !!python/tuple - 0.02 - 0.1 noise_step: 0.02 downsampled_scale: null horizontal_scale: 0.1 vertical_scale: 0.005 base_thickness_ratio: 1.0 border_width: 0.25 wave_terrain: proportion: 0.1 size: !!python/tuple - 8.0 - 8.0 flat_patch_sampling: null amplitude_range: !!python/tuple - 0.0 - 0.2 num_waves: 4 horizontal_scale: 0.1 vertical_scale: 0.005 base_thickness_ratio: 0.25 border_width: 0.25 difficulty_range: !!python/tuple - 0.0 - 1.0 add_lights: true env_spacing: 2.0 max_init_terrain_level: 5 num_envs: 4096 entities: robot: init_state: pos: !!python/tuple - 0.0 - 0.0 - 0.278 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: .*thigh_joint: 0.9 .*calf_joint: -1.8 .*R_hip_joint: 0.1 .*L_hip_joint: -0.1 joint_vel: .*: 0.0 spec_fn: !!python/name:mjlab.asset_zoo.robots.unitree_go1.go1_constants.get_spec '' articulation: actuators: !!python/tuple - target_names_expr: !!python/tuple - .*_hip_joint - .*_thigh_joint transmission_type: !!python/object/apply:mjlab.actuator.actuator.TransmissionType - joint armature: 0.004026312 frictionloss: null viscous_damping: null delay_min_lag: 0 delay_max_lag: 0 delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true stiffness: 15.89524265323492 damping: 1.0119225759919113 effort_limit: 23.7 - target_names_expr: !!python/tuple - .*_calf_joint transmission_type: !!python/object/apply:mjlab.actuator.actuator.TransmissionType - joint armature: 0.009059202 frictionloss: null viscous_damping: null delay_min_lag: 0 delay_max_lag: 0 delay_hold_prob: 0.0 delay_update_period: 0 delay_per_env_phase: true stiffness: 35.76429596977857 damping: 2.2768257959818006 effort_limit: 35.55 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: !!python/tuple - .*_collision contype: 1 conaffinity: 1 condim: ^[FR][LR]_foot_collision$: 6 .*_collision: 1 priority: ^[FR][LR]_foot_collision$: 1 friction: ^[FR][LR]_foot_collision$: !!python/tuple - 1 - 0.005 - 0.0005 solref: !!python/tuple - 0.01 - 1 solimp: null margin: null gap: null solmix: null disable_other_geoms: true sensors: !!python/tuple - name: terrain_scan frame: type: body name: trunk entity: robot pattern: size: !!python/tuple - 1.6 - 1.0 resolution: 0.1 direction: !!python/tuple - 0.0 - 0.0 - -1.0 ray_alignment: yaw max_distance: 5.0 exclude_parent_body: true include_geom_groups: !!python/tuple - 0 debug_vis: true viz: hit_color: !!python/tuple - 0.0 - 1.0 - 0.0 - 0.8 miss_color: !!python/tuple - 1.0 - 0.0 - 0.0 - 0.4 hit_sphere_color: !!python/tuple - 0.0 - 1.0 - 1.0 - 1.0 hit_sphere_radius: 0.5 show_rays: false show_normals: false normal_color: !!python/tuple - 1.0 - 1.0 - 0.0 - 1.0 normal_length: 5.0 - name: foot_height_scan frame: !!python/tuple - type: site name: FR entity: robot - type: site name: FL entity: robot - type: site name: RR entity: robot - type: site name: RL entity: robot pattern: rings: !!python/tuple - radius: 0.04 num_samples: 4 include_center: true direction: !!python/tuple - 0.0 - 0.0 - -1.0 ray_alignment: yaw max_distance: 1.0 exclude_parent_body: true include_geom_groups: !!python/tuple - 0 debug_vis: true viz: hit_color: !!python/tuple - 1.0 - 0.0 - 1.0 - 0.8 miss_color: !!python/tuple - 1.0 - 0.0 - 0.0 - 0.4 hit_sphere_color: !!python/tuple - 1.0 - 0.0 - 1.0 - 1.0 hit_sphere_radius: 0.5 show_rays: true show_normals: false normal_color: !!python/tuple - 1.0 - 1.0 - 0.0 - 1.0 normal_length: 5.0 reduction: min - name: feet_ground_contact primary: mode: geom pattern: !!python/tuple - FR_foot_collision - FL_foot_collision - RR_foot_collision - RL_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: self_collision primary: mode: subtree pattern: trunk entity: robot exclude: !!python/tuple [] secondary: mode: subtree pattern: trunk entity: robot exclude: !!python/tuple [] fields: !!python/tuple - found - force reduce: none num_slots: 1 secondary_policy: first track_air_time: false global_frame: false history_length: 4 debug: false - name: thigh_ground_touch primary: mode: geom pattern: !!python/tuple - FR_thigh_collision1 - FR_thigh_collision2 - FR_thigh_collision3 - FL_thigh_collision1 - FL_thigh_collision2 - FL_thigh_collision3 - RR_thigh_collision1 - RR_thigh_collision2 - RR_thigh_collision3 - RL_thigh_collision1 - RL_thigh_collision2 - RL_thigh_collision3 entity: robot exclude: !!python/tuple [] secondary: mode: body pattern: terrain entity: null exclude: !!python/tuple [] fields: !!python/tuple - found - force reduce: none num_slots: 1 secondary_policy: first track_air_time: false global_frame: false history_length: 4 debug: false - name: shank_ground_touch primary: mode: geom pattern: !!python/tuple - FR_calf_collision1 - FR_calf_collision2 - FL_calf_collision1 - FL_calf_collision2 - RR_calf_collision1 - RR_calf_collision2 - RL_calf_collision1 - RL_calf_collision2 entity: robot exclude: !!python/tuple [] secondary: mode: body pattern: terrain entity: null exclude: !!python/tuple [] fields: !!python/tuple - found - force reduce: none num_slots: 1 secondary_policy: first track_air_time: false global_frame: false history_length: 4 debug: false - name: trunk_ground_touch primary: mode: geom pattern: !!python/tuple - trunk_collision - head_collision entity: robot exclude: !!python/tuple [] secondary: mode: body pattern: terrain entity: null exclude: !!python/tuple [] fields: !!python/tuple - found - force reduce: none num_slots: 1 secondary_policy: first track_air_time: false global_frame: false history_length: 4 debug: false extent: 2.0 spec_fn: null observations: actor: terms: base_lin_vel: func: &id001 !!python/name:mjlab.envs.mdp.observations.builtin_sensor '' params: sensor_name: robot/imu_lin_vel noise: operation: add _tensor_cache: {} n_min: -0.5 n_max: 0.5 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 base_ang_vel: func: *id001 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: &id002 !!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: &id003 !!python/name:mjlab.envs.mdp.observations.joint_pos_rel '' params: {} noise: operation: add _tensor_cache: {} n_min: -0.01 n_max: 0.01 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: &id004 !!python/name:mjlab.envs.mdp.observations.joint_vel_rel '' params: {} noise: operation: add _tensor_cache: {} n_min: -1.5 n_max: 1.5 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: &id005 !!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: &id006 !!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 height_scan: func: &id007 !!python/name:mjlab.envs.mdp.observations.height_scan '' params: sensor_name: terrain_scan noise: operation: add _tensor_cache: {} n_min: -0.1 n_max: 0.1 clip: null scale: 0.2 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: *id001 params: sensor_name: robot/imu_lin_vel noise: operation: add _tensor_cache: {} n_min: -0.5 n_max: 0.5 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 base_ang_vel: func: *id001 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: *id002 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: *id003 params: {} noise: operation: add _tensor_cache: {} n_min: -0.01 n_max: 0.01 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: *id004 params: {} noise: operation: add _tensor_cache: {} n_min: -1.5 n_max: 1.5 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: *id005 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: *id006 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 height_scan: func: *id007 params: sensor_name: terrain_scan noise: null clip: null scale: 0.2 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_height: func: !!python/name:mjlab.tasks.velocity.mdp.observations.foot_height '' params: sensor_name: foot_height_scan 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 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: .*_hip_joint: 0.3727530387083568 .*_thigh_joint: 0.3727530387083568 .*_calf_joint: 0.24850202580557115 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.0 - 0.0 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.5 - 0.5 y: !!python/tuple - -0.5 - 0.5 z: !!python/tuple - -0.4 - 0.4 roll: !!python/tuple - -0.52 - 0.52 pitch: !!python/tuple - -0.52 - 0.52 yaw: !!python/tuple - -0.78 - 0.78 mode: interval interval_range_s: !!python/tuple - 1.0 - 3.0 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: !!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 - trunk 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 foot_friction_slide: func: &id008 !!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 - FR_foot_collision - FL_foot_collision - RR_foot_collision - RL_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 axes: - 0 ranges: !!python/tuple - 0.3 - 1.5 shared_random: true mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 foot_friction_spin: func: *id008 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 - FR_foot_collision - FL_foot_collision - RR_foot_collision - RL_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 distribution: log_uniform axes: - 1 ranges: !!python/tuple - 0.0001 - 0.02 shared_random: true mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 foot_friction_roll: func: *id008 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 - FR_foot_collision - FL_foot_collision - RR_foot_collision - RL_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 distribution: log_uniform axes: - 2 ranges: !!python/tuple - 1.0e-05 - 0.005 shared_random: true mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 seed: 42 sim: nconmax: 35 njmax: 1500 ls_parallel: true contact_sensor_maxmatch: 500 mujoco: timestep: 0.005 integrator: implicitfast impratio: 10 cone: elliptic jacobian: auto solver: newton iterations: 10 tolerance: 1.0e-08 ls_iterations: 20 ls_tolerance: 0.01 ccd_iterations: 500 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: 1.5 fovy: null elevation: -10.0 azimuth: 90.0 origin_type: !!python/object/apply:mjlab.viewer.viewer_config.OriginType - 4 entity_name: robot body_name: trunk env_idx: 0 max_extra_envs: 2 enable_reflections: true enable_shadows: true height: 240 width: 320 episode_length_s: 20.0 rewards: track_linear_velocity: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.track_linear_velocity '' params: command_name: twist std: 0.5 weight: 2.0 track_angular_velocity: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.track_angular_velocity '' params: command_name: twist std: 0.7071067811865476 weight: 2.0 upright: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.upright '' params: std: 0.4472135954999579 asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple - trunk 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 terrain_sensor_names: !!python/tuple - terrain_scan weight: 1.0 pose: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.variable_posture '' 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 command_name: twist std_standing: .*(FR|FL|RR|RL)_(hip|thigh)_joint.*: 0.05 .*(FR|FL|RR|RL)_calf_joint.*: 0.1 std_walking: .*(FR|FL|RR|RL)_(hip|thigh)_joint.*: 0.3 .*(FR|FL|RR|RL)_calf_joint.*: 0.6 std_running: .*(FR|FL|RR|RL)_(hip|thigh)_joint.*: 0.3 .*(FR|FL|RR|RL)_calf_joint.*: 0.6 walking_threshold: 0.05 running_threshold: 1.5 weight: 1.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 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.0 angular_momentum: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.angular_momentum_penalty '' params: sensor_name: robot/root_angmom weight: 0.0 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 air_time: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.feet_air_time '' params: sensor_name: feet_ground_contact threshold_min: 0.05 threshold_max: 0.5 command_name: twist command_threshold: 0.5 weight: 0.0 foot_clearance: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.feet_clearance '' params: target_height: 0.1 height_sensor_name: foot_height_scan command_name: twist command_threshold: 0.05 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: !!python/tuple - FR - FL - RR - RL 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 foot_swing_height: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.feet_swing_height '' params: sensor_name: feet_ground_contact height_sensor_name: foot_height_scan target_height: 0.1 command_name: twist command_threshold: 0.05 weight: -0.25 foot_slip: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.feet_slip '' params: sensor_name: feet_ground_contact command_name: twist command_threshold: 0.05 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: !!python/tuple - FR - FL - RR - RL 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.1 soft_landing: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.soft_landing '' params: sensor_name: feet_ground_contact command_name: twist command_threshold: 0.05 weight: -1.0e-05 self_collisions: func: &id009 !!python/name:mjlab.tasks.velocity.mdp.rewards.self_collision_cost '' params: sensor_name: self_collision weight: -0.1 shank_collision: func: *id009 params: sensor_name: shank_ground_touch weight: -0.1 trunk_head_collision: func: *id009 params: sensor_name: trunk_ground_touch weight: -0.1 terminations: time_out: func: !!python/name:mjlab.envs.mdp.terminations.time_out '' params: {} time_out: true out_of_terrain_bounds: func: !!python/name:mjlab.tasks.velocity.mdp.terminations.out_of_terrain_bounds '' params: {} time_out: true illegal_contact: func: !!python/name:mjlab.tasks.velocity.mdp.terminations.illegal_contact '' params: sensor_name: thigh_ground_touch time_out: false commands: twist: resampling_time_range: !!python/tuple - 3.0 - 8.0 debug_vis: true entity_name: robot heading_command: true heading_control_stiffness: 0.5 rel_standing_envs: 0.1 rel_heading_envs: 0.3 rel_world_envs: 0.0 rel_forward_envs: 0.2 init_velocity_prob: 0.0 ranges: lin_vel_x: !!python/tuple - -1.0 - 1.0 lin_vel_y: !!python/tuple - -1.0 - 1.0 ang_vel_z: !!python/tuple - -0.5 - 0.5 heading: !!python/tuple - -3.141592653589793 - 3.141592653589793 viz: z_offset: 0.2 scale: 0.5 curriculum: terrain_levels: func: !!python/name:mjlab.tasks.velocity.mdp.curriculums.terrain_levels_vel '' params: command_name: twist command_vel: func: !!python/name:mjlab.tasks.velocity.mdp.curriculums.commands_vel '' params: command_name: twist velocity_stages: - step: 0 lin_vel_x: !!python/tuple - -1.0 - 1.0 ang_vel_z: !!python/tuple - -0.5 - 0.5 - step: 120000 lin_vel_x: !!python/tuple - -1.5 - 2.0 ang_vel_z: !!python/tuple - -0.7 - 0.7 - step: 240000 lin_vel_x: !!python/tuple - -2.0 - 3.0 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