RL Policy Deployment on Isaac Sim fails

Isaac Sim Version

4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: RTX3070Ti
  • Driver Version: 560.94

Topic Description

Trained and evaluated a working policy for Unitree G1 in Isaac Lab.

Fails in Isaac Sim

Detailed Description

I created a custom environment by modifying the source code of
Windows > Examples > Robotics Examples > Policy > Humanoid

Instead of a H1, I loaded a G1.
The observations and actions were all modified from the H1FlatTerrainPolicy class to match exactly, the input observations in IsaacLab.

Here is the result

1st play: no commands
2nd play: forward
3rd play: right
4th play: left

Additional Information

What I’ve Tried

Lowered physics_dt, modified the damping of joints in env.yaml exported from IsaacLab

Related Issues

H1 control policy not working in custom environment - Omniverse / Isaac Sim - NVIDIA Developer Forums

env.yaml:

sim:
  physics_prim_path: /physicsScene
  device: cuda:0
  dt: 0.005
  render_interval: 4
  gravity: !!python/tuple
  - 0.0
  - 0.0
  - -9.81
  enable_scene_query_support: false
  use_fabric: true
  physx:
    solver_type: 1
    min_position_iteration_count: 1
    max_position_iteration_count: 255
    min_velocity_iteration_count: 0
    max_velocity_iteration_count: 255
    enable_ccd: false
    enable_stabilization: true
    enable_enhanced_determinism: false
    bounce_threshold_velocity: 0.5
    friction_offset_threshold: 0.04
    friction_correlation_distance: 0.025
    gpu_max_rigid_contact_count: 8388608
    gpu_max_rigid_patch_count: 327680
    gpu_found_lost_pairs_capacity: 2097152
    gpu_found_lost_aggregate_pairs_capacity: 33554432
    gpu_total_aggregate_pairs_capacity: 2097152
    gpu_collision_stack_size: 67108864
    gpu_heap_capacity: 67108864
    gpu_temp_buffer_capacity: 16777216
    gpu_max_num_partitions: 8
    gpu_max_soft_body_contacts: 1048576
    gpu_max_particle_contacts: 1048576
  physics_material:
    func: isaaclab.sim.spawners.materials.physics_materials:spawn_rigid_body_material
    static_friction: 1.0
    dynamic_friction: 1.0
    restitution: 0.0
    improve_patch_friction: true
    friction_combine_mode: multiply
    restitution_combine_mode: multiply
    compliant_contact_stiffness: 0.0
    compliant_contact_damping: 0.0
  render:
    enable_translucency: null
    enable_reflections: null
    enable_global_illumination: null
    antialiasing_mode: null
    enable_dlssg: null
    enable_dl_denoiser: null
    dlss_mode: null
    enable_direct_lighting: null
    samples_per_pixel: null
    enable_shadows: null
    enable_ambient_occlusion: null
    carb_settings: null
    rendering_mode: null
