Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Filtro di Kalman Per stimare il Vento

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[1] Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utenteminidiable » 23 nov 2012, 12:28

Ciao a tutti...sono di nuovo qui con un nuovo problema.

Per ora si e' deciso di partire a stimare il vento con un bel filtro di Kalman. La cosa e' fattibile e vi espongo un po' come vorrei fare.

Nel programma SIMULINK in questione (che fa volare il quadricottero) gia' c'e' un filtro di Kalman che prende in ingresso le misure del sensore di posizione del quadri (una cosa simile a un GPS per Indoor) e fa una predizione di dove si trovera' il quadricottero.

Il problema e' che il filtro di Kalman in questione non tiene conto per niente di disturbi vari e inoltre e' un filtro di Kalman a guadagni costanti.

La soluzione che mi e' venuta in mente e' quella di aggiungere alle equazioni a cui fa riferimento il filtro il disturbo introdotto dal vento. Per fare cio' in prima approssimazione ho supposto di vedere il vento come una Forza (quindi pensate a un vento che agisce solo nel piano xy).

Di seguito ho scritto le equazioni differenziali che legano lo stato del sistema al disturbo, non so se ho sbagliato qualcosa:
foto.JPG
foto.JPG (354.96 KiB) Osservato 7358 volte


Ora il mio problema e' come modificare il codice del filtro di Kalman. Secondo voi basta aggiungere una variabile di stato, e modificare la relativa equazione?

Scusate se sono un po' vago ma non ho capito bene come fare questa cosa.

Se qualcuno volesse propormi un approccio diverso faccia pure :)

Fab.
Avatar utente
Foto Utenteminidiable
5 1 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 425
Iscritto il: 7 gen 2009, 14:08

0
voti

[2] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utentemrc » 23 nov 2012, 14:25

Ciao Foto Utenteminidiable.

Devi scrivere le equazioni utilizzando LATEX.

Leggi le regole del forum, qui sopra.

Al seguente link, trovi una piccola guida all' uso:

http://www.electroyou.it/mrc/wiki/intro ... o-di-latex
Avatar utente
Foto Utentemrc
10,5k 6 11 13
Expert EY
Expert EY
 
Messaggi: 4023
Iscritto il: 16 apr 2009, 9:32

0
voti

[3] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utentejordan20 » 23 nov 2012, 14:30

Dopo aver rispettato le regole che già Foto Utentemrc ti ha indicato, credo che qui sarebbe il caso di interpellare Foto Utentedimaios :-)
"Lo scienziato descrive ciò che esiste, l'ingegnere crea ciò che non era mai stato."
(T. von Kármán)
Avatar utente
Foto Utentejordan20
13,0k 5 11 13
G.Master EY
G.Master EY
 
Messaggi: 1550
Iscritto il: 13 lug 2011, 12:55
Località: Palermo

0
voti

[4] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utenteminidiable » 23 nov 2012, 14:42

avete ragione. Scusatemi, ma non essendo molto esperto di LaTex avevo pensato che questo era il modo migliore per esporvi il mio ragionamento.

Appena posso cambio tutto.

Grazie per l'aiuto.
Avatar utente
Foto Utenteminidiable
5 1 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 425
Iscritto il: 7 gen 2009, 14:08

0
voti

[5] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utenteminidiable » 23 nov 2012, 16:04

Tralasciando un momento il mio primo messaggio.

Vorrei sapere, secondo voi dove e' piu' giusto inserire il disturbo vento in una simulazione.

Mi spiego:

Io ho il mio modello SIMULINK in cui ho il sensore che mi da la posizione del mio quadricottero. Il filtro di kalman che stima la velocita' e per ora niente di piu' (poi ci vorrei aggiungere un altro stato che mi permetta di stimare anche il vento). Ora stavo facendo un po' di prove di robustezza del controllore e vorrei sapere:
per simulare un vento nel piano xy del quadricottero secondo voi e' piu' giusto inserire il disturbo:
1) Nella posizione che entra al filtro di kalman (non penso che sia questa la cosa giusta da fare in quanto cosi' simulerei semplicemente un imprecisione del sensore che mi da la posizione del quadri)
2) Nella Forza che entra al filtro di Kalman (ho provato a fare cio' ma non sembra cambiare molto)
3) Nella velocita' che esce dal filtro di Kalman
4) Nella posizione che esce dal Filtro di Kalman.
5) Da qualche altra parte.

