To configure a GRID session with Isaac, users have access to four configuration files which allows modification of any session parameter with ease.

The contents of the four different configuration files along with examples are provided here:

  • custom_cfg.yaml defines the high level session parameters like the number of parallel agents and simulation rendering settings.
headless: False
livestream: 4
device: 'cuda:0'
cpu: False
verbose: False
experience: ""
disable_fabric: False

agent_cfg: !include agent_cfg.yaml

num_envs: 1

task: GRID-CustomEnv-v0

env_cfg:
  scene: !include scene_cfg.yaml
  mdp: !include mdp_cfg.yaml

viewer:
  eye: [-3.0, 0.0, 1.5]
  
decimation: 4
episode_length_s: 20.0
sim:
  dt: 0.005
  render_interval: 4
  disable_contact_processing: True
  • agent_cfg.yaml configures the agent type and its respective parameters. GRID supports a diverse set of agents types that include but are not limited to reinforcement learning agents, teleoperation agents (keyboard or VR devices), motion planning agents. The below example provides a sample policy inference configuration file. For more information on how to modify it for training RL policies, refer to this section.
- rsl_rl: 
    train: false
    experiment_name: unitree_go2_rough
    load_run: .*
    load_checkpoint: model_.*.pt
  • mdp_cfg.yaml is necessary for defining the MDP settings for RL training or inference. This includes parameters related to the high level commands given to the agent (like base velocity commands or end-effector commands), lower level actions provided to each of the DOFs (like relative change pose and binary gripper control), the set of observations fed to the policy network, termination conditions for each episode, reward design, and curriculum utilized in the training methodology. The following example depicts the MDP settings for a Unitree Go2 that receives velocities commands and executes them based on a locomotion policy.
commands:
  - base_velocity:
      type: VelocityCommand
      config:
        asset_name: robot

actions:
  - arm:
      type: JointPosition
      config:
        asset_name: robot
        joint_names: [".*"]

observations:
  - policy:
      - base_lin_vel: 
          type: base_lin_vel
      - base_ang_vel: 
          type: base_ang_vel
      - projected_gravity:
          type: projected_gravity
      - velocity_commands:
          type: velocity_commands
      - joint_pos:
          type: joint_pos
      - joint_vel:
          type: joint_vel
      - actions:
          type: actions
          config:
            params:
              action_name: arm
      - height_scan:
          type: height_scan
  • scene_cfg.yaml specifies the configuration settings for the environment (including the scene type, its placement, scale, etc.) and the robot (including the robot type, its placement, the sensor configuration for the robot, etc.) The below provided sample scene configuration file initializes a Unitree Go2 with a set of specified sensors in a standard warehouse environment.
- terrain:
    type: static
    name: CustomUSD 
    config:
      prim_path: /World/ground
      init_state:
        pos: [0.5, 0.0, 0.0] 
        rot: [0.707, 0, 0, 0.707] 
      spawn:
        usd_path: "http://omniverse-content-production.s3-us-west-2.amazonaws.com/Assets/Isaac/4.1/Isaac/Environments/Simple_Warehouse/warehouse.usd"

- robot:
    type: robot
    name: UNITREE_GO2
    sensors:
      - height_scanner:
         type: HeightSensor
         link: base
      - contact_forces:
         type: ContactSensor
      - camera_rgb_0:
          type: CameraRGB
          config:
            prim_path: "/World/envs/env_.*/robot/base/imu/cam_rgb"
            height: 400
            width: 600
            offset: 
              pos: [1.2693, 0.025, 0.067]
              rot: [0.5, -0.5, 0.5, -0.5]
            spawn:
              focal_length: 24.0
              focus_distance: 400.0
              horizontal_aperture: 20.955

Was this page helpful?