Ejemplo n.º 1
0
def run_calculations():
    global numSteps
    numSteps += 1
    #signal represents rssi for BLE taken from distances
    signal = HelperFuncs.dist_from_beacons(beacons, personLoc[0], personLoc[1])

    #fingerprinting estimates
    locEstTimeStart = time.time()
    est = Fingerprinting.get_closest_fingerprint(signal, fingerprintMap)
    locEstTimeTot = time.time() - locEstTimeStart
    isFingerprintError = HelperFuncs.is_error_in_estimation(personLoc, est)
    if (isFingerprintError):
        global fingerprintData
        fingerprintData = error_calculations(fingerprintData, personLoc, est,
                                             signal)
        fError = HelperFuncs.total_error(personLoc, est)
    fingerprintData['allFingerprintTimes'].append(locEstTimeTot)

    #trilateration estiamtes
    locEstTimeStart = time.time()
    est = Trilateration.calculate_loc(beacons, signal)
    locEstTimeTot = time.time() - locEstTimeStart
    isTrilaterationError = HelperFuncs.is_error_in_estimation(personLoc, est)
    if (isTrilaterationError):
        global triangulationData
        triangulationData = error_calculations(triangulationData, personLoc,
                                               est, signal)
        tError = HelperFuncs.total_error(personLoc, est)
    triangulationData['allTrilaterationTimes'].append(locEstTimeTot)

    #compare error
    if (isFingerprintError and isTrilaterationError):
        if (tError > fError):
            fillColor = "orange"
        else:
            fillColor = "purple"
        c.create_oval(personLoc[0] - 3,
                      personLoc[1] - 3,
                      personLoc[0] + 3,
                      personLoc[1] + 3,
                      fill=fillColor)