ding.envs.env.default_wrapper¶
ding.envs.env.default_wrapper
¶
get_default_wrappers(env_wrapper_name, env_id=None, caller='collector')
¶
Overview
Get default wrappers for different environments used in DingEnvWrapper.
Arguments:
- env_wrapper_name (:obj:str): The name of the environment wrapper.
- env_id (:obj:Optional[str]): The id of the specific environment, such as PongNoFrameskip-v4.
- caller (:obj:str): The caller of the environment, including collector or evaluator. Different caller may need different wrappers.
Returns:
- wrapper_list (:obj:List[dict]): The list of wrappers, each element is a config of the concrete wrapper.
Raises:
- NotImplementedError: env_wrapper_name is not in ['mujoco_default', 'atari_default', 'gym_hybrid_default', 'default']
Full Source Code
../ding/envs/env/default_wrapper.py
1from easydict import EasyDict 2from typing import Optional, List 3import copy 4 5eval_episode_return_wrapper = EasyDict(type='eval_episode_return') 6 7 8def get_default_wrappers(env_wrapper_name: str, env_id: Optional[str] = None, caller: str = 'collector') -> List[dict]: 9 """ 10 Overview: 11 Get default wrappers for different environments used in ``DingEnvWrapper``. 12 Arguments: 13 - env_wrapper_name (:obj:`str`): The name of the environment wrapper. 14 - env_id (:obj:`Optional[str]`): The id of the specific environment, such as ``PongNoFrameskip-v4``. 15 - caller (:obj:`str`): The caller of the environment, including ``collector`` or ``evaluator``. Different \ 16 caller may need different wrappers. 17 Returns: 18 - wrapper_list (:obj:`List[dict]`): The list of wrappers, each element is a config of the concrete wrapper. 19 Raises: 20 - NotImplementedError: ``env_wrapper_name`` is not in ``['mujoco_default', 'atari_default', \ 21 'gym_hybrid_default', 'default']`` 22 """ 23 assert caller == 'collector' or 'evaluator', caller 24 if env_wrapper_name == 'mujoco_default': 25 return [ 26 copy.deepcopy(eval_episode_return_wrapper), 27 ] 28 elif env_wrapper_name == 'atari_default': 29 wrapper_list = [] 30 wrapper_list.append(EasyDict(type='noop_reset', kwargs=dict(noop_max=30))) 31 wrapper_list.append(EasyDict(type='max_and_skip', kwargs=dict(skip=4))) 32 wrapper_list.append(EasyDict(type='episodic_life')) 33 if env_id is not None: 34 if 'Pong' in env_id or 'Qbert' in env_id or 'SpaceInvader' in env_id or 'Montezuma' in env_id: 35 wrapper_list.append(EasyDict(type='fire_reset')) 36 wrapper_list.append(EasyDict(type='warp_frame')) 37 wrapper_list.append(EasyDict(type='scaled_float_frame')) 38 if caller == 'collector': 39 wrapper_list.append(EasyDict(type='clip_reward')) 40 wrapper_list.append(EasyDict(type='frame_stack', kwargs=dict(n_frames=4))) 41 wrapper_list.append(copy.deepcopy(eval_episode_return_wrapper)) 42 return wrapper_list 43 elif env_wrapper_name == 'gym_hybrid_default': 44 return [ 45 EasyDict(type='gym_hybrid_dict_action'), 46 copy.deepcopy(eval_episode_return_wrapper), 47 ] 48 elif env_wrapper_name == 'default': 49 return [copy.deepcopy(eval_episode_return_wrapper)] 50 else: 51 raise NotImplementedError("not supported env_wrapper_name: {}".format(env_wrapper_name))