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