예제 #1
0
    def __init__(self, hostname):
        threading.Thread.__init__(self)
        self.queue = Queue.Queue()
        self.images_undistorted = Images(CAPTURES_PATH)
        self.products = Products()
        self.duplicate_filter = Duplicate_Filter(self.products)
        self.web_interface = WebInterface()
        self.inventory = Inventory()
        self.network = Network(hostname, self.network_message_handler, self.network_status_handler)
        self.gdrive_captures_directory = "0BzpNPyJoi6uoSGlhTnN5RWhXRFU"
        self.light_level = 10
        self.camera_capture_delay = 10
        self.object_detection_wait_period = 300
        self.whole_process_wait_period = 330
        self.soonest_run_time = time.time()
        self.camera_units = Camera_Units(self.network)
        self.response_accumulator = Response_Accumulator()
        self.detected_objects = Detected_Objects(CAPTURES_PATH, PARSED_CAPTURES_PATH, self.products)

        self.door_open = False

        self.door_log = [time.time()]         # hold timestamps of door closures since last scan
        self.scan_log = [time.time() - 1800]  # hold timestamps of scans since unit was rebooted

        self.label_lines = [line.rstrip() for line 
            in tf.gfile.GFile("/home/nvidia/supercooler/Roles/jetson/tf_files/retrained_labels.txt")]

        with tf.gfile.FastGFile("/home/nvidia/supercooler/Roles/jetson/tf_files/retrained_graph.pb", 'rb') as f:
            graph_def = tf.GraphDef()
            graph_def.ParseFromString(f.read())

        with tf.Graph().as_default() as imported_graph:
            tf.import_graph_def(graph_def, name='')
            self.imported_graph = imported_graph

        self.hostnames = [
            "supercoolerA0","supercoolerA1","supercoolerA2","supercoolerA3","supercoolerA4","supercoolerA5","supercoolerA6","supercoolerA7","supercoolerA8","supercoolerA9","supercoolerA10","supercoolerA11",
            "supercoolerB0","supercoolerB1","supercoolerB2","supercoolerB3","supercoolerB4","supercoolerB5","supercoolerB6","supercoolerB7","supercoolerB8","supercoolerB9","supercoolerB10","supercoolerB11",
            "supercoolerC0","supercoolerC1","supercoolerC2","supercoolerC3","supercoolerC4","supercoolerC5","supercoolerC6","supercoolerC7","supercoolerC8","supercoolerC9","supercoolerC10","supercoolerC11",
            "supercoolerD0","supercoolerD1","supercoolerD2","supercoolerD3","supercoolerD4","supercoolerD5","supercoolerD6","supercoolerD7","supercoolerD8","supercoolerD9","supercoolerD10","supercoolerD11",
            "supercooler-hardware"
        ]
        self.client_monitor_server = Thirtybirds_Client_Monitor_Server(self.network, self.hostnames)
        self.client_monitor_server.daemon = True
        self.client_monitor_server.start()

        self.network.thirtybirds.subscribe_to_topic("door_closed")
        self.network.thirtybirds.subscribe_to_topic("door_opened")
        self.network.thirtybirds.subscribe_to_topic("client_monitor_response")
        self.network.thirtybirds.subscribe_to_topic("receive_image_data")
예제 #2
0
 def init_interface(self):
     if config.get_settings()['web_interface']['enabled']:
         import webbrowser
         from web_interface import WebInterface
         self.web_interface = WebInterface(self)
         self.web_interface.start()
         self.logger.debug("Waiting for webserver to start...")
         while not self.web_interface.server:
             time.sleep(0.01)
             if self.stop_flag:
                 return
         self.logger.debug(
             "...server is up and running. Connecting browser...")
         time.sleep(3)
         if config.get_settings(
         )['web_interface']['browser_opening_on_start']:
             webbrowser.open("http://127.0.0.1:8008", 2, True)
         self.logger.debug("...done")
