| 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 |
|
|