Learning Frameworks

Overview

iGibson can be used with any learning framework that accommodates OpenAI gym interface. Feel free to use your favorite ones.

Examples

TF-Agents

In this example, we show an environment wrapper of TF-Agents for iGibson and an example training code for SAC agent. The code can be found in our fork of TF-Agents: agents/blob/igibson/tf_agents/environments/suite_gibson.py and agents/blob/igibson/tf_agents/agents/sac/examples/v1/train_single_env.sh.

def load(config_file,
         model_id=None,
         env_mode='headless',
         action_timestep=1.0 / 10.0,
         physics_timestep=1.0 / 40.0,
         device_idx=0,
         gym_env_wrappers=(),
         env_wrappers=(),
         spec_dtype_map=None):
    config_file = os.path.join(os.path.dirname(igibson.__file__), config_file)
    env = iGibsonEnv(config_file=config_file,
                     scene_id=model_id,
                     mode=env_mode,
                     action_timestep=action_timestep,
                     physics_timestep=physics_timestep,
                     device_idx=device_idx)

    discount = env.config.get('discount_factor', 0.99)
    max_episode_steps = env.config.get('max_step', 500)

    return wrap_env(
        env,
        discount=discount,
        max_episode_steps=max_episode_steps,
        gym_env_wrappers=gym_env_wrappers,
        time_limit_wrapper=wrappers.TimeLimit,
        env_wrappers=env_wrappers,
        spec_dtype_map=spec_dtype_map,
        auto_reset=True
    )