예제 #3
0
    def __init__(self, hostname):
        threading.Thread.__init__(self)
        self.queue = Queue.Queue()
        self.images_undistorted = Images(CAPTURES_PATH)
        self.beers = Beers()
        self.duplicate_filter = Duplicate_Filter()
        self.web_interface = WebInterface()
        self.inventory = Inventory()
        self.network = Network(hostname, self.network_message_handler,
                               self.network_status_handler)
        self.gdrive_captures_directory = "0BzpNPyJoi6uoSGlhTnN5RWhXRFU"
        self.light_level = 10
        self.camera_capture_delay = 10
        self.object_detection_wait_period = 240
        self.whole_process_wait_period = 300
        self.soonest_run_time = time.time()
        self.camera_units = Camera_Units(self.network)
        self.response_accumulator = Response_Accumulator()

        self.hostnames = [
            "supercoolerA0", "supercoolerA1", "supercoolerA2", "supercoolerA3",
            "supercoolerA4", "supercoolerA5", "supercoolerA6", "supercoolerA7",
            "supercoolerA8", "supercoolerA9", "supercoolerA10",
            "supercoolerA11", "supercoolerB0", "supercoolerB1",
            "supercoolerB2", "supercoolerB3", "supercoolerB4", "supercoolerB5",
            "supercoolerB6", "supercoolerB7", "supercoolerB8", "supercoolerB9",
            "supercoolerB10", "supercoolerB11", "supercoolerC0",
            "supercoolerC1", "supercoolerC2", "supercoolerC3", "supercoolerC4",
            "supercoolerC5", "supercoolerC6", "supercoolerC7", "supercoolerC8",
            "supercoolerC9", "supercoolerC10", "supercoolerC11",
            "supercoolerD0", "supercoolerD1", "supercoolerD2", "supercoolerD3",
            "supercoolerD4", "supercoolerD5", "supercoolerD6", "supercoolerD7",
            "supercoolerD8", "supercoolerD9", "supercoolerD10",
            "supercoolerD11", "supercooler-hardware"
        ]
        self.client_monitor_server = Thirtybirds_Client_Monitor_Server(
            self.network, self.hostnames)
        self.client_monitor_server.daemon = True
        self.client_monitor_server.start()

        self.network.thirtybirds.subscribe_to_topic("door_closed")
        self.network.thirtybirds.subscribe_to_topic("door_opened")
        self.network.thirtybirds.subscribe_to_topic("client_monitor_response")
        self.network.thirtybirds.subscribe_to_topic("receive_image_data")
예제 #4
0
def main():
    parser = ArgumentParser()
    parser.add_argument('-d',
                        '--date',
                        help='date for aggregate, YYYYMMDD format is required')
    args = parser.parse_args()

    try:
        dt = datetime.datetime.strptime(args.date, '%Y%m%d')
        date = dt.date()
        today = datetime.date.today()
        if date > today:
            # コマンドライン引数の日付が今日より後日の場合は例外を発生
            raise ValueError('%s is over today' % date)
    except Exception as e:
        # 例外を捕捉したら日付を今日として実行する
        print(e)
        dt = datetime.datetime.now()
        print('Exception was caught. Aggregate as today (%s)' % dt.date())

    print('Make graph of tweets on "%s"' % dt.date())

    login_url = config.get('web', 'login_url')
    # ユーザ/パスワードは環境変数から設定する前提
    login_user = os.environ.get('LOGIN_USER')
    login_password = os.environ.get('LOGIN_PASSWORD')

    # ピシマにログインしてセッションを維持する
    web = WebInterface(login_url, login_user, login_password)

    # つぶやきの数を時間ごとに集計
    pure_tweet_value = make_values_of_tweet(web, dt, '1', 'pure')
    adult_tweet_value = make_values_of_tweet(web, dt, '2', 'adult')

    # グラフを出力
    make_graph(pure_tweet_value, adult_tweet_value, dt.date())
예제 #5
0
from pong import Pong
from web_interface import WebInterface
from flip_disk_display import FlipDiskDisplay

if __name__ == '__main__':
    controller = WebInterface()
    display = FlipDiskDisplay((14, 7))

    game = Pong(controller, display)
    game.start()

    controller.server_run_forever()