Grazie per l'aiuto.
Avatar utente
Foto Utenteminidiable
5 1 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 425
Iscritto il: 7 gen 2009, 14:08

10
voti

[6] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utentedimaios » 24 nov 2012, 12:15

Faccio alcuni commenti al testo nell'immagine del post [1].

Come al solito si tenta di spremere "sangue dalle arance" non impiegando gli strumenti in modo adeguato.

La frase "Assuming that the d has not dynamics" oltre che essere sbagliata dal punto di vista del modello e' anche falsa dal punto di vista della rappresentazione.

Scrivere \dot{x_{3}} = 0 vuol dire che x_{3} = const ma siccome il modello e' di tipo stocastico si ha :

\dot{x_{3}} = 0 + \eta_{3}

Dove \eta_{3} e' una variabile aleatoria che indica il fatto importantissimo che c'e' un errore di modello per cui x_{3} non e' una costante ma e' una costante a parte un errore.
E' questo che permette allo stimatore di far variare la costante e modificare il valore di x_{3} il quale rimane inchiodato per definizione al valore iniziale se fisso \eta_{3} = 0.

Se voglio far muovere piu' velocemente \dot{x_{3}} dovrei aumentare il valore dell'incertezza ovvero la varianza di \eta_{3} per rendere l'inseguimento della variabile di stato piu' veloce.
Questa tecnica pero' sovrappone molto rumore alla stima perche' non c'e' nessuna specifica sulla banda della variabile di stato \dot{x_{3}} per cui il rumore puo' eccitarne tutto lo spettro senza limitazioni.

Questo e' sbagliato.

Nell'osservatore di Kalman la conoscenza a priori e' fondamentale.

Cosa sai del processo "vento" a priori ?
Puoi simulare il processo "vento" in modo sensato ?
Puoi almeno ipotizzare che la banda della velocita' sia limitata ?

Direi di si.

Se per esempio modelli il processo aleatorio in frequenza come indicato in figura puoi supporre il
processo aleatorio d(t) come l'uscita di un filtro alimentato con rumore bianco gaussiano n(t).
A questo punto hai due sezioni [A] e [B] che potrebbero rappresentare la brezza lentamente variabile e le raffiche di vento ad alta frequenza.
Tutto cio' che non rientra in questa banda non ha a che fare con il modello del processo per cui non viene stimato in quanto fa parte dell'errore.
Se per esempio compare una oscillazione del rotore a 100 Hz, risultando fuori banda viene eliminata dalla stima di x_{3} in quanto il vento non puo' fisicamente avere frequenze di quell'ordine di grandezza per cui appartengono ad un altro disturbo.




Le frequenze sono puramente indicative come l'andamento spettrale del segnale.

Per fare un lavoro significativo dal punto di vista scientifico bisognerebbe campionare l'andamento del vento per un lungo periodo con diverse condizioni atmosferiche e ricavare la densita' spettrale del processo.
Fondamentalmente bisogna ipotizzare o ricavare la dinamica del modello V(s), la si deve inserire nel modello generale e poi si stima d(t) aggiungendo la variabile di stato x_{3} che non risulta piu' una costante ma un processo aleatorio con caratteristiche ben delineate e quindi piu' fedelmente stimabile in virtu' della conoscenza a priori.

Ipotizzare a priori che il vento sia una "costante ma non proprio" come indicato nel documento iniziale comporta stime molto lente con valori di \eta_{3} piccoli e stime estremamente rumorose ed errate per \eta_{3} di valore elevato.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[7] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utenteminidiable » 27 nov 2012, 11:49

Innanzitutto parto col ringraziarti davvero tanto perche' queste risposte sono il genere di risposte che mi fanno pensare che i forum e le persone come voi sono le cose migliori che abbiano mai inventato :) La condivisione della conoscenza e' una cosa incantevole a mio parere.

Tralasciando cio', volevo dirti che :
dimaios ha scritto:Scrivere \dot{x_{3}} = 0 vuol dire che x_{3} = const ma siccome il modello e' di tipo stocastico si ha :

