Spaces:
Sleeping
Sleeping
| """ | |
| This file contains the base class for environment wrappers that are used | |
| to provide a standardized environment API for training policies and interacting | |
| with metadata present in datasets. | |
| """ | |
| import abc | |
| class EnvType: | |
| """ | |
| Holds environment types - one per environment class. | |
| These act as identifiers for different environments. | |
| """ | |
| ROBOSUITE_TYPE = 1 | |
| GYM_TYPE = 2 | |
| IG_MOMART_TYPE = 3 | |
| REAL_TYPE = 6 | |
| GPRS_REAL_TYPE = 7 | |
| REAL_UR5E_TYPE = 8 | |
| REAL_KINOVA_TYPE = 9 | |
| class EnvBase(abc.ABC): | |
| """A base class method for environments used by this repo.""" | |
| def __init__( | |
| self, | |
| env_name, | |
| render=False, | |
| render_offscreen=False, | |
| use_image_obs=False, | |
| use_depth_obs=False, | |
| postprocess_visual_obs=True, | |
| **kwargs, | |
| ): | |
| """ | |
| Args: | |
| env_name (str): name of environment. Only needs to be provided if making a different | |
| environment from the one in @env_meta. | |
| render (bool): if True, environment supports on-screen rendering | |
| render_offscreen (bool): if True, environment supports off-screen rendering. This | |
| is forced to be True if @env_meta["use_images"] is True. | |
| use_image_obs (bool): if True, environment is expected to render rgb image observations | |
| on every env.step call. Set this to False for efficiency reasons, if image | |
| observations are not required. | |
| use_depth_obs (bool): if True, environment is expected to render depth image observations | |
| on every env.step call. Set this to False for efficiency reasons, if depth | |
| observations are not required. | |
| postprocess_visual_obs (bool): if True, postprocess image observations | |
| to prepare for learning. This should only be False when extracting observations | |
| for saving to a dataset (to save space on RGB images for example). | |
| """ | |
| return | |
| def step(self, action): | |
| """ | |
| Step in the environment with an action. | |
| Args: | |
| action (np.array): action to take | |
| Returns: | |
| observation (dict): new observation dictionary | |
| reward (float): reward for this step | |
| done (bool): whether the task is done | |
| info (dict): extra information | |
| """ | |
| return | |
| def reset(self): | |
| """ | |
| Reset environment. | |
| Returns: | |
| observation (dict): initial observation dictionary. | |
| """ | |
| return | |
| def reset_to(self, state): | |
| """ | |
| Reset to a specific simulator state. | |
| Args: | |
| state (dict): current simulator state | |
| Returns: | |
| observation (dict): observation dictionary after setting the simulator state | |
| """ | |
| return | |
| def render(self, mode="human", height=None, width=None, camera_name=None): | |
| """Render""" | |
| return | |
| def get_observation(self): | |
| """Get environment observation""" | |
| return | |
| def get_state(self): | |
| """Get environment simulator state, compatible with @reset_to""" | |
| return | |
| def get_reward(self): | |
| """ | |
| Get current reward. | |
| """ | |
| return | |
| def get_goal(self): | |
| """ | |
| Get goal observation. Not all environments support this. | |
| """ | |
| return | |
| def set_goal(self, **kwargs): | |
| """ | |
| Set goal observation with external specification. Not all environments support this. | |
| """ | |
| return | |
| def is_done(self): | |
| """ | |
| Check if the task is done (not necessarily successful). | |
| """ | |
| return | |
| def is_success(self): | |
| """ | |
| Check if the task condition(s) is reached. Should return a dictionary | |
| { str: bool } with at least a "task" key for the overall task success, | |
| and additional optional keys corresponding to other task criteria. | |
| """ | |
| return | |
| def action_dimension(self): | |
| """ | |
| Returns dimension of actions (int). | |
| """ | |
| return | |
| def name(self): | |
| """ | |
| Returns name of environment name (str). | |
| """ | |
| return | |
| def type(self): | |
| """ | |
| Returns environment type (int) for this kind of environment. | |
| This helps identify this env class. | |
| """ | |
| return | |
| def version(self): | |
| """ | |
| Returns version of environment (str). | |
| This is not an abstract method, some subclasses do not implement it | |
| """ | |
| return None | |
| def serialize(self): | |
| """ | |
| Save all information needed to re-instantiate this environment in a dictionary. | |
| This is the same as @env_meta - environment metadata stored in hdf5 datasets, | |
| and used in utils/env_utils.py. | |
| """ | |
| return | |
| def create_for_data_processing( | |
| cls, | |
| camera_names, | |
| camera_height, | |
| camera_width, | |
| reward_shaping, | |
| render=None, | |
| render_offscreen=None, | |
| use_image_obs=None, | |
| use_depth_obs=None, | |
| **kwargs, | |
| ): | |
| """ | |
| Create environment for processing datasets, which includes extracting | |
| observations, labeling dense / sparse rewards, and annotating dones in | |
| transitions. | |
| Args: | |
| camera_names ([str]): list of camera names that correspond to image observations | |
| camera_height (int): camera height for all cameras | |
| camera_width (int): camera width for all cameras | |
| reward_shaping (bool): if True, use shaped environment rewards, else use sparse task completion rewards | |
| render (bool or None): optionally override rendering behavior. Defaults to False. | |
| render_offscreen (bool or None): optionally override rendering behavior. The default value is True if | |
| @camera_names is non-empty, False otherwise. | |
| use_image_obs (bool or None): optionally override rendering behavior. The default value is True if | |
| @camera_names is non-empty, False otherwise. | |
| use_depth_obs (bool): if True, use depth observations | |
| Returns: | |
| env (EnvBase instance) | |
| """ | |
| return | |
| def rollout_exceptions(self): | |
| """ | |
| Return tuple of exceptions to except when doing rollouts. This is useful to ensure | |
| that the entire training run doesn't crash because of a bad policy that causes unstable | |
| simulation computations. | |
| """ | |
| return | |
| def base_env(self): | |
| """ | |
| Grabs base simulation environment. | |
| """ | |
| return |