Environment Libraries

Garage supports a variety of external environment libraries for different RL training purposes. This section introduces the environment libraries supported by garage and how to work with them.

OpenAI gym

OpenAI’s gym comes with the default garage installation. To use a gym environment, you should wrap it with garage.envs.GymEnv.

For example:

    import gym
    from garage.envs import GymEnv

    env = GymEnv(gym.make('CarRacing-v0')

The wrapper GymEnv is required because it brings gym environments to garage’s Environment format.

Find more about the Environment API here.

Note that GymEnv can also take a string argument and create the gym environment for you. In fact, this is the preferred way to create a gym environment in garage.

For example:

    from garage.envs import GymEnv

    env = GymEnv('CarRacing-v0')

DeepMind dm_control

DeepMind’s dm_control can be installed via pip install 'garage[mujoco,dm_control]'. Checkout the installation guide for details about setting up mujoco dependencies for dm_control.

dm_control environments are wrapped by garage.envs.dm_control.DMControlEnv:

    from garage.envs.dm_control import DMControlEnv

    env = DMControlEnv.from_suite(domain_name, task_name)

Note that DMControlEnv.from_suite() is a convenient (and preferred) function that returns a DMControlEnv wrapping a dm_control environment with the given domain and task name.

MetaWorld

MetaWorld provides environments for benchmark for meta- and multi-task reinforcement learning. Since MetaWorld environments implement the gym environment interface, they can be wrapped by garage.envs.GymEnv as well.

    from metaworld.benchmarks import MT10
    from garage.envs import GymEnv

    task = MT10.get_train_tasks().all_task_names[0]
    env = GymEnv(MT10.from_task(task)

PyBullet

PyBullet provides environments supported by the Bullet Physics SDK. PyBullet dependencies can be installed via pip install 'garage[bullet]'.

PyBullet environments are wrapped by garage.envs.bullet.BulletEnv.

    from garage.envs.bullet import BulletEnv

    env = BulletEnv('KukaCamBulletEnv-v0')

Note that since PyBullet environments implement the gym environment interface, they can be wrapped by garage.envs.GymEnv as well. In this case, GymEnv will return a BulletEnv instance. For example:

    from garage.envs import GymEnv

    env = GymEnv('KukaCamBulletEnv-v0')
    # type(env) == BulletEnv

More Environment Libraries?

Checkout Adding a new Environment to find out how to create your own environment wrapper.


This page was authored by Eric Yihan Chen (@AiRuiChen).