Kalman filter singola misura (Filtering Sensor Data with a Kalman Filter)

Ciao a tutti.
Non so se mi servirà un filtro di kalman su una singola misura per l’imminente mio progetto,
ma intanto l’ho fatto e voglio condividerlo.

Diciamo che con una singola misura è paragonabile alla migliore media galoppante che possiate fare,
oppure ad un filtro passabasso totalmente regolabile,

Ma in ogni caso spero che possa avvicinare al magico filtro di kalman un po’ di persone.
(anche se è la v1.0 e ci ho lavorato qualche ora oggi quindi non infamatemi troppo :-P)

Il filtro di Kalman è lo stimatore ottimo dello stato di un sistema nel senso MMSE se fossero note le coovaranze.
Il fatto è che non lo sono mai.
Soprattutto nelle sensor fusion si hanno da settare dei parametri (appunto le coovarianze) del filtro di kalman a sentimento a seconda dell’applicazione e del filtraggio che vogliamo avere.
Il caso tipico è quello del giroscopio e dell’accelerometro per ottenere rollio e beccheggio.
Integrando la velocità angolare del gyro (l’integrale viene fatto a meno di una costante) si dovrebbe ottenere l’angolo, ma il valore diverge amaramente (a meno di usare un Fog da 4k€ ad asse), quindi non è possibile usare il solo gyroscopio.
Se invece si usasse il solo accelerometro per ottenere con l’arcotangente , dalla misura della componente di accelerazione di gravità, l’angolo di rollio e beccheggio, saremo disturbati dalla dinamica del moto del : robot/quadricottero/ecc a seconda delle accelerazioni angolari date dai cambi di traiettoria che falserebbero la misura.
Il filtro di kalman usato nelle imu usa un predittore dato dalla misura della velocità angolare, quindi è pronto ed azzera la deriva con la misura della componente di gravità più filtrata e quindi lenta per evitare i disturbi del moto, stiamado il bias.

Una sensor fusion geniale e già parecchio diversa dall’approccio classico universitario(il mio) che prevede di avere le matrici del sistema lti, quindi un predittore ecc diverso per ogni applicazione.
(come se riuscisse ad anticipare l’andamento perché conosce il comportamento di ogni sistema)

Diciamo che lascio a voi l’opinione su questo test di libreria secondo me interessante e più intuitivo di altri filtri con le giuste considerazioni che mi aiuterete a fare.
Poi lo potrei anche tradurre…
:wink: .

Un saluto a tutti!
PS: l’ho istanziato con NS in previsione della misura del tempo di volo su un anemometro ad ultrasuoni.

KalmanOne.zip (168 KB)

Lavoro molto interessante!

Per la misura del tempo di volo.. attenzione! Alcuni sensori ultrasuoni low-cost sono talmente balordi che non ci si riesce, prova diversi modelli prima di perdere tempo con cinesate specifiche.

Occhio anche al ringing

Per ora sto bestemmiando sulla sensibilità alla temperatura del mux demux…
ne ho fatti fuori 2 smd prima di capire che dovevo mangiare un panino tra la saldatura di un pin e l’altro…

Posta gli schemi se non è un segreto segretissimo e vediamo..

Certo, ma che dici (dato che sei più esperto…) faccio un nuovo tred oppure continuo qui?
Ps: eureca ci sono riuscito…

Se centra con Kalman continua qua altrimenti nuovo thread

Ciao a tutti grandissimi!
ho attenuto dei discreti risultati in galleria del vento usando arduino ed un metodo che mi sono inventato.
(filtrando con Kalman la misura)
Prima scriveremo un paper sul metodo ecc.. e dopo condividerò con voi i dettagli!

progetto goloso, molto interessante

Bello perchè chiaro e spiegato bene, link incluso interactive-matter

Quale link?

Ma è un anemometro?

alla fine pero questo

x = x + k * (measurement – x);

rimane un iir del primo ordine ricorsivo ( 0<k<1)…

>modraude: essendo il tuo primo post, nel rispetto del regolamento (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti QUI (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con MOLTA attenzione il su citato REGOLAMENTO ... Grazie.

Guglielmo