PDA

Visualizza la versione completa : Filtro di kalman per imbranati


Neptune
23-05-2013, 23:12
Duuunqueee, in un esame di modelli probabilistici per le decisioni è uscito fuori questo dannato filtro di kalman (anche nella sua versione estesa per trattare valori non lineari linearizzandoli).

Il punto è che a spanne ho capito cosa fa, ma non ho capito minimamente su cosa si basano i calcoli che stanno dietro. Mi servirebbe un how-to moooolto ma molto semplice che motivi tali calcoli per sommi capi (senza scendere eccessivamente nei dettagli).

La questione è che dagli appunti della lezione non sono riuscito a capirlo e su internet sto trovando materiale ancora più complesso da capire. Se qualcuno ha sottomano qualche articolo semplice da consigliare benvenga :fagiano:

URANIO
24-05-2013, 01:07
Fico, per che esame è?
ogni volta che leggo queste cose mi rammarico di non aver continuato dopo la triennale, ma so che ci avrei messo molto.

Io cmq posso aiutarti con una veloce ricerca su google
Forse l'hai già visto, ma sembra spiegarlo abbastanza terraterra
http://www.unipa.it/~laura.giarre/kalman_app.pdf
(anche se poi mi perdo quando spiega il filtro vero e proprio)

kuarl
25-05-2013, 12:14
provo io.

Il filtro di kalman è un oggetto usato per prevedere o meglio ancora, stimare lo stato di un sistema. L'ho sempre fatto in teoria dei sistemi quindi te lo spiego così :fagiano:

Avendo quindi tu un qualsiasi sistema F caratterizzato dalla sua bella funzione di trasferimento o meglio ancora, sistema di equazioni differenziali in variabili di stato, il filtro, conoscendo queste equazioni e mandandogli in pasto l'ingresso e l'uscita del sistema reale, è in grado di produrre una stima delle sue variabili di stato.

Ha numerose applicazioni, che vanno dai controlli automatici, al calcolo della posizione di un ricevitore gps, alle traiettorie di veivoli senza pilota, al controllo d'assetto di un satellite, e al sistema di allunaggio del LEM :zizi:


Si compone di due stadi: predizione e correzione. Nello stadio di predizione, conoscendo lo stato precedente, e l'input e l'output corrente, si calcola la funzione di trasferimento nel punto per determinare il valore aggiornato delle variabili di stato. Lo stadio di correzione fondamentalmente corregge questo valore facendo la differenza delle uscite fra il valore calcolato dallo stadio di predizione e il valore vero appena misurato. Lo stadio di correzione serve per tenere conto degli inevitabili errori o disturbi presenti sul sistema.

Il filtro di kalman esteso fa la stessa cosa, ma essendo il sistema non lineare, lo linearizza calcolando lo jacobiano nel punto. Computazionalmente è molto intenso e presenta alcuni problemi. Oggi gli si preferisce il filtro di kalman unscented, che non linearizza il sistema, ma ragiona sulle distribuzioni probabilistiche dell'errore, linearizzando quelle.


Il filtro di kalman ha bisogno che il sistema sia totalmente osservabile (teoria dei sistemi per la definizione di osservabilità :bhò: ) e converge sempre, qualunque sia il punto di partenza (certo se parte lontano ci mette di più a convergere). Per convergenza intendo il fatto che lo stato stimato dal filtro, per t (tempo) che tende ad infinito la stima tende al valore vero.

I filtri non lineari (esteso ed unscented) non ti danno garanzie sulla convergenza e quindi è fondamentale scegliere lo stato iniziale con cura.


In genere si usano questi filtri con sistemi ad alta dinamica, ovvero con sistemi il cui stato cambia rapidamente. Come può essere ad esempio la posizione e la traiettoria di un aereo o un ricevitore gps montato su un automobile.



Spero sia chiaro :stordita:

Neptune
25-05-2013, 12:43
Originariamente inviato da kuarl
provo io.

