garage icon indicating copy to clipboard operation
garage copied to clipboard

KeyError: 'render.modes' in GymEnv wrapping "CartPole-vX"

Open AndreaFinazzi opened this issue 2 years ago • 2 comments

Apparently, classic control environments in Gym have a different key for render modes in env.metadata.

In fact:

>>> import gym
>>> env = gym.make('CartPole-v1')
>>> env.metadata
{'render_modes': ['human', 'rgb_array'], 'render_fps': 50}

While in the garage wrapper it expects to find env.metadata['render.modes'], as it is for other environments. https://github.com/rlworkgroup/garage/blob/c56513f42be9cba2ef5426425a8ad36097e679c2/src/garage/envs/gym_env.py#L147

This results in a KeyError, unsurprisingly:

$ python examples/tf/trpo_cartpole.py 
Traceback (most recent call last):
  File "examples/tf/trpo_cartpole.py", line 57, in <module>
    trpo_cartpole()
  File "/home/***/.local/lib/python3.8/site-packages/garage/experiment/experiment.py", line 369, in __call__
    result = self.function(ctxt, **kwargs)
  File "examples/tf/trpo_cartpole.py", line 33, in trpo_cartpole
    env = GymEnv('CartPole-v1')
  File "/home/***/.local/lib/python3.8/site-packages/garage/envs/gym_env.py", line 147, in __init__
    self._render_modes = self._env.metadata['render.modes']
KeyError: 'render.modes'

Is it a problem of my version mix? I run with:

  • garage==2021.3.0
  • gym==0.23.1

Thank you all for the great work!

AndreaFinazzi avatar Apr 14 '22 12:04 AndreaFinazzi

I solved same problem by downgrading gym to 0.21.0

pip uninstall gym
pip install gym==0.21.0

causeim avatar Apr 30 '22 07:04 causeim

Garage setup.py specifies gym version 0.17.2. I wouldn't be surprised if some other versions work, but they've been changing the API a lot recently and I unfortunately don't have time to keep the wrapper up to date. Thanks for the the info @causeim

krzentner avatar May 04 '22 21:05 krzentner