def SSL_TDOA_LN(micPosList, tdoa1, tdoa2, c_speed):
    # Get Microphone Points
    micAP = micPosList[0]
    micBP = micPosList[1]
    micCP = micPosList[2]
    micDP = micPosList[3]
    average = (micAP + micBP + micCP + micDP) / 4

    # Calculate way_tdoa1 and way_tdoa2
    ds1 = tdoa1 * c_speed
    ds2 = tdoa2 * c_speed

    # Calculate Linear IntersectionPoints
    m1T = KarstenDOA_calculateSteep_linear_simple(distance(micAP, micBP), ds1)
    m2T = KarstenDOA_calculateSteep_linear_simple(distance(micCP, micDP), ds2)
    pointList, m1_a, m1_b, m2_a, m2_b, b1_a, b1_b, b2_a, b2_b = getMicrophonePair_DOA_Intersection_linear(
        micAP, micBP, micCP, micDP, m1T, m2T)

    # Choose Plausible One = the one that is farest away from microphones
    pointListC = list()
    for p in pointList:
        if (p[1] > 0):
            pointListC.append(p)
    if (distance(pointListC[0], average) < distance(pointListC[1], average)):
        return pointListC[1]
    else:
        return pointListC[0]
Example #2
0
def SSL_TDOA_LIN(tdoa1, tdoa2, micA, micB, micC, micD):        
    std1 = tdoa1*343.2
    std2 = tdoa2*343.2
    steep1 = KarstenDOA_calculateSteep_linear_simple(distance(micA, micB), std1)
    steep2 = KarstenDOA_calculateSteep_linear_simple(distance(micC, micD), std2)
    solutions, m1_a, m1_b, m2_a, m2_b, b1_a, b1_b, b2_a, b2_b = getMicrophonePair_DOA_Intersection_linear(micA, micB, micC, micD, steep1, steep2)
    estimation = plausibleFilter_TDOA(solutions)
    return estimation
def SSL_TDOA_LIN(s_tdoaMAT, micPosList, indA, indB, indC, indD):
    std1 = s_tdoaMAT[indB][indA]
    std2 = s_tdoaMAT[indD][indC]
    rstd1 = getRealDeltaS(source_pos, micPosList[indA], micPosList[indB])
    rstd2 = getRealDeltaS(source_pos, micPosList[indC], micPosList[indD])
    print("STDOA 1: ", std1, rstd1)
    print("STDOA 2: ", std2, rstd2)
    steep1 = KarstenDOA_calculateSteep_linear_simple(
        distance(micList[indA], micList[indB]), s_tdoaMAT[indB][indA])
    steep2 = KarstenDOA_calculateSteep_linear_simple(
        distance(micList[indC], micList[indD]), s_tdoaMAT[indD][indC])
    solutions, m1_a, m1_b, m2_a, m2_b, b1_a, b1_b, b2_a, b2_b = getMicrophonePair_DOA_Intersection_linear(
        micList[indA], micList[indB], micList[indC], micList[indD], steep1,
        steep2)
    estimation = plausibleFilter_TDOA(solutions)
    return estimation
Example #4
0
# Calculate TDOA
arr = array_parameters.ArrayParameters(config["microphone_positions"])
tdoa = basic_tdoa.BasicTDOA(loaded, 0, 0.0, arr)
tdoaMAT  = tdoa.tdoa_gcc_phat(0.0)[1][0]
delta_n1 = tdoaMAT[1][0]
delta_n2 = tdoaMAT[3][2]
delta_t1 = delta_n1*meta["sampling_spacing"]
delta_t2 = delta_n2*meta["sampling_spacing"]
delta_s1 = delta_t1*343.2
delta_s2 = delta_t2*343.2

# TDOA LINEAR VERFAHREN
steep1 = KarstenDOA_calculateSteep_linear_simple(distance(micA_pos, micB_pos), delta_s1)
steep2 = KarstenDOA_calculateSteep_linear_simple(distance(micC_pos, micD_pos), delta_s2)
solutions, m1_a, m1_b, m2_a, m2_b, b1_a, b1_b, b2_a, b2_b = getMicrophonePair_DOA_Intersection_linear(micA_pos, micB_pos, micC_pos, micD_pos, steep1, steep2)
estimationLIN = plausibleFilter_TDOA(solutions)

curveA = get_tCurve(micA_pos, micB_pos, delta_s1)
curveB = get_tCurve(micC_pos, micD_pos, delta_s2)
estimationNOL = optimizeIntersectionPoint_nonLinear_numeric(estimationLIN, curveA, curveB)
    
# Kurven zur Darstellung
X_NOL_CURVE1, Y_NOL_CURVE1 = KarstenDOA_calculateCurve_nonlinear(micA_pos, micB_pos, delta_s1, res=0.01, rang=10)
X_LIN_CURVE1, Y_LIN_CURVE1 = KarstenDOA_calculateCurve_linear(micA_pos, micB_pos, delta_s1, res=0.01, rang=10)
X_NOL_CURVE2, Y_NOL_CURVE2 = KarstenDOA_calculateCurve_nonlinear(micC_pos, micD_pos, delta_s2, res=0.01, rang=10)
X_LIN_CURVE2, Y_LIN_CURVE2 = KarstenDOA_calculateCurve_linear(micC_pos, micD_pos, delta_s2, res=0.01, rang=10)

# Plot Data
import matplotlib.pyplot as plt
plt.xlim(-10,10)