FLAG = {'time_point': 1., 'running': True, 'buffer_avg': 0., 'stream_avg': 0.} # cmara setup cam = Camera() if remote_camera: # connect to body connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM) connection.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) connection.settimeout(100) connection.connect(body_address) # receive stream cam.receive(connection) else: cam.setSize(width, height) cam.capture() image_sample = cam.getFrame() if len(image_sample.shape) == 2: image_depth = 1 else: image_depth = 3 print("Camera image depth is", image_depth) # initialize model data_input = tf.placeholder(tf.float32, shape=( None, height, width, image_depth), name="data_input") net = Encoder([height, width, image_depth]) if randomized_input: randomized = data_input + tf.random_normal([1, 120, 160, 1], stddev=.05)
def startConsole(directory=None, camera_address=None): if directory is None: should_save = False else: should_save = True if not os.path.isdir(directory): os.makedirs(directory) dir_positive = os.path.join(directory, 'positives') if not os.path.isdir(dir_positive): os.makedirs(dir_positive) files_positive = glob.glob(os.path.join(dir_positive, '*.png')) if files_positive: files_positive = [ os.path.split(file)[1] for file in files_positive ] files_positive = [ int(os.path.splitext(file)[0]) for file in files_positive ] id_positive = sorted(files_positive)[-1] + 1 else: id_positive = 0 dir_negative = os.path.join(directory, 'negatives') if not os.path.isdir(dir_negative): os.makedirs(dir_negative) files_negative = glob.glob(os.path.join(dir_negative, '*.png')) if files_negative: files_negative = [ os.path.split(file)[1] for file in files_negative ] files_negative = [ int(os.path.splitext(file)[0]) for file in files_negative ] id_negative = sorted(files_negative)[-1] + 1 else: id_negative = 0 print("Starting positive id from %i and negative id from %i." % (id_positive, id_negative)) cam = Camera() if camera_address is None: send_command = False cam.setSize(160, 120) cam.capture() else: send_command = True connection = socket.socket(socket.AF_INET, socket.SOCK_STREAM) connection.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) connection.settimeout(100) connection.connect(camera_address) # cam.receive(connection) # TODO: refactore camera module pygame.init() fpsClock = pygame.time.Clock() # http://www.pygame.org/docs/ref/display.html#pygame.display.set_mode surface = pygame.display.set_mode((width, height), 0, 0) pygame.display.set_caption('Control Console') pygame.mouse.set_visible(1) background = pygame.Surface(surface.get_size()) background.fill((20, 20, 20)) # test=pygame.image.load("test.png") rect = pygame.Rect(0, 0, width, height) border_time = 0. forward = 0. turn = 0. keep_running = True while keep_running: # surface.blit(background,(0,0)) # frame_received = cam.getFrame() # frame = cv2.resize(frame_received, (width, height)) # frame = cv2.cvtColor(frame, cv2.COLOR_GRAY2RGB) # frame = np.rot90(frame) # frame = pygame.surfarray.make_surface(frame) # surface.blit(frame, (0, 0)) reward = 0 events = pygame.event.get() for event in events: if event.type == QUIT: keep_running = False print('Exiting!!!') if event.type == KEYDOWN: if (event.key == K_q): print('q') if event.key == K_EQUALS: border_time = time() border_color = [0, 255, 0] reward = 1 if should_save: writeFrame( frame_received, os.path.join(dir_positive, '%i' % id_positive)) id_positive += 1 elif event.key == K_MINUS: border_time = time() border_color = [255, 0, 0] reward = -1 if should_save: writeFrame( frame_received, os.path.join(dir_negative, '%i' % id_negative)) id_negative += 1 if event.key == K_ESCAPE: keep_running = False print('Exiting!!!') if time() - border_time < .2: pygame.draw.rect(surface, border_color, rect, border) keys_pressed = pygame.key.get_pressed() if keys_pressed[K_RIGHT]: turn = runningMean(1, turn, agility) elif keys_pressed[K_LEFT]: turn = runningMean(-1, turn, agility) else: turn = runningMean(0, turn, agility) if keys_pressed[K_UP]: forward = runningMean(1, forward, agility) elif keys_pressed[K_DOWN]: forward = runningMean(-1, forward, agility) else: forward = runningMean(0, forward, agility) if abs(turn) < .1: _turn = 0. else: _turn = turn if abs(forward) < .1: _forward = 0. else: _forward = forward message = struct.pack(">cffc", "s", _forward, _turn, "e") # print(struct.unpack(">cffc",message)) if send_command: connection.send(message) # if forward or turn or reward: print("Positives: %i | Negatives: %i" % (id_positive, id_negative)) print("%+i | %+ 1.3f | %+ 1.3f" % (reward, forward, turn)) stdout.write("\033[F\033[K") stdout.write("\033[F\033[K") pygame.display.flip() # or pygame.display.update() fpsClock.tick(FPS) pygame.quit()