def __init__(self, tuning_parameters): EnvironmentWrapper.__init__(self, tuning_parameters) # load the emulator with the required level self.level = DoomLevel().get(self.tp.env.level) self.scenarios_dir = path.join(environ.get('VIZDOOM_ROOT'), 'scenarios') self.game = vizdoom.DoomGame() self.game.load_config(path.join(self.scenarios_dir, self.level)) self.game.set_window_visible(False) self.game.add_game_args("+vid_forcesurface 1") self.wait_for_explicit_human_action = True if self.human_control: self.game.set_screen_resolution( vizdoom.ScreenResolution.RES_640X480) self.renderer.create_screen(640, 480) elif self.is_rendered: self.game.set_screen_resolution( vizdoom.ScreenResolution.RES_320X240) self.renderer.create_screen(320, 240) else: # lower resolution since we actually take only 76x60 and we don't need to render self.game.set_screen_resolution( vizdoom.ScreenResolution.RES_160X120) self.game.set_render_hud(False) self.game.set_render_crosshair(False) self.game.set_render_decals(False) self.game.set_render_particles(False) self.game.init() # action space self.action_space_abs_range = 0 self.actions = {} self.action_space_size = self.game.get_available_buttons_size() + 1 self.action_vector_size = self.action_space_size - 1 self.actions[0] = [0] * self.action_vector_size for action_idx in range(self.action_vector_size): self.actions[action_idx + 1] = [0] * self.action_vector_size self.actions[action_idx + 1][action_idx] = 1 self.actions_description = ['NO-OP'] self.actions_description += [ str(action).split(".")[1] for action in self.game.get_available_buttons() ] for idx, action in enumerate(self.actions_description): if action in key_map.keys(): self.key_to_action[(key_map[action], )] = idx # measurement self.measurements_size = self.game.get_state().game_variables.shape self.width = self.game.get_screen_width() self.height = self.game.get_screen_height() if self.tp.seed is not None: self.game.set_seed(self.tp.seed) self.reset()
def __init__(self, tuning_parameters): EnvironmentWrapper.__init__(self, tuning_parameters) # env parameters if ':' in self.env_id: self.env = gym.envs.registration.load(self.env_id)() else: self.env = gym.make(self.env_id) if self.seed is not None: self.env.seed(self.seed) # self.env_spec = gym.spec(self.env_id) self.env.frameskip = self.frame_skip self.discrete_controls = type(self.env.action_space) != gym.spaces.box.Box self.observation = self.reset(True)['observation'] # render if self.is_rendered: image = self.get_rendered_image() scale = 1 if self.human_control: scale = 2 self.renderer.create_screen(image.shape[1]*scale, image.shape[0]*scale) self.is_state_type_image = len(self.observation.shape) > 1 if self.is_state_type_image: self.width = self.observation.shape[1] self.height = self.observation.shape[0] else: self.width = self.observation.shape[0] # action space self.actions_description = {} if hasattr(self.env.unwrapped, 'get_action_meanings'): self.actions_description = self.env.unwrapped.get_action_meanings() if self.discrete_controls: self.action_space_size = self.env.action_space.n self.action_space_abs_range = 0 else: self.action_space_size = self.env.action_space.shape[0] self.action_space_high = self.env.action_space.high self.action_space_low = self.env.action_space.low self.action_space_abs_range = np.maximum(np.abs(self.action_space_low), np.abs(self.action_space_high)) self.actions = {i: i for i in range(self.action_space_size)} self.key_to_action = {} if hasattr(self.env.unwrapped, 'get_keys_to_action'): self.key_to_action = self.env.unwrapped.get_keys_to_action() # measurements if self.env.spec is not None: self.timestep_limit = self.env.spec.timestep_limit else: self.timestep_limit = None self.measurements_size = len(self.step(0)['info'].keys())
def __init__(self, tuning_parameters): EnvironmentWrapper.__init__(self, tuning_parameters) ports = (5200, 15200) # env parameters self.env = gym.make(self.env_id) self.env_id = self.env_id if self.seed is not None: self.env.seed(self.seed) self.env_spec = gym.spec(self.env_id) self.none_counter = 0 self.discrete_controls = type( self.env.action_space) != gym.spaces.box.Box # pybullet requires rendering before resetting the environment, but other gym environments (Pendulum) will crash try: if self.is_rendered: self.render() except: pass o = self.reset(True)['observation'] # render if self.is_rendered: self.render() # self.env.render() self.is_state_type_image = len(o.shape) > 1 if self.is_state_type_image: self.width = o.shape[1] self.height = o.shape[0] else: self.width = o.shape[0] self.actions_description = {} if self.discrete_controls: self.action_space_size = self.env.action_space.n self.action_space_abs_range = 0 else: self.action_space_size = self.env.action_space.shape[0] self.action_space_high = self.env.action_space.high self.action_space_low = self.env.action_space.low self.action_space_abs_range = np.maximum( np.abs(self.action_space_low), np.abs(self.action_space_high)) self.actions = {i: i for i in range(self.action_space_size)} self.timestep_limit = self.env.spec.timestep_limit self.current_ale_lives = 0 self.measurements_size = len(self.step(0)['info'].keys()) # env intialization self.observation = o self.reward = 0 self.done = False self.last_action = self.actions[0]
def __init__(self, tuning_parameters): EnvironmentWrapper.__init__(self, tuning_parameters) # load the emulator with the required level self.level = DoomLevel().get(self.tp.env.level) self.scenarios_dir = path.join(environ.get('VIZDOOM_ROOT'), 'scenarios') self.game = vizdoom.DoomGame() self.game.load_config(path.join(self.scenarios_dir, self.level)) self.game.set_window_visible(self.is_rendered) self.game.add_game_args("+vid_forcesurface 1") if self.is_rendered: self.game.set_screen_resolution( vizdoom.ScreenResolution.RES_320X240) else: # lower resolution since we actually take only 76x60 and we don't need to render self.game.set_screen_resolution( vizdoom.ScreenResolution.RES_160X120) self.game.set_render_hud(False) self.game.set_render_crosshair(False) self.game.set_render_decals(False) self.game.set_render_particles(False) self.game.init() self.action_space_abs_range = 0 self.actions = {} self.action_space_size = self.game.get_available_buttons_size() for action_idx in range(self.action_space_size): self.actions[action_idx] = [0] * self.action_space_size self.actions[action_idx][action_idx] = 1 self.actions_description = [ str(action) for action in self.game.get_available_buttons() ] self.measurements_size = self.game.get_state().game_variables.shape self.width = self.game.get_screen_width() self.height = self.game.get_screen_height() if self.tp.seed is not None: self.game.set_seed(self.tp.seed) self.reset()
def __init__(self, tuning_parameters): EnvironmentWrapper.__init__(self, tuning_parameters) # env parameters if ':' in self.env_id: self.env = sensenet.envs.registration.load(self.env_id)() else: self.env = sensenet.make(self.env_id) if self.seed is not None: self.env.seed(self.seed) # self.env_spec = gym.spec(self.env_id) self.env.frameskip = self.frame_skip self.discrete_controls = type( self.env.action_space) != sensenet.spaces.box.Box self.state = self.reset(True)['state'] # render if self.is_rendered: image = self.get_rendered_image() scale = 1 if self.human_control: scale = 2 self.renderer.create_screen(image.shape[1] * scale, image.shape[0] * scale) #if isinstance(self.env.observation_space, sensenet.spaces.Dict): # if 'observation' not in self.env.observation_space: # raise ValueError(( # 'The SenseNet environment provided {env_id} does not contain ' # '"observation" in its observation space. For now this is ' # 'required. The environment does include the following ' # 'keys in its observation space: {keys}' # ).format( # env_id=self.env_id, # keys=self.env.observation_space.keys(), # )) # TODO: collect and store this as observation space instead self.is_state_type_image = len(self.state['observation'].shape) > 1 if self.is_state_type_image: self.width = self.state['observation'].shape[1] self.height = self.state['observation'].shape[0] else: self.width = self.state['observation'].shape[0] # action space self.actions_description = {} if hasattr(self.env.unwrapped, 'get_action_meanings'): self.actions_description = self.env.unwrapped.get_action_meanings() if self.discrete_controls: self.action_space_size = self.env.action_space.n self.action_space_abs_range = 0 else: self.action_space_size = self.env.action_space.shape[0] self.action_space_high = self.env.action_space.high self.action_space_low = self.env.action_space.low self.action_space_abs_range = np.maximum( np.abs(self.action_space_low), np.abs(self.action_space_high)) self.actions = {i: i for i in range(self.action_space_size)} self.key_to_action = {} if hasattr(self.env.unwrapped, 'get_keys_to_action'): self.key_to_action = self.env.unwrapped.get_keys_to_action() # measurements if self.env.spec is not None: self.timestep_limit = self.env.spec.timestep_limit or self.env.timestep_limit else: self.timestep_limit = None
def __init__(self, tuning_parameters): EnvironmentWrapper.__init__(self, tuning_parameters) self.tp = tuning_parameters # server configuration self.server_height = self.tp.env.server_height self.server_width = self.tp.env.server_width self.port = get_open_port() self.host = 'localhost' self.map = CarlaLevel().get(self.tp.env.level) # client configuration self.verbose = self.tp.env.verbose self.depth = self.tp.env.depth self.stereo = self.tp.env.stereo self.semantic_segmentation = self.tp.env.semantic_segmentation self.height = self.server_height * (1 + int(self.depth) + int(self.semantic_segmentation)) self.width = self.server_width * (1 + int(self.stereo)) self.size = (self.width, self.height) self.config = self.tp.env.config if self.config: # load settings from file with open(self.config, 'r') as fp: self.settings = fp.read() else: # hard coded settings self.settings = CarlaSettings() self.settings.set(SynchronousMode=True, SendNonPlayerAgentsInfo=False, NumberOfVehicles=15, NumberOfPedestrians=30, WeatherId=1) self.settings.randomize_seeds() # add cameras camera = Camera('CameraRGB') camera.set_image_size(self.width, self.height) camera.set_position(200, 0, 140) camera.set_rotation(0, 0, 0) self.settings.add_sensor(camera) # open the server self.server = self._open_server() logging.disable(40) # open the client self.game = CarlaClient(self.host, self.port, timeout=99999999) self.game.connect() scene = self.game.load_settings(self.settings) # get available start positions positions = scene.player_start_spots self.num_pos = len(positions) self.iterator_start_positions = 0 # action space self.discrete_controls = False self.action_space_size = 2 self.action_space_high = [1, 1] self.action_space_low = [-1, -1] self.action_space_abs_range = np.maximum( np.abs(self.action_space_low), np.abs(self.action_space_high)) self.steering_strength = 0.5 self.gas_strength = 1.0 self.brake_strength = 0.5 self.actions = { 0: [0., 0.], 1: [0., -self.steering_strength], 2: [0., self.steering_strength], 3: [self.gas_strength, 0.], 4: [-self.brake_strength, 0], 5: [self.gas_strength, -self.steering_strength], 6: [self.gas_strength, self.steering_strength], 7: [self.brake_strength, -self.steering_strength], 8: [self.brake_strength, self.steering_strength] } self.actions_description = [ 'NO-OP', 'TURN_LEFT', 'TURN_RIGHT', 'GAS', 'BRAKE', 'GAS_AND_TURN_LEFT', 'GAS_AND_TURN_RIGHT', 'BRAKE_AND_TURN_LEFT', 'BRAKE_AND_TURN_RIGHT' ] for idx, action in enumerate(self.actions_description): for key in key_map.keys(): if action == key: self.key_to_action[key_map[key]] = idx self.num_speedup_steps = 30 # measurements self.measurements_size = (1, ) self.autopilot = None # env initialization self.reset(True) # render if self.is_rendered: image = self.get_rendered_image() self.renderer.create_screen(image.shape[1], image.shape[0])