Étape 6: Filtre de Kalman
Je vais aussi essayer d’expliquer le filtre ici.
Résoudre de manière récursive :
p = p + q ;
k = p / (p + r) ; (gain)
x = x + k * (rssi_data-x) ;
p = (1 – k) * p ;
C’est tout !
Conditions initiales :
x = x_o (meilleure estimation)
p = p_o (erreur estimée)
r = r_o (bruit du capteur)
q = q_o (bruit de processus) valeur comprise entre 0 et 1
Paramètres en gras restent statiques par le biais de la simulation
Alors, Comment choisissons-nous nos paramètres ? Choix du paramètre est difficile et nécessite souvent beaucoup de massage. Pour obtenir une idée de comment nous devons choisir q et r, regardons quelques comportements extrêmes :
- Si q est beaucoup plus grand que r, alors k = 1 et x est juste la valeur mesurée.
- Si r est vraiment petit (très très proche de 0), alors k = 1 et x est juste la valeur mesurée
Cela signifie que q/r ou r/q ne devrait pas être trop grand ou trop petit et r doit être trop petite. Encore une fois, vous aurez pour masser le paramètre pour obtenir les données que vous souhaitez. J’ai sélectionné 3 Kalman parce que c’est un bon équilibre entre temps de latence et filtrage de bruit, alors que Kalman 4 filtre le bruit très bien, mais trop en retard par les données.
En fait, la mathématiques ou la programmation peut faire encore plus simple si vous supposez que le bruit de processus (q) et le bruit du capteur (r) ne changent pas au fil du temps. Si vous êtes convaincus que vous avez les bons paramètres, le Gain de Kalman (k) se stabilisera finalement à une seule valeur. Vous pouvez pré-calculer quoi de cette valeur et simplifier le filtre :
x = x + k * (rssi_data-x) ;
Pour ceux intéressés également filtres de Kalman, utilisés pour les données RSSI s’il vous plaît lire : http://www.cs.tut.fi/sgn/arg/heln/Publications/CSCC2001_Helen.pdf