\dot{x_{3}} = 0 + \eta_{3}

Dove \eta_{3} e' una variabile aleatoria che indica il fatto importantissimo che c'e' un errore di modello per cui x_{3} non e' una costante ma e' una costante a parte un errore.
E' questo che permette allo stimatore di far variare la costante e modificare il valore di x_{3} il quale rimane inchiodato per definizione al valore iniziale se fisso \eta_{3} = 0.


Fin qui ci sono. Infatti io ho detto che \dot{x_{3}} = 0 per semplificare il modello e cercare di simulare qualcosa.

Detto questo, ho cercato di simulare il tutto e il mio Predittore non mi da risultati proprio scadenti, anche se non proprio eccezionali:
performance.jpg
performance.jpg (100.89 KiB) Osservato 7268 volte


Quello rosa e' l'andamento del "vento" che il mio Filtro non conosce e quella in giallo e' la "stima" del vento.
Con andamento del vento intendo il termine additivo che ho inserito in questa equazione:
xdd=sin(theta)*(Fu/m)-wind;
ydd=sin(phi)*(Fu/m)-wind;
(Si e' supposto, per cominciare, di non avere effetti del vento lungo l'asse z! Naturalmente e' un'ipotesi molto restrittiva)
Dove:
xdd=Accelerazione lungo l'asse x
ydd= Accelerazione lungo l'asse y
Fu=Forza
m=massa del quadricottero

Ho simulato varie situazioni:
0-10 secondi : Semplice sinusoide
10-20 secondi : Sinusoide con rumore bianco
20-30 secondi : sinusoide con bias=10
30-40 secondi : sinusoide con bias=-10
40-50 secondi : costante =5
50-55 secondi : costante =0

dimaios ha scritto:Se per esempio modelli il processo aleatorio in frequenza come indicato in figura puoi supporre il
processo aleatorio d(t) come l'uscita di un filtro alimentato con rumore bianco gaussiano n(t).
A questo punto hai due sezioni [A] e [B] che potrebbero rappresentare la brezza lentamente variabile e le raffiche di vento ad alta frequenza.
Tutto cio' che non rientra in questa banda non ha a che fare con il modello del processo per cui non viene stimato in quanto fa parte dell'errore.
Se per esempio compare una oscillazione del rotore a 100 Hz, risultando fuori banda viene eliminata dalla stima di x_{3} in quanto il vento non puo' fisicamente avere frequenze di quell'ordine di grandezza per cui appartengono ad un altro disturbo.




Le frequenze sono puramente indicative come l'andamento spettrale del segnale.

Per fare un lavoro significativo dal punto di vista scientifico bisognerebbe campionare l'andamento del vento per un lungo periodo con diverse condizioni atmosferiche e ricavare la densita' spettrale del processo.
Fondamentalmente bisogna ipotizzare o ricavare la dinamica del modello V(s), la si deve inserire nel modello generale e poi si stima d(t) aggiungendo la variabile di stato x_{3} che non risulta piu' una costante ma un processo aleatorio con caratteristiche ben delineate e quindi piu' fedelmente stimabile in virtu' della conoscenza a priori.

Questa cosa mi interesserebbe molto. Puoi spiegarmi meglio come fare? Mi serve un anemometro o cosa?
Ti ringrazio molto per l'aiuto,
Fab.
Avatar utente
Foto Utenteminidiable
5 1 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 425
Iscritto il: 7 gen 2009, 14:08

5
voti

[8] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utentedimaios » 28 nov 2012, 22:47

minidiable ha scritto:Detto questo, ho cercato di simulare il tutto e il mio Predittore non mi da risultati proprio scadenti, anche se non proprio eccezionali


Beh, non direi che funziona granchè bene. :!:
Innanzitutto dovresti precaricare lo stimatore con uno stato diverso da zero altrimenti all'inizio hai delle oscillazioni indesidrate.
La dinamica della stima è troppo lenta, infatti non riesci a stimare la sinusoide.
Quando inserisci un grafico abbi la cortesia di indicare le scale su ambedue gli assi altrimenti non si capisce nulla. :?

