def paramSearch(d,nSensor,nAnchor,radiorange,iteN):
    sumLocSensor = 0
    minNLocSensor = sys.maxint
    maxNLocSensor = 0
    for i in range(iteN):
        [posX,locX,disX,conX,noisyDisX,trueDisX,estPosX,cLevel] = problems.createProblem_random(d,nSensor,nAnchor,sigma,radiorange,i)
        tri.checkLocalizability(nSensor,locX,conX)
        [nLocSensor,preLocSensor] = helper.analyseLocalizability(nSensor,nAnchor,locX)
        sumLocSensor += nLocSensor
        minNLocSensor = min(minNLocSensor,nLocSensor)
        maxNLocSensor = max(maxNLocSensor,nLocSensor)
        print nLocSensor
    aveNLocSensor = sumLocSensor / iteN
    perLocSensor = aveNLocSensor/nSensor
    perMinLocSensor = minNLocSensor / nSensor
    perMaxLocSensor = maxNLocSensor / nSensor
    return [perLocSensor,perMinLocSensor,perMaxLocSensor]
def calcPosition_Trilateration(d,nSensor,nAnchor,sigma,radiorange,iteN,type):
    print "Trilaterationによる位置計算を開始"
    locSensorNs = []
    RMSDs =[]
    for i in range(iteN):
        [posX,locX,disX,conX,noisyDisX,trueDisX,estPosX,cLevel] = problems.createProblem_random(d,nSensor,nAnchor,sigma,radiorange,i+100)
        if type==1:tri.localizeByTrilateration(nSensor,nAnchor,locX,conX,estPosX,noisyDisX,cLevel)
        [nLocSensor,preLocSensor] = helper.analyseLocalizability(nSensor,nAnchor,locX)

        locSensorNs.append(nLocSensor)
        rmsd = helper.calcRMSD(nSensor,locX,posX,estPosX)
        RMSDs.append(rmsd)

        print nLocSensor
        print rmsd
    perLocSensor = sum(locSensorNs)/nSensor/iteN
    perMinLocSensor = min(locSensorNs)/nSensor
    perMaxLocSensor = max(locSensorNs)/nSensor
    [aveRMSD,minRMSD,maxRMSD] = helper.analyseRMSDs(RMSDs)
    RMSDsModified = [elem for elem in RMSDs if elem<1]
    [aveRMSD_modified,a,b]= helper.analyseRMSDs(RMSDsModified)
    return [perLocSensor,perMinLocSensor,perMaxLocSensor,aveRMSD,minRMSD,maxRMSD,aveRMSD_modified]
def Setting(ip, port):
    serverSock = socket(AF_INET, SOCK_STREAM)
    print("소켓시작")
    serverSock.bind((ip, port))
    print("bind")
    serverSock.listen(1)
    print("listen")

    while (1):
        connectionSock, addr = serverSock.accept()

        print(str(addr), '에서 접속이 확인되었습니다.')

        data = connectionSock.recv(1024).decode()
        data_2 = Calculate.in_data(data)
        data_2 = data_2.split(",")
        data_3 = Trilateration.Trilateration(data_2)  # 삼변측량알고리즘 적용
        return data_3  #위치좌표 X,Y반
Example #4
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)
Example #5
0
#Reading floor plan to use as Background image
img = plt.imread(Layout)

Positions = pd.read_csv(Positions, sep=";")
database = pd.read_csv(testset, sep=";")
testset = pd.read_csv(testset, sep=";")
Anchors = pd.read_csv(Anchors, sep=";")
Limits = pd.read_csv(Limits, sep=";")
Pathloss_model = pd.read_csv(Pathloss_model, sep=";")

fig, ax = plt.subplots()

ax.scatter(list(Anchors['x']), list(Anchors['y']))
if (algorithm == 'Trilateration'):
    ax.scatter(list(Positions['x']), list(Positions['y']))
    Positions = Trilateration(Positions, Anchors, Pathloss_model)
    for i in range(len(list(Positions['x']))):
        ax.plot([Positions['x'][i], Positions['x_calc'][i]],
                [Positions['y'][i], Positions['y_calc'][i]],
                color='r')
    ax.scatter(list(Positions['x_calc']), list(Positions['y_calc']))
    print(mean(list(Positions['error'])))
elif (algorithm == 'KNN'):
    ax.scatter(list(testset['x']), list(testset['y']))
    Positions = knn(database, testset, k)
    for i in range(len(list(Positions['x']))):
        ax.plot([Positions['x'][i], Positions['x_calc'][i]],
                [Positions['y'][i], Positions['y_calc'][i]],
                color='r')
    ax.scatter(list(Positions['x_calc']), list(Positions['y_calc']))
    print(mean(list(Positions['error'])))