Per continuare la sperimentazione sui filtri applicati ai sensori ho provato ad usare l'
Extended Kalman Filter, un metodo matematico che permette la fusione di dati GPS e derivanti da IMU (per una descrizione abbastanza semplice del metodo si puo' andare
qui,
Visto che la matematica non e' banale ho usato un progetto gia' fatto basato su Android. A
questo link si trova la descrizione che usa la fusione di velocita' e dati geografici per ridurre le fluttuazioni del segnale GPS. Una libreria EKF per Arduino si trova a
questo link basato su
questo codice Matlab (l'esempio che usa EKF per GPS si trova nella sottodirectory /extras/c/ con dati di pseudorange, non direttamente lat/lon). Per una breve trattazione matematica invece
qui
Un altro sito con una trattazione matematica semplice si
trova qui
E' disponibile una app per Android a questo
indirizzo GitHub
La prova e' stata effettuata mantenendo il sensore fermo e leggendo ad intervalli di tempo la distanza cumulata (ovvero la somma degli errori dei falsi movimenti registrati dal sensore).
Si evidenzia che il tempo di campionamento del GPS e del'accelerometro sono molto differenti e gli aggiornamento del filtro sono scalati sul sensore piu' lento
|
Distanza cumulata in metri |
Come si vede il filtro impiega circa 100 secondi per stabilizzzarsi
Eliminando i primi due punti si ha una deriva media di 0.0015 m/sec, un dato incredibile considerando che con il solo GPS per ogni secondo la distanza e' di oltre 1 m
La scheda PixHawk contiene all'interno un algoritmo di fusione dei sensori per GPS ed IMU basato su EKF