minidiable ha scritto:Questa cosa mi interesserebbe molto. Puoi spiegarmi meglio come fare? Mi serve un anemometro o cosa?


Innanzitutto direi che il vento dovrebbe essere rappresentato in modo vettoriale ovvero ha un'intensità una direzione ed un verso.

Per fare questo devi identificare due processi aleatori :

[1] Intensità del vento
[2] Variazione direzionale del vento



Supponiamo che il processo i(t) ed il processo \alpha(t) siano generati da rumori bianchi statisticamente indipendenti tra loro.
Questo in generale non è vero in quanto l'intensità del vento e la sua direzione in qualche modo potrebbero essere collegati ma accettiamo l'ipotesi come valida.

In particolare assumiamo che il meccanismo di generazione dei due processi sia un modello AR alimentato rispettivamente da \xi_{1} e \xi_{2}.

Siccome la traiettoria di un quadrocopter è generica non c'è motivo di pensare che vi sia un angolo privilegiato tra velivolo e direzione del vento per cui si suppone che l'angolo iniziale del vento sia una variabile aleatoria \varphi uniformemente distribuita nell'intervallo \left [ 0, 2 \pi \right ).

Questa ipotesi non sarebbe vera nel caso di una traiettoria deterministica di un velivolo che sorvola una particolare zona dove per esempio soffia sovente il ponente o il libeccio in modo predominante in quanto l'angolo di incidenza tra traiettoria e vento sarebbe polarizzato su alcuni valori ( l'esempio è solo per farti capire che stiamo modellando il problema con ipotesi non applicabili in generale ).

Per misurare le due grandezze in oggetto ( intensità e direzione del vento dovresti avere un sistema come quello illustrato nel video ).



I dati campionati sul lungo periodo si possono dividere in serie temporali da cui si ricava la stima della densità spettrale dei processi e quindi I(s) e \alpha(s).

Per il calcolo si possono utilizzare algoritmi classici tipo lo schema di Yule-Walker oppure algoritmi più sofisticati come Capon oppure APES.
Ingegneria : alternativa intelligente alla droga.
Avatar utente
Foto Utentedimaios
30,2k 7 10 12
G.Master EY
G.Master EY
 
Messaggi: 3381
Iscritto il: 24 ago 2010, 14:12
Località: Behind the scenes

0
voti

[9] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utenteminidiable » 29 nov 2012, 10:38

dimaios ha scritto:Quando inserisci un grafico abbi la cortesia di indicare le scale su ambedue gli assi altrimenti non si capisce nulla. :?

Innanzitutto ecco il grafico corretto :) Per il resto di quello che mi hai scritto... Devo capirlo e poi ti rispondo :)
Kalman PerformanceSmall.png
Kalman PerformanceSmall.png (16.56 KiB) Osservato 7217 volte
Avatar utente
Foto Utenteminidiable
5 1 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 425
Iscritto il: 7 gen 2009, 14:08

0
voti

[10] Re: Filtro di Kalman Per stimare il Vento

Messaggioda Foto Utenteminidiable » 29 nov 2012, 12:07

dimaios ha scritto:
minidiable ha scritto:Detto questo, ho cercato di simulare il tutto e il mio Predittore non mi da risultati proprio scadenti, anche se non proprio eccezionali


Per misurare le due grandezze in oggetto ( intensità e direzione del vento dovresti avere un sistema come quello illustrato nel video ).

I dati campionati sul lungo periodo si possono dividere in serie temporali da cui si ricava la stima della densità spettrale dei processi e quindi I(s) e \alpha(s).

Per il calcolo si possono utilizzare algoritmi classici tipo lo schema di Yule-Walker oppure algoritmi più sofisticati come Capon oppure APES.


Visto che io parto dallo stimare il vento Indoor (con una grossa ventola) potrebbe bastare solo un anemometro in modo tale che io possa stimare l'intensita' . Questo perche' suppongo di conoscere la direzione. Posso provare ad identificare solo I(s). Cosa ne pensi? La vedi fattibile come cosa?
Avatar utente
Foto Utenteminidiable
5 1 2 5
Stabilizzato
Stabilizzato
 
Messaggi: 425
Iscritto il: 7 gen 2009, 14:08

Prossimo

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti