decimation: 4 scene: num_envs: 8192 env_spacing: 2.0 terrain: terrain_type: plane terrain_generator: null env_spacing: 2.0 max_init_terrain_level: 5 num_envs: 8192 entities: robot: init_state: pos: !!python/tuple - 0.0 - 0.0 - 0.4 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_go2.go2_constants.get_spec '' articulation: actuators: !!python/tuple - target_names_expr: !!python/tuple - .* transmission_type: !!python/object/apply:mjlab.actuator.actuator.TransmissionType - joint armature: 0.01 frictionloss: 0.0 stiffness: 20.0 damping: 1.0 effort_limit: 23.5 soft_joint_pos_limit_factor: 0.9 lights: !!python/tuple [] cameras: !!python/tuple [] textures: !!python/tuple [] materials: !!python/tuple [] collisions: !!python/tuple - geom_names_expr: !!python/tuple - .*_collision contype: 1 conaffinity: 0 condim: ^[FR][LR]_foot_collision$: 3 .*_collision: 1 priority: ^[FR][LR]_foot_collision$: 1 friction: ^[FR][LR]_foot_collision$: !!python/tuple - 0.6 solref: null solimp: ^[FR][LR]_foot_collision$: !!python/tuple - 0.9 - 0.95 - 0.023 disable_other_geoms: true sensors: !!python/tuple - 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: nonfoot_ground_touch primary: mode: geom pattern: .*_collision\d*$ entity: robot exclude: !!python/tuple - FR_foot_collision - FL_foot_collision - RR_foot_collision - RL_foot_collision secondary: mode: body pattern: terrain entity: null 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: policy: terms: base_ang_vel: func: &id001 !!python/name:mjlab.envs.mdp.observations.builtin_sensor '' params: sensor_name: robot/imu_ang_vel noise: operation: add 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 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 command: func: &id003 !!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 joint_pos: func: &id004 !!python/name:mjlab.envs.mdp.observations.joint_pos_rel '' params: {} noise: operation: add 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: &id005 !!python/name:mjlab.envs.mdp.observations.joint_vel_rel '' params: {} noise: operation: add 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: &id006 !!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 concatenate_terms: true concatenate_dim: -1 enable_corruption: true history_length: 1 flatten_history_dim: true critic: terms: base_lin_vel: func: *id001 params: sensor_name: robot/imu_lin_vel 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 base_ang_vel: func: *id001 params: sensor_name: robot/imu_ang_vel noise: operation: add 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 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 command: func: *id003 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 joint_pos: func: *id004 params: {} noise: operation: add 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: *id005 params: {} noise: operation: add 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: *id006 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 concatenate_terms: true concatenate_dim: -1 enable_corruption: false history_length: 1 flatten_history_dim: true actions: joint_pos: entity_name: robot clip: null transmission_type: !!python/object/apply:mjlab.actuator.actuator.TransmissionType - joint actuator_names: !!python/tuple - .* scale: 0.5 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 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 domain_randomization: false 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: .* 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 preserve_order: false mode: reset interval_range_s: null is_global_time: false min_step_count_between_reset: 0 domain_randomization: false 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.25 - 0.25 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 domain_randomization: false body_friction: func: &id007 !!python/name:mjlab.envs.mdp.events.randomize_field '' 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: .*_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 preserve_order: false operation: abs field: geom_friction ranges: !!python/tuple - 0.3 - 1.2 mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 domain_randomization: true encoder_bias: func: !!python/name:mjlab.envs.mdp.events.randomize_encoder_bias '' params: asset_cfg: name: robot joint_names: .* 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 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 domain_randomization: false base_com: func: *id007 params: asset_cfg: name: robot joint_names: null joint_ids: !!python/object/apply:builtins.slice - null - null - null body_names: !!python/tuple - base_link 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 preserve_order: false operation: add field: body_ipos ranges: 0: !!python/tuple - -0.05 - 0.05 1: !!python/tuple - -0.05 - 0.05 2: !!python/tuple - -0.05 - 0.05 mode: startup interval_range_s: null is_global_time: false min_step_count_between_reset: 0 domain_randomization: true seed: 42 sim: nconmax: 35 njmax: 300 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 - -9.81 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 elevation: -10.0 azimuth: 90.0 origin_type: !!python/object/apply:mjlab.viewer.viewer_config.OriginType - 3 entity_name: robot body_name: base_link env_idx: 0 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: 1.0 track_angular_velocity: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.track_angular_velocity '' params: command_name: twist std: 0.5 weight: 1.0 flat_orientation_l2: func: !!python/name:mjlab.envs.mdp.rewards.flat_orientation_l2 '' params: {} weight: -5.0 pose: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.variable_posture '' params: asset_cfg: name: robot joint_names: .* 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 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.1 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 - base_link 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 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.025 is_terminated: func: !!python/name:mjlab.envs.mdp.rewards.is_terminated '' params: {} weight: -200.0 joint_acc_l2: func: !!python/name:mjlab.envs.mdp.rewards.joint_acc_l2 '' params: {} weight: -2.5e-07 joint_pos_limits: func: !!python/name:mjlab.envs.mdp.rewards.joint_pos_limits '' params: {} weight: -10.0 action_rate_l2: func: !!python/name:mjlab.envs.mdp.rewards.action_rate_l2 '' params: {} weight: -0.05 foot_clearance: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.feet_clearance '' params: target_height: 0.1 command_name: twist command_threshold: 0.1 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 [] site_ids: !!python/object/apply:builtins.slice - null - null - null actuator_names: null actuator_ids: !!python/object/apply:builtins.slice - null - null - null preserve_order: false weight: 0.0 foot_slip: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.feet_slip '' params: sensor_name: feet_ground_contact command_name: twist command_threshold: 0.1 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 preserve_order: false weight: -0.25 soft_landing: func: !!python/name:mjlab.tasks.velocity.mdp.rewards.soft_landing '' params: sensor_name: feet_ground_contact command_name: twist command_threshold: 0.1 weight: -0.001 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: 0.8726646259971648 time_out: false illegal_contact: func: !!python/name:mjlab.tasks.velocity.mdp.terminations.illegal_contact '' params: sensor_name: nonfoot_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.05 rel_heading_envs: 0.25 init_velocity_prob: 0.0 ranges: lin_vel_x: !!python/tuple - -0.5 - 1.0 lin_vel_y: !!python/tuple - -0.5 - 0.5 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: 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 - -0.5 - 1.0 lin_vel_y: !!python/tuple - -0.5 - 0.5 ang_vel_z: !!python/tuple - -1.0 - 1.0 - step: 120000 lin_vel_x: !!python/tuple - -1.0 - 2.0 lin_vel_y: !!python/tuple - -1.0 - 1.0 is_finite_horizon: false scale_rewards_by_dt: true