Estou fazendo uma posição interna. Já implementei um algoritmo no qual estou lendo o valor RSSI do ponto de acesso e aplicando o filtro kalman para cada valor de leitura e para cada dispositivo móvel separadamente. A precisão foi ruim. Quero aproveitar a vantagem de ler os valores de RSSI para o mesmo dispositivo móvel várias vezes e melhorar a precisão.
Atualmente, o que estou fazendo é ler o valor RSSI e chamar o filtro kalman com valor ex_estimated e ex_predication value. como o código abaixo.
Eu quero melhorar a precisão: qualquer um pode me recomendar métodos ou melhorar para aumentar a precisão
float kalmanfilter_1D(float z_measured, float P_last, float x_est_last)
{
//initialize with a measurement
float Q = 0.022; // noise power desirable
float R = 0.617; // noise power estimated
float K;
float P;
float P_temp;
float x_temp_est;
float x_est;
if (P_last == 0)
P_last = z_measured;
//do a prediction
x_temp_est = x_est_last; // Xt=A*X(t-1)+B*u
// Pt=A*P(t-1)+R
P_temp = P_last + Q;
//calculate the Kalman gain
K = P_temp * (1.0 / (P_temp + R));
printf("filter K=%f\n", K);
//correct
x_est = x_temp_est + K * (z_measured - x_temp_est);
printf("filter x_est=%f\n", x_est);
// update
pred_pr= (1 - K) * P_temp;
est_pr=x_est;
P_last_tmp=pred_pr;
return x_est;
}
Obrigado por todos
Tags wireless-networking