예제 #1
0
def fusSensors2(Sensors):
    R_Sensors = np.array([Sensors[0].createR(),Sensors[1].createR(),Sensors[2].createR(),Sensors[3].createR(),Sensors[4].createR()])
    

    def createRfromSensors(R_Sensors):
        R2 = R_Sensors.copy()
        R2 = [la.inv(matrix) for matrix in R2]
        R2 = sum(R2)
        R2 = la.inv(R2)
        return R2
    
    
    R= createRfromSensors(R_Sensors)
    newSensorWithR = Sensor(movingObject)
    newSensorWithR.R = R
    newFilter = Filter(newSensorWithR)
    
    newTrajectory = np.zeros(Trajectory.T.shape)
    for i in range(m):
        for j in range(5):
            newTrajectory[i] += la.inv(R_Sensors[j]) @ Z_Sensors[j].T[i]
        newTrajectory[i] = R @ newTrajectory[i]
    newTrajectory = newTrajectory.T
    
    X_2ndStrategy = np.zeros((6,1))
    allX_2ndStrategy= np.zeros((m,6,1)) # save Xs
    P_2ndStrategy = sensor.createPo(10)
    for i in range(m):
        centerPredicted, pPredicted = newFilter.Predict(X_2ndStrategy,P_2ndStrategy)
        X_2ndStrategy,P_2ndStrategy = newFilter.Filter(centerPredicted,pPredicted,(newTrajectory.T)[i])
        allX_2ndStrategy[i]=X_2ndStrategy
    rx_2ndStrategy_f = list(allX[:,0,:1].T.flat)
    ry_2ndStrategy_f = list(allX[:,1,:2].T.flat)
    plt.scatter(rx_2ndStrategy_f,ry_2ndStrategy_f) # print filtered predictions
예제 #2
0
def fusSensors1(Sensors):
    # does not work
    H_allSensors = np.vstack(Sensors[0].getH(),Sensors[1].getH(),Sensors[2].getH(),Sensors[3].getH(),Sensors[4].getH())
    Z_allSensors = np.vstack(Sensors[0].ProduceNoisedMeasuresCoordinations(),Sensors[1].ProduceNoisedMeasuresCoordinations(),
                             Sensors[2].ProduceNoisedMeasuresCoordinations(),Sensors[3].ProduceNoisedMeasuresCoordinations(),
                             Sensors[4].ProduceNoisedMeasuresCoordinations())
    def createRallSensors():
        R = np.zeros(tuple([5*x for x in Sensors[0].createR().shape]))
        R[0:2,0:2] = Sensors[0].createR()
        R[2:4,2:4] = Sensors[1].createR()
        R[4:6,4:6] =Sensors[2].createR()
        R[6:8,6:8] = Sensors[3].createR()
        R[8:10,8:10] =Sensors[4].createR()
        return R
    
    R_allSensors = createRallSensors()
    newSensorWithRandH = Sensor(movingObject)
    newSensorWithRandH.R = R_allSensors
    newSensorWithRandH.H = H_allSensors
    newFilter = Filter(newSensorWithRandH)