예제 #6
0
    def __init__(self, network):
        self.network = network
        self.capture_path = "/home/pi/supercooler/Captures/"
        self.parsed_capture_path = "/home/pi/supercooler/ParsedCaptures/"
        self.web_interface = WebInterface()
        self.lights = Lights()
        self.door = Door(self.door_close_event_handler,
                         self.door_open_event_handler)
        self.door.daemon = True
        self.door.start()
        self.camera_units = Camera_Units(self.network)
        self.camera_capture_delay = 15
        self.classifier = Classifier()
        self.last_closure = time.time()

        hostnames = [
            "supercoolerA0", "supercoolerA1", "supercoolerA2", "supercoolerA3",
            "supercoolerA4", "supercoolerA5", "supercoolerA6", "supercoolerA7",
            "supercoolerA8", "supercoolerA9", "supercoolerA10",
            "supercoolerA11", "supercoolerB0", "supercoolerB1",
            "supercoolerB2", "supercoolerB3", "supercoolerB4", "supercoolerB5",
            "supercoolerB6", "supercoolerB7", "supercoolerB8", "supercoolerB9",
            "supercoolerB10", "supercoolerB11", "supercoolerC0",
            "supercoolerC1", "supercoolerC2", "supercoolerC3", "supercoolerC4",
            "supercoolerC5", "supercoolerC6", "supercoolerC7", "supercoolerC8",
            "supercoolerC9", "supercoolerC10", "supercoolerC11",
            "supercoolerD0", "supercoolerD1", "supercoolerD2", "supercoolerD3",
            "supercoolerD4", "supercoolerD5", "supercoolerD6", "supercoolerD7",
            "supercoolerD8", "supercoolerD9", "supercoolerD10",
            "supercoolerD11"
        ]
        self.client_monitor_server = Thirtybirds_Client_Monitor_Server(
            network, hostnames)
        self.client_monitor_server.daemon = True
        self.client_monitor_server.start()

        # initialize inventory -- this will be recalculated on door close events
        self.inventory = []

        # map watson labels to corresponding ints for web interface
        self.label_lookup = {
            "bottlebecks": 1,
            "bottlebudamerica": 2,
            "bottlebudlight": 3,
            "bottleplatinum": 4,
            "bottlecorona": 5,
            "bottlehoegaarden": 6,
            "bottleultra": 7,
            "bottleshocktopraspberry": 8,
            "bottleshocktoppretzel": 9,
            "bottlestella": 10,
            "canbudamerica": 11,
            "canbudlight": 12,
            "canbusch": 13,
            "canbusch": 14,
            "cannaturallight": 15,
            "canbudamerica": 16,
            "canbudice": 17,
            "canbudlight": 18
        }
        self.classification_accumulator = Classification_Accumulator(
            self.all_records_received)
        self.classification_accumulator.daemon = True
        self.classification_accumulator.start()

        self.camera_specific_offsets = {
            'A': {
                0: (0, 0),
                1: (0, 0),
                2: (0, 0),
                3: (0, 0),
                4: (0, 0),
                5: (0, 0),
                6: (0, 0),
                7: (0, 0),
                8: (0, 0),
                9: (0, 0),
                10: (0, 0),
                11: (0, 0)
            },
            'B': {
                0: (0, 0),
                1: (0, 0),
                2: (0, 0),
                3: (0, 0),
                4: (0, 0),
                5: (0, 0),
                6: (0, 0),
                7: (0, 0),
                8: (0, 0),
                9: (0, 0),
                10: (0, 0),
                11: (0, 0)
            },
            'C': {
                0: (0, 0),
                1: (0, 0),
                2: (0, 0),
                3: (0, 0),
                4: (0, 0),
                5: (0, 0),
                6: (0, 0),
                7: (0, 0),
                8: (0, 0),
                9: (0, 0),
                10: (0, 0),
                11: (0, 0)
            },
            'D': {
                0: (0, 0),
                1: (0, 0),
                2: (0, 0),
                3: (0, 0),
                4: (0, 0),
                5: (0, 0),
                6: (0, 0),
                7: (0, 0),
                8: (0, 0),
                9: (0, 0),
                10: (0, 0),
                11: (0, 0)
            }
        }

        self.camera_resolution = [1280, 720]
        self.product_specific_confidence_thresholds = {
            "bottlebecks": 0.99,
            "bottlebudamerica": 0.99,
            "bottlebudlight": 0.99,
            "bottleplatinum": 0.99,
            "bottlecorona": 0.95,
            "bottlehoegaarden": 0.99,
            "bottleultra": 0.98,
            "bottleshocktopraspberry": 0.99,
            "bottleshocktoppretzel": 0.98,
            "bottlestella": 0.99,
            "canbudamerica": 0.95,
            "canbudlight": 0.99,
            "canbusch": 0.94,
            "cannaturallight": 0.95,
            "canbudamerica": 0.99,
            "canbudice": 0.99,
            "canbudlight": 0.99
        }