示例#1
0
def EVALUATE(timeout):
    global runthegame
    global pmdata
    global trigger_value
    global trigger_floor
    while True:
        loopstart = timer()
        websocket_updater = timer()
        while runthegame:
            checkup = pmdata
            most = timer()
            data3 = 0
            data4 = 0
            for i in range(0, 4):
                if len(pmdata[i][1][1]) > 2:
                    #if (most-checkup[i][1][1][-1])>0.1:
                    #log('checkup' + str(most-checkup[i][1][1][-1]))

                    iteration_count = len(checkup[i][1][0])

                    measurement_standard_deviation = np.std(checkup[i][1][0])
                    posteri_estimate = np.average(checkup[i][1][0])

                    #print(posteri_estimate)
                    #print(measurement_standard_deviation)
                    #print(posteri_estimate)
                    # The smaller this number, the fewer fluctuations, but can also venture off
                    # course...
                    #process_variance = 1e-3
                    process_variance = 1
                    estimated_measurement_variance = measurement_standard_deviation**2  # 0.05 ** 2
                    kalman_filter = KalmanFilter(
                        process_variance, estimated_measurement_variance,
                        posteri_estimate)
                    posteri_estimate_graph = []

                    for iteration in range(0, iteration_count):
                        kalman_filter.input_latest_noisy_measurement(
                            checkup[i][1][0][iteration])
                        #posteri_estimate_graph.append(kalman_filter.get_latest_estimated_measurement())
                        pmdata[i][1][5].append(
                            kalman_filter.get_latest_estimated_measurement())
                        pmdata[i][1][6].append(timer())
                        if (most - checkup[i][1][6][0] > 0.3):
                            pmdata[i][1][5].pop(0)
                            pmdata[i][1][6].pop(0)
                        #print(pmdata[i][1][5][-1])
                        #print(len(pmdata[i][1][5]))
                    #print(checkup[i][1][0][k] )

                    if len(checkup[i][1][6]) > 4:
                        trigger_estimate = np.average(pmdata[i][1][5])
                        if (trigger_estimate < trigger_value) and (len(
                                checkup[i][1][6]) > 0):
                            min_rssi = checkup[i][1][5][-1]
                            for cic in range(1, len(checkup[i][1][5])):
                                if checkup[i][1][5][-cic] < min_rssi:
                                    min_rssi = checkup[i][1][5][-cic]
                            if min_rssi == checkup[i][1][5][-1]:
                                log("Failed: uccsó a kicsike")
                            if min_rssi == checkup[i][1][5][-2]:
                                log("Failed: uccsóelőtti a kicsike")
                            if checkup[i][1][5].index(min_rssi) == 0:
                                log("Failed: első a kicsike")
                            if min_rssi > trigger_floor:
                                log("Failed: nem érte el a floort")

                            if min_rssi != checkup[i][1][5][
                                    -1] and min_rssi != checkup[i][1][5][
                                        -2] and checkup[i][1][5].index(
                                            min_rssi
                                        ) != 0 and min_rssi < trigger_floor:
                                #print(len(checkup[i][1][1]))

                                min_timestamp = checkup[i][1][6][
                                    checkup[i][1][5].index(min_rssi)]
                                #print(min_timestamp)
                                lowest_key = checkup[i][1][5].index(min_rssi)
                                #print(lowest_key)
                                result = parab(
                                    pmdata[i][1][6][(lowest_key - 2)],
                                    pmdata[i][1][6][(lowest_key)],
                                    pmdata[i][1][6][(lowest_key + 2)],
                                    pmdata[i][1][5][lowest_key - 2],
                                    pmdata[i][1][5][lowest_key],
                                    pmdata[i][1][5][lowest_key + 2])

                                if checkup[i][1][2] != 0:

                                    #print(pmdata[i][1][5])
                                    #print(pmdata[i][1][1])
                                    print("TRIGGERED: [" + str(i) + "]" +
                                          str(result - pmdata[i][1][2]))
                                    if i == 0:
                                        data3 = result - pmdata[i][1][2]
                                    if i == 1:
                                        data4 = result - pmdata[i][1][2]
                                    pmdata[i][1][2] = result
                                    data1 = pmdata[i][1][5][-1]
                                    data2 = pmdata[i][1][0][-1]
                                    message = {}
                                    message['data1'] = round(data1)
                                    message['data2'] = data2
                                    message['data3'] = data3
                                    message['data4'] = data4
                                    message = json.dumps(message)
                                    sendMsgToControl.append(message)
                                    pmdata[i][1][0] = []
                                    pmdata[i][1][1] = []
                                    pmdata[i][1][5] = []
                                    pmdata[i][1][6] = []

                                if checkup[i][1][2] == 0:
                                    oresult = 0
                                    pmdata[i][1][2] = most
                                    print("TRIGGERED ZERO: " + str(oresult))
                                    pmdata[i][1][0] = []
                                    pmdata[i][1][1] = []
                                    pmdata[i][1][5] = []
                                    pmdata[i][1][6] = []
                                    data3 = 'Start'

                    if most - websocket_updater > 0.2:
                        try:
                            data1 = pmdata[i][1][5][-1]
                            data2 = pmdata[i][1][0][-1]
                            message = {}
                            message['data1'] = round(data1)
                            message['data2'] = data2
                            message['data3'] = data3
                            message['data4'] = data4
                            message = json.dumps(message)
                            sendMsgToControl.append(message)
                            websocket_updater = timer()
                        except:
                            pass

                    for i in range(0, 4):
                        if len(checkup[i][1][1]) > 0:
                            if (most - pmdata[i][1][1][0] > 2):

                                pmdata[i][1][0].pop(0)
                                pmdata[i][1][1].pop(0)

                    pmdata[i][1][4] = len(checkup[i][1][0])
            time.sleep(0.01)
        time.sleep(0.1)