Example #1
0
    def run(self):
        while True:
            if CarCtlWorker._exit_flag:
                break

            try:
                state = self.state_q.get(timeout=CarCtlWorker._queue_timeout)
            except Queue.Empty:
                logging.info("[RUN] state_q is empty.")
                continue

            self.pc_client.send(state.image_str)
            t = Timer()
            response = self.dl_client.send(state.image_str)
            if response is None:  # connect DLServer failed
                logging.info("[RUN] dl_client rpc failed...")
                continue
            t1 = t.elapse()

            if state.sonar <= 20:
                speed = 0
            angle = response.angle

            self.driver_h.drive(angle=angle, speed=5)

            t2 = t.elapse()
            logging.info("[state_q=%d][dl_client_time=%.0fms]"
                         "[drive_time=%.0fms]" %
                         (self.state_q.qsize(), t1, t2))
Example #2
0
def capture():
    server_addr = config.PC_SERVER_HOST + ":" + config.PC_SERVER_PORT

    client = Client(server_addr)
    stream = io.BytesIO()

    with PiCamera() as camera:
        camera.resolution = g_img_size
        camera.framerate = 30
        camera.hflip = True
        camera.vflip = True
        # warm up the camera
        time.sleep(2)

        cnt = 0
        cycle_timer = Timer()
        capture_timer = Timer()

        for foo in camera.capture_continuous(stream,
                                             format='jpeg',
                                             use_video_port=True):
            t1 = capture_timer.elapse()
            tmp_timer = Timer()
            client.send(stream.getvalue(), g_img_size[0], g_img_size[1])
            t2 = tmp_timer.elapse()

            cnt += 1
            if cnt >= 1000:
                break

            stream.seek(0)
            stream.truncate()
            t3 = tmp_timer.elapse()

            t4 = cycle_timer.elapse()
            print "cycle:", t4, "capture:", t1, "send:", t2, "clear_stream:", t3
            capture_timer.elapse()