Il filtro di kalman è un oggetto usato per prevedere o meglio ancora, stimare lo stato di un sistema. L'ho sempre fatto in teoria dei sistemi quindi te lo spiego così :fagiano:

Avendo quindi tu un qualsiasi sistema F caratterizzato dalla sua bella funzione di trasferimento o meglio ancora, sistema di equazioni differenziali in variabili di stato, il filtro, conoscendo queste equazioni e mandandogli in pasto l'ingresso e l'uscita del sistema reale, è in grado di produrre una stima delle sue variabili di stato.

Ha numerose applicazioni, che vanno dai controlli automatici, al calcolo della posizione di un ricevitore gps, alle traiettorie di veivoli senza pilota, al controllo d'assetto di un satellite, e al sistema di allunaggio del LEM :zizi:


Si compone di due stadi: predizione e correzione. Nello stadio di predizione, conoscendo lo stato precedente, e l'input e l'output corrente, si calcola la funzione di trasferimento nel punto per determinare il valore aggiornato delle variabili di stato. Lo stadio di correzione fondamentalmente corregge questo valore facendo la differenza delle uscite fra il valore calcolato dallo stadio di predizione e il valore vero appena misurato. Lo stadio di correzione serve per tenere conto degli inevitabili errori o disturbi presenti sul sistema.

Il filtro di kalman esteso fa la stessa cosa, ma essendo il sistema non lineare, lo linearizza calcolando lo jacobiano nel punto. Computazionalmente è molto intenso e presenta alcuni problemi. Oggi gli si preferisce il filtro di kalman unscented, che non linearizza il sistema, ma ragiona sulle distribuzioni probabilistiche dell'errore, linearizzando quelle.


Il filtro di kalman ha bisogno che il sistema sia totalmente osservabile (teoria dei sistemi per la definizione di osservabilità :bhò: ) e converge sempre, qualunque sia il punto di partenza (certo se parte lontano ci mette di più a convergere). Per convergenza intendo il fatto che lo stato stimato dal filtro, per t (tempo) che tende ad infinito la stima tende al valore vero.

I filtri non lineari (esteso ed unscented) non ti danno garanzie sulla convergenza e quindi è fondamentale scegliere lo stato iniziale con cura.


In genere si usano questi filtri con sistemi ad alta dinamica, ovvero con sistemi il cui stato cambia rapidamente. Come può essere ad esempio la posizione e la traiettoria di un aereo o un ricevitore gps montato su un automobile.



Spero sia chiaro :stordita:

Si questa cosa l'avevo capita, a parte che essendo proprio terra terra su questa cosa non ho ben capito la differenza tra sistema lineare e non lineare.

Quello che mi sfugge e cosa sono "i vari numeretti" nella formula (quella fatta con le matrici).

Ad esempio su queste slide ce l'algoritmo delle due versioni del filtro (esteso e non):
https://dl.dropboxusercontent.com/u/8098999/Lezione_-_Kalman%281%29.pdf

rispettivamente a pagina 15 (kf algoritmo) e pagina 20 (ekf algoritmo).
Tutto quello che ho capito è che in entrambi gli algoritmi le prime due righe sono la previsione del nuovo stato basandosi solo su quelli precedenti, la terza riga calcola K che è una misura di peso ma non ho capito per cosa, e le ultime 2 righe invece fanno la correzione della predizione sapendo le misure.

Ma cosa significhino i numeretti (meglio dire lettere va :D) dentro proprio non l'ho capito e mi servirebbe qualche indicazione in più.

Come anche ho capito che parliamo di media e varianza perchè stiamo utilizzando una distribuzione normale, ma per fare cosa? Cioè stiamo dicendo che la funzione di misura e quella di transizione sono due distribuzioni normali? :fagiano:

Neptune
25-05-2013, 12:44
Originariamente inviato da URANIO
Fico, per che esame è?
ogni volta che leggo queste cose mi rammarico di non aver continuato dopo la triennale, ma so che ci avrei messo molto.

