Un filtro Kalman è adatto per filtrare le posizioni dei punti proiettati, dati gli angoli di Eulero del dispositivo di acquisizione?


17

Il mio sistema è il seguente. Uso la fotocamera di un dispositivo mobile per tracciare un oggetto. Da questo tracciamento, ottengo quattro punti 3D che proietto sullo schermo, per ottenere quattro punti 2D. Questi 8 valori sono un po 'rumorosi, a causa del rilevamento, quindi voglio filtrarli per rendere il movimento più fluido e realistico. Come seconda misura, utilizzo l'uscita giroscopio del dispositivo, che fornisce tre angoli di Eulero (ovvero l'atteggiamento del dispositivo). Questi sono più precisi e con una frequenza maggiore (fino a 100 Hz) rispetto alle posizioni 2D (circa 20 Hz).

Il mio primo tentativo è stato con un semplice filtro passa-basso, ma il ritardo era importante, quindi ora provo a usare un filtro Kalman, sperando che sarà in grado di appianare le posizioni con un piccolo ritardo. Come visto in una domanda precedente , un punto chiave in un filtro Kalman è la relazione tra le misurazioni e le variabili di stato interne. Qui le misurazioni sono sia le mie 8 coordinate dei punti 2D che i 3 angoli di Eulero, ma non sono sicuro di cosa dovrei usare come variabili di stato interne e di come dovrei collegare gli angoli di Eulero ai punti 2D. Da qui la domanda principale, un filtro Kalman è adatto anche a questo problema? E se sì, come?


Se lo scopo è di uniformare i valori con un ritardo minimo, è possibile provare a utilizzare un filtro a fase minima se non lo si è già provato. Sarei sorpreso se il filtro kalman può darti qualcosa di meglio del "ritardo di fase minima". Per i filtri lineari mi aspetterei che un filtro a fase minima dia il minor ritardo possibile.
niaren,

@niaren: grazie per il commento, studierò anche questo.
Stéphane Péchard,

1
Non è chiaro quali siano le tue misurazioni. Nel framework del filtro Kalman, le "misurazioni" si riferiscono alle quantità effettivamente osservate. Se stai misurando quattro punti 3D (ad esempio unendo più immagini della videocamera insieme), queste sono le tue misurazioni. È inoltre necessario decidere quali variabili di stato si sta tentando di stimare. Stai tentando di tenere traccia delle posizioni degli oggetti 3D nel tempo? In tal caso, queste sono le variabili di stato. Potrebbe essere appropriato che la rappresentazione 2D possa essere utilizzata solo per la visualizzazione e non inclusa come parte del modello. Ulteriori dettagli aiuteranno a suggerire un approccio.
Jason R,

Come dice Jsaon, quali sono le tue misurazioni non è chiaro. Tu dici: From this tracking, I get four 3D points that I project on a mobile device screen, to get four 2D points. These 8 values are kinda noisye poi dopo dici What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. Cos'è questo? I quattro punti 2D o i tre angoli di Eulero? Oppure il treno di elaborazione va dagli angoli di Eulero -> punti 3D -> punti 2D?
Peter K.

In realtà ho due serie di misurazioni: le posizioni dei punti rilevati dalla telecamera e gli angoli di Eulero, ma non sono banali da mettere in relazione. Inoltre sono interessato solo alle posizioni filtrate come output. Modificherò la domanda per chiarire.
Stéphane Péchard,

Risposte:


4

Filtro passa basso

Sarebbe bene sapere cosa intendi per "filtro passa basso semplice".

Ad esempio, se le tue misurazioni al momento sonok

pk=[xkyk]

e le tue stime filtrate passa basso sono:

pkLPF=αpk1LPF+(1α)pk

allora avrai un ritardo di gruppo abbastanza grande nel filtro di circa (per alpha vicino a 1). 1/(1α)

Modellazione del segnale: approccio semplicistico

Per utilizzare il filtro Kalman (o qualsiasi approccio simile), è necessario disporre di un modello per l'acquisizione e l'aggiornamento delle misurazioni.

Di solito questo sembra:

pk+1TRUE=ApkTRUE+Bϵk
dove è il rumore di processo (guida), è la matrice di transizione di stato e è la tua matrice di input.A BϵkAB

E poi i tuoi misurati sono: dove è il rumore di output (misurazione), p k = C p T R U E k + D ν k ν k Cpk

pk=CpkTRUE+Dνk
νkC è la matrice di output e è la matrice del rumore di misurazione.D

Qui, lo "stato" del modello viene scelto come posizione reale e le cose che misurate sono l'output.

pkTRUE^

Tuttavia, questo approccio è semplicistico perché non utilizza alcuna conoscenza di come i punti potrebbero muoversi (né utilizza i tuoi 4 punti e qualsiasi conoscenza che potresti avere su come si muovono insieme).

Modellare il segnale: iniziare un approccio migliore

Questa pagina mostra come impostare il problema relativo alle posizioni e agli angoli di eulero. Sta facendo qualcosa di diverso da quello che ti serve, ma lo stato è:

pkTRUE=[xk yk zk x˙k y˙k z˙k x¨k y¨k z¨k ϕ ψ θ ϕ˙ ψ˙ θ˙ ϕ¨ ψ¨ θ¨ ]T

e le misure (output) sono

pk=[xk yk zk ϕ ψ θ ]T

xkTRUE=n=0kx˙nTRUEnΔt+12n=0kx¨nTRUE(nΔt)2
x,y,z

Questa è solo la classica "equazione del movimento". Vedi equazione (3) qui.


pk=αpk1+(α1)pk

α

Δt;12(Δ2)

Δt1/fs

1
fsΔtΔt12Δt2

0

Il filtro passa basso potrebbe essere simile;

pk=αpk1+(1α)zk

zkkpkk

L'LPF può essere deformato al successivo:

pk=pk1+K(zkpk1)
K=(1α)

K

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.