class DonkeyUnitySimContoller: def __init__(self, conf: Dict[str, Any]): logger.setLevel(conf["log_level"]) self.address = (conf["host"], conf["port"]) self.handler = DonkeyUnitySimHandler(conf=conf) self.client = SimClient(self.address, self.handler) def set_car_config( self, body_style: str, body_rgb: Tuple[int, int, int], car_name: str, font_size: int, ) -> None: self.handler.send_car_config(body_style, body_rgb, car_name, font_size) def set_cam_config(self, **kwargs) -> None: self.handler.send_cam_config(**kwargs) def set_reward_fn(self, reward_fn: Callable) -> None: self.handler.set_reward_fn(reward_fn) def set_episode_over_fn(self, ep_over_fn: Callable) -> None: self.handler.set_episode_over_fn(ep_over_fn) def wait_until_loaded(self) -> None: while not self.handler.loaded: logger.warning("waiting for sim to start..") time.sleep(3.0) def reset(self) -> None: self.handler.reset() def get_sensor_size(self) -> Tuple[int, int, int]: return self.handler.get_sensor_size() def take_action(self, action: np.ndarray): self.handler.take_action(action) def observe(self) -> Tuple[np.ndarray, float, bool, Dict[str, Any]]: return self.handler.observe() def quit(self) -> None: self.client.stop() def exit_scene(self) -> None: self.handler.send_exit_scene() def render(self, mode: str) -> None: pass def is_game_over(self) -> bool: return self.handler.is_game_over() def calc_reward(self, done: bool) -> float: return self.handler.calc_reward(done)
def __init__(self, conf): logger.setLevel(conf["log_level"]) self.address = (conf["host"], conf["port"]) self.handler = DonkeyUnitySimHandler(conf=conf) self.client = SimClient(self.address, self.handler)
class DonkeyUnitySimContoller: def __init__(self, conf): logger.setLevel(conf["log_level"]) self.address = (conf["host"], conf["port"]) self.handler = DonkeyUnitySimHandler(conf=conf) self.client = SimClient(self.address, self.handler) def set_car_config(self, body_style, body_rgb, car_name, font_size): self.handler.send_car_config(body_style, body_rgb, car_name, font_size) def set_random_start_config(self, flag): self.handler.send_random_start_config(flag) def set_cam_config(self, **kwargs): self.handler.send_cam_config(**kwargs) def set_reward_fn(self, reward_fn): self.handler.set_reward_fn(reward_fn) def set_episode_over_fn(self, ep_over_fn): self.handler.set_episode_over_fn(ep_over_fn) def wait_until_loaded(self): while not self.handler.loaded: logger.warning("waiting for sim to start..") time.sleep(3.0) def reset(self): self.handler.reset() def get_sensor_size(self): return self.handler.get_sensor_size() def take_action(self, action): self.handler.take_action(action) def observe(self): return self.handler.observe() def quit(self): self.client.stop() def exit_scene(self): self.handler.send_exit_scene() def render(self, mode): pass def is_game_over(self): return self.handler.is_game_over() def calc_reward(self, done): return self.handler.calc_reward(done)
class DonkeyUnitySimContoller(): def __init__(self, level, host='127.0.0.1', port=9090, max_cte=5.0, loglevel='INFO', cam_resolution=(120, 160, 3)): logger.setLevel(loglevel) self.address = (host, port) self.handler = DonkeyUnitySimHandler(level, max_cte=max_cte, cam_resolution=cam_resolution) self.client = SimClient(self.address, self.handler) def set_car_config(self, body_style, body_rgb, car_name, font_size): self.handler.send_car_config(body_style, body_rgb, car_name, font_size) def set_cam_config(self, **kwargs): self.handler.send_cam_config(**kwargs) def wait_until_loaded(self): while not self.handler.loaded: logger.warning("waiting for sim to start..") time.sleep(3.0) def reset(self): self.handler.reset() def get_sensor_size(self): return self.handler.get_sensor_size() def take_action(self, action): self.handler.take_action(action) def observe(self): return self.handler.observe() def quit(self): self.client.stop() def render(self, mode): pass def is_game_over(self): return self.handler.is_game_over() def calc_reward(self, done): return self.handler.calc_reward(done)
def go(filename, address, constant_throttle=0, num_cars=1, image_cb=None, rand_seed=None): print("loading model", filename) model = load_model(filename) # In this mode, looks like we have to compile it model.compile("sgd", "mse") clients = [] for _ in range(0, num_cars): # setup the clients handler = DonkeySimMsgHandler(model, constant_throttle, image_cb=image_cb, rand_seed=rand_seed) client = SimClient(address, handler) clients.append(client) while clients_connected(clients): try: time.sleep(0.02) for client in clients: client.msg_handler.update() except KeyboardInterrupt: # unless some hits Ctrl+C and then we get this interrupt print('stopping') break
def __init__(self, level, host='127.0.0.1', port=9090, max_cte=1.0, loglevel='INFO', cam_resolution=(120, 160, 3)): logger.setLevel(loglevel) self.address = (host, port) self.handler = DonkeyUnitySimHandler(level, max_cte=max_cte, cam_resolution=cam_resolution) self.client = SimClient(self.address, self.handler)
def go(filename, address, constant_throttle, gif): model = load_model(filename, compile=False) # In this mode, looks like we have to compile it model.compile("sgd", "mse") movie_handler = None if gif != "none": movie_handler = GifCreator(gif) # setup the server handler = DonkeySimMsgHandler(model, constant_throttle, movie_handler) client = SimClient(address, handler) while client.is_connected(): try: time.sleep(1.0) except KeyboardInterrupt: # unless some hits Ctrl+C and then we get this interrupt print("stopping") break