ui_window_class_type: isaaclab.envs.ui.manager_based_rl_env_window:ManagerBasedRLEnvWindow
seed: 42
decimation: 4
scene:
  num_envs: 4096
  env_spacing: 2.5
  lazy_sensor_update: true
  replicate_physics: true
  filter_collisions: true
  robot:
    class_type: isaaclab.assets.articulation.articulation:Articulation
    prim_path: /World/envs/env_.*/Robot
    spawn:
      func: isaaclab.sim.spawners.from_files.from_files:spawn_from_usd
      visible: true
      semantic_tags: null
      copy_from_source: true
      mass_props: null
      deformable_props: null
      rigid_props:
        rigid_body_enabled: null
        kinematic_enabled: null
        disable_gravity: false
        linear_damping: 0.0
        angular_damping: 0.0
        max_linear_velocity: 1000.0
        max_angular_velocity: 1000.0
        max_depenetration_velocity: 1.0
        max_contact_impulse: null
        enable_gyroscopic_forces: null
        retain_accelerations: false
        solver_position_iteration_count: null
        solver_velocity_iteration_count: null
        sleep_threshold: null
        stabilization_threshold: null
      collision_props: null
      activate_contact_sensors: true
      scale: null
      articulation_props:
        articulation_enabled: null
        enabled_self_collisions: false
        solver_position_iteration_count: 8
        solver_velocity_iteration_count: 4
        sleep_threshold: null
        stabilization_threshold: null
        fix_root_link: null
      fixed_tendons_props: null
      joint_drive_props: null
      visual_material_path: material
      visual_material: null
      usd_path: http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.5/Isaac/IsaacLab/Robots/Unitree/G1/g1_minimal.usd
      variants: null
    init_state:
      pos: !!python/tuple
      - 0.0
      - 0.0
      - 0.74
      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:
        left_hip_yaw_joint: 0.0
        left_hip_roll_joint: 0
        left_hip_pitch_joint: -0.1
        left_knee_joint: 0.3
        left_ankle_pitch_joint: -0.2
        left_ankle_roll_joint: 0
        right_hip_yaw_joint: 0.0
        right_hip_roll_joint: 0
        right_hip_pitch_joint: -0.1
        right_knee_joint: 0.3
        right_ankle_pitch_joint: -0.2
        right_ankle_roll_joint: 0
        torso_joint: 0.0
      joint_vel:
        .*: 0.0
    collision_group: 0
    debug_vis: false
    soft_joint_pos_limit_factor: 0.9
    actuators:
      legs:
        class_type: isaaclab.actuators.actuator_pd:ImplicitActuator
        joint_names_expr:
        - .*_hip_yaw_joint
        - .*_hip_roll_joint
        - .*_hip_pitch_joint
        - .*_knee_joint
        - torso_joint
        effort_limit: 300
        velocity_limit: 100.0
        effort_limit_sim: null
        velocity_limit_sim: null
        stiffness:
          .*_hip_yaw_joint: 150.0
          .*_hip_roll_joint: 150.0
          .*_hip_pitch_joint: 200.0
          .*_knee_joint: 200.0
          torso_joint: 200.0
        damping:
          .*_hip_yaw_joint: 5.0
          .*_hip_roll_joint: 5.0
          .*_hip_pitch_joint: 5.0
          .*_knee_joint: 5.0
          torso_joint: 5.0
        armature: null
        friction: null
      feet:
        class_type: isaaclab.actuators.actuator_pd:ImplicitActuator
        joint_names_expr:
        - .*_ankle_pitch_joint
        - .*_ankle_roll_joint
        effort_limit: 20
        velocity_limit: null
        effort_limit_sim: null
        velocity_limit_sim: null
        stiffness: 20.0
        damping: 2.0
        armature: null
        friction: null
      arms:
        class_type: isaaclab.actuators.actuator_pd:ImplicitActuator
        joint_names_expr:
        - .*_shoulder_pitch_joint
        - .*_shoulder_roll_joint
        - .*_shoulder_yaw_joint
        - .*_elbow_pitch_joint
        - .*_elbow_roll_joint
        - .*_five_joint
        - .*_three_joint
        - .*_six_joint
        - .*_four_joint
        - .*_zero_joint
        - .*_one_joint
        - .*_two_joint
        effort_limit: 300
        velocity_limit: 100.0
        effort_limit_sim: null
        velocity_limit_sim: null
        stiffness: 40.0
        damping: 10.0
        armature:
          .*_shoulder_.*: 0.01
          .*_elbow_.*: 0.01
          .*_five_joint: 0.001
          .*_three_joint: 0.001
          .*_six_joint: 0.001
          .*_four_joint: 0.001
          .*_zero_joint: 0.001
          .*_one_joint: 0.001
          .*_two_joint: 0.001
        friction: null
observations:
  policy:
    concatenate_terms: true
    enable_corruption: true
    history_length: null
    flatten_history_dim: true
    base_lin_vel:
      func: isaaclab.envs.mdp.observations:base_lin_vel
      params: {}
      modifiers: null
      noise:
        func: isaaclab.utils.noise.noise_model:uniform_noise
        operation: add
        n_min: -0.1
        n_max: 0.1
      clip: null
      scale: null
      history_length: 0
      flatten_history_dim: true
    base_ang_vel:
      func: isaaclab.envs.mdp.observations:base_ang_vel
      params: {}
      modifiers: null
      noise:
        func: isaaclab.utils.noise.noise_model:uniform_noise
        operation: add
        n_min: -0.2
        n_max: 0.2
      clip: null
      scale: null
      history_length: 0
      flatten_history_dim: true
    projected_gravity:
      func: isaaclab.envs.mdp.observations:projected_gravity
      params: {}
      modifiers: null
      noise:
        func: isaaclab.utils.noise.noise_model:uniform_noise
        operation: add
        n_min: -0.05
        n_max: 0.05
      clip: null
      scale: null
      history_length: 0
      flatten_history_dim: true
    velocity_commands:
      func: isaaclab.envs.mdp.observations:generated_commands
      params:
        command_name: base_velocity
      modifiers: null
      noise: null
      clip: null
      scale: null
      history_length: 0
      flatten_history_dim: true
    joint_pos:
      func: isaaclab.envs.mdp.observations:joint_pos_rel
      params: {}
      modifiers: null
      noise:
        func: isaaclab.utils.noise.noise_model:uniform_noise
        operation: add
        n_min: -0.01
        n_max: 0.01
      clip: null
      scale: null
      history_length: 0
      flatten_history_dim: true
    joint_vel:
      func: isaaclab.envs.mdp.observations:joint_vel_rel
      params: {}
      modifiers: null
      noise:
        func: isaaclab.utils.noise.noise_model:uniform_noise
        operation: add
        n_min: -1.5
        n_max: 1.5
      clip: null
      scale: null
      history_length: 0
      flatten_history_dim: true
    actions:
      func: isaaclab.envs.mdp.observations:last_action
      params: {}
      modifiers: null
      noise: null
      clip: null
      scale: null
      history_length: 0
      flatten_history_dim: true
    height_scan: null
actions:
  joint_pos:
    class_type: isaaclab.envs.mdp.actions.joint_actions:JointPositionAction
    asset_name: robot
    debug_vis: false
    clip: null
    joint_names:
    - .*_hip_yaw_joint
    - .*_hip_roll_joint
    - .*_hip_pitch_joint
    - .*_knee_joint
    - .*_ankle_pitch_joint
    - .*_ankle_roll_joint
    scale: 0.5
    offset: 0.0
    preserve_order: true
    use_default_offset: true