[文档]classMiniGridEnv(RawEnvironment):""" The wrapper of minigrid environment. Args: config: the configurations for the environment. """def__init__(self,config):super(MiniGridEnv,self).__init__()rgb_img_partial_obs_wrapper=config.RGBImgPartialObsWrapper,img_obs_wrapper=config.ImgObsWrapperself.env=gym.make(config.env_id,render_mode=config.render_mode)ifrgb_img_partial_obs_wrapper:self.env=RGBImgPartialObsWrapper(self.env)ifimg_obs_wrapper:self.env=ImgObsWrapper(self.env)self.env.reset(seed=config.env_seed)self.env_id=config.env_idself.render_mode=config.render_modeself.image_size=np.prod(self.env.observation_space['image'].shape)# height * width * channelsself.dim_obs=self.image_size+1# directionself.observation_space=Box(low=0,high=255,shape=[self.dim_obs,],dtype=np.uint8)self.action_space=self.env.action_spaceself.max_episode_steps=self.env.env.env.max_steps
[文档]defclose(self):"""Close the environment."""self.env.close()
[文档]defrender(self,*args):"""Return the rendering result"""returnself.env.render()
[文档]defreset(self):"""Reset the environment."""obs_raw,info=self.env.reset()obs=self.flatten_obs(obs_raw)returnobs,info
[文档]defstep(self,actions):"""Execute the actions and get next observations, rewards, and other information."""obs_raw,reward,terminated,truncated,info=self.env.step(actions)observation=self.flatten_obs(obs_raw)reward*=10returnobservation,reward,terminated,truncated,info
[文档]defflatten_obs(self,obs_raw):"""Convert image observation to vectors"""image=obs_raw['image']direction=obs_raw['direction']observations=np.append(image.reshape(-1),direction)returnobservations