Io cmq posso aiutarti con una veloce ricerca su google
Forse l'hai già visto, ma sembra spiegarlo abbastanza terraterra
http://www.unipa.it/~laura.giarre/kalman_app.pdf
(anche se poi mi perdo quando spiega il filtro vero e proprio)

Ti ringrazio per l'aiuto, quelle slide le avevo trovate anch'io ma spiegando le formule in maniera diversa mi stavano creando solo una gran confusione. Il problema delle cose matematiche è anche quello, che se iniziano ad usare simboli differenti, o modi differenti di spiegarle, sembra quasi che parlino di due cose diverse :fagiano:

kuarl
25-05-2013, 13:42
una cosa importante che non ho detto riguardo al filtro è come si progetta :stordita:

Nella progettazione del filtro oltre alle equazioni in variabili di stato ti serve fare anche un analisi dell'errore che insiste sul sistema. L'errore si considera bianco (additive white gaussian noise), che significa che si modella come una variabile gaussiana. Devi quindi fare un analisi statistica di questi errori per determinarne i parametri.

Slide 15:
si lavora a tempo discreto, quindi invece di equazioni differenziali parliamo di equazioni alle differenze. In ogni caso nella 16 si capisce meglio.

Normalmente un sistema in variabili di stato lo si modella con questa notazione:
dx = Ax + Bu
y = Cx + Du

con x stato, u ingresso e y uscita. A, B, C e D sono matrici in quanto il sistema è lineare e determinano il comportamento del sistema. Non so' se hai nozioni di teoria dei sistemi in variabili di stato :fagiano:

Nella slide 16, se ho ben capito:
[list=a]
mu è la variabile da stimare, quindi non nota (la x)
Z è l'uscita (la y di sopra)
R è la covarianza del rumore sullo stato (serve per determinare la forma della campana di una gaussiana)
Q è la covarianza del rumore sull'uscita
K è il guadagno di kalman, la formula viene data e la sua dimostrazione è complicata. Devi solo sapere che cambia ad ogni istante e serve per pesare l'azione correttiva dello stadio di correzione.
[/list=a]

nel filtro esteso invece di A, B, C e D hai i rispettivi jacobiani.

In ogni caso queste slide fanno cagare, quelle di uranio sono meglio :fagiano:

Neptune
25-05-2013, 18:24
Originariamente inviato da kuarl
una cosa importante che non ho detto riguardo al filtro è come si progetta :stordita:

Nella progettazione del filtro oltre alle equazioni in variabili di stato ti serve fare anche un analisi dell'errore che insiste sul sistema. L'errore si considera bianco (additive white gaussian noise), che significa che si modella come una variabile gaussiana. Devi quindi fare un analisi statistica di questi errori per determinarne i parametri.

Slide 15:
si lavora a tempo discreto, quindi invece di equazioni differenziali parliamo di equazioni alle differenze. In ogni caso nella 16 si capisce meglio.

Normalmente un sistema in variabili di stato lo si modella con questa notazione:
dx = Ax + Bu
y = Cx + Du

con x stato, u ingresso e y uscita. A, B, C e D sono matrici in quanto il sistema è lineare e determinano il comportamento del sistema. Non so' se hai nozioni di teoria dei sistemi in variabili di stato :fagiano:

Nella slide 16, se ho ben capito:
[list=a]
mu è la variabile da stimare, quindi non nota (la x)
Z è l'uscita (la y di sopra)
R è la covarianza del rumore sullo stato (serve per determinare la forma della campana di una gaussiana)
Q è la covarianza del rumore sull'uscita
K è il guadagno di kalman, la formula viene data e la sua dimostrazione è complicata. Devi solo sapere che cambia ad ogni istante e serve per pesare l'azione correttiva dello stadio di correzione.
[/list=a]

nel filtro esteso invece di A, B, C e D hai i rispettivi jacobiani.

In ogni caso queste slide fanno cagare, quelle di uranio sono meglio :fagiano:

I corrispettivi jacobiani di preciso che sono?

Quindi è l'errore che viene rappresentato tramite la distribuzione normale?
Quindi abbiamo l'equazione di tansizioen di stato, l'equazione di misura ed in più una distribuzione normale che ci dice come l'errore (sulla misura giusto?) influisce sul sistema?

In quello non lineare è quindi l'errore a non essere lineare e questo "jacobini" serve per linearizzarlo? puoi spiegare un pò meglio questa parte?

Quelle slide ahimè sono le slide del corso, solo che tu che hai conoscenza di che si parla riesci ad interpretarle meglio, a me almeno prima della tua interpretazione sembravano numeri buttati li a casaccio. Conta che non ho la minima idea di cosa sia un filtro, anzi se hai una definizione "semplice" da allegare te ne sarei grato. Che poi cosa filtra? l'errore sulla misura?

Neptune
30-05-2013, 11:58
Giusto per complicare le cose ci è stato dato un esercizio in cui dover caratterizzare il filtro di kalman (già poco chiaro) su un esercizio di robotica argomento di cui sappiamo zero. Questo perchè pur essendo un corso di modelli probabilistici queste lezioni è venuto a tenerle un altro professore (di percezione robotica) e fa tutti questi esempi in ambito robotico.

Ora l'esercizio che ci ha dato da fare è questo (ho meglio una sua variante):
https://dl.dropboxusercontent.com/u/8098999/ExerciseText.SimplifiedTracking.pdf

In pratica dice che abbiamo un corpo piatto in un piano. La posizione di questo corpo la possiamo avere da 2 punti più un angolo di orientamento.
Ci ha anche dato una matrice di rototraslazione (una matrice 3x3) di cui non ho capito che cappero ci facciamo.

Ha detto di suppore di avere una telecamera come sensore e che dobbiamo trasformare i punti immagine in punti di posizione reali nel robot (anche qui non ho capito come).

Quello che ci chiede di fare è quindi di caratterizzare il filtro di Kalman su questo esempio, quindi equazione di transizione di stato, equazione di misura e non so che altro serve.

Ora tutte le volte che ho provato a chiedergli qualcosa mi ha praticamente complicato ancora di più la vita con esempi robotici assurdi (per me che non ne so nulla di robotica). Qualcuno può indirizzarmi sulla retta via?

MItaly
30-05-2013, 18:26
Premesso che non so nulla di filtri di Kalman:

Originariamente inviato da Neptune
I corrispettivi jacobiani di preciso che sono?
È la matrice delle derivate parziali, in sostanza i gradienti di ciascuna delle componenti della trasformazione messi uno sopra l'altro.


In quello non lineare è quindi l'errore a non essere lineare e questo "jacobini" serve per linearizzarlo? puoi spiegare un pò meglio questa parte?
Vedila come una formula di Taylor in più dimensioni arrestata al primo ordine... in generale quando fai mestieri di quel tipo con le derivate parziali stai facendo un'approssimazione lineare locale (sempre valida in un intorno sufficientemente piccolo nel momento in cui la funzione in esame è differenziabile - in effetti, il fatto che un'approssimazione lineare locale sia valida è esattamente il punto della differenziabilità).

Ci ha anche dato una matrice di rototraslazione (una matrice 3x3) di cui non ho capito che cappero ci facciamo.
Ti serve per passare da un sistema di riferimento ruotato/traslato ad un altro. L'idea è che se nel sistema di riferimento O hai un vettore v, questo nel sistema di riferimento O' sarà rappresentato dal vettore v' = Rv+a', dove R è la matrice di rotazione e a' è il vettore di traslazione (infatti le rototraslazioni sono trasformazioni affini).



... ma la matematica ad informatica la insegnano? :dottò:

Goo21
30-05-2013, 18:30
Originariamente inviato da MItaly
... ma la matematica ad informatica la insegnano? :dottò:
..in alcuni corsi anche analisi 3 :mame:

Loading