Czy filtr Kalmana nadaje się do filtrowania rzutowanych pozycji punktów, biorąc pod uwagę kąty Eulera urządzenia przechwytującego?

17

Mój system jest następujący. Używam kamery urządzenia mobilnego do śledzenia obiektu. Z tego śledzenia otrzymuję cztery punkty 3D, które wyświetlam na ekranie, aby uzyskać cztery punkty 2D. Te 8 wartości są dość hałaśliwe ze względu na wykrycie, więc chcę je filtrować, aby ruch był płynniejszy i bardziej realistyczny. Jako drugi pomiar wykorzystuję sygnał wyjściowy żyroskopu urządzenia, który zapewnia trzy kąty Eulera (tj. Położenie urządzenia). Są one dokładniejsze i mają większą częstotliwość (do 100 Hz) niż pozycje 2D (około 20 Hz).

Moja pierwsza próba była z prostym filtrem dolnoprzepustowym, ale opóźnienie było ważne, więc teraz próbuję użyć filtra Kalmana, mając nadzieję, że będzie w stanie wygładzić pozycje z niewielkim opóźnieniem. Jak widać w poprzednim pytaniu , jednym kluczowym punktem w filtrze Kalmana jest związek między pomiarami a zmiennymi stanu wewnętrznego. Tutaj pomiary to zarówno moje 8 współrzędnych punktów 2D, jak i 3 kąty Eulera, ale nie jestem pewien, co powinienem zastosować jako wewnętrzne zmienne stanu i jak powinienem połączyć kąty Eulera z punktami 2D. Stąd podstawowe pytanie, czy filtr Kalmana nadaje się nawet do tego problemu? A jeśli tak, to w jaki sposób?

Stéphane Péchard
źródło
Jeśli głównym celem jest wygładzenie wartości z minimalnym opóźnieniem, możesz spróbować zastosować filtr fazy minimalnej, jeśli jeszcze tego nie próbowałeś. Byłbym zaskoczony, gdyby filtrowanie kalmana mogło dać ci coś lepszego niż „opóźnienie fazy minimalnej”. W przypadku filtrów liniowych oczekiwałbym, że filtr o minimalnej fazie daje możliwie najmniejsze opóźnienie.
niaren
@niaren: Dzięki za komentarz, ja też to przestudiuję.
Stéphane Péchard
1
Nie jest jasne, jakie są twoje pomiary. W ramach filtru Kalmana „pomiary” odnoszą się do faktycznie obserwowanych wielkości. Jeśli mierzysz cztery punkty 3D (np. Łącząc ze sobą wiele obrazów z kamery), to są to twoje pomiary. Musisz także zdecydować, które zmienne stanu próbujesz oszacować. Czy próbujesz śledzić lokalizacje obiektów 3D w czasie? Jeśli tak, to są to zmienne stanu. Może być wskazane, aby reprezentacja 2D mogła być używana tylko do wyświetlania i nie była częścią modelu. Dodatkowe szczegóły pomogą zasugerować podejście.
Jason R
Jak mówi Jsaon, twoje pomiary nie są jasne. Mówisz: 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 noisya potem mówisz What's available to me is the device's gyroscope output, which provides three Euler angles (i.e. the device attitude).. Który to jest? Cztery punkty 2D czy trzy kąty Eulera? A może pociąg przetwarzający przechodzi kąty Eulera -> punkty 3D -> punkty 2D?
Peter K.
Właściwie mam dwa zestawy pomiarów: wykryte pozycje punktów z kamery i kąty Eulera, ale nie są one trywialne. Dodatkowo interesują mnie tylko filtrowane pozycje jako dane wyjściowe. Przeredaguję pytanie, aby wyjaśnić.
Stéphane Péchard

Odpowiedzi:

4

Filtrowanie dolnoprzepustowe

Dobrze byłoby wiedzieć, co rozumiesz przez „prosty filtr dolnoprzepustowy”.

Na przykład, jeśli twoje pomiary w czasie k

pk=[xkyk]

a twoje filtrowane dane dolnoprzepustowe to:

pkLPF=αpk1LPF+(1α)pk

wtedy będziesz miał dość duże opóźnienie grupowe w filtrze około (dla alfa bliskiego 1). 1/(1α)

Modelowanie sygnału: podejście uproszczone

Aby użyć filtru Kalmana (lub innego podobnego podejścia), musisz mieć model określający sposób zbierania i aktualizowania pomiarów.

Zwykle wygląda to tak:

gdzie ϵ k to szum procesu (napędzający), A to macierz przejścia stanu, a B to macierz wejściowa.

pk+1TRUE=ApkTRUE+Bϵk
ϵkAB

A następnie zmierzone to: p k = C p T R U E k + D ν k gdzie ν k to szum wyjściowy (pomiarowy), C to matryca wyjściowa, a D to matryca szumu pomiarowego.pk

pk=CpkTRUE+Dνk
νkCD

Tutaj „stan” modelu jest wybierany jako prawdziwa pozycja, a mierzone rzeczy są wynikiem.

Następnie można zastosować do tego równania filtra Kalmana, aby uzyskać oszacowania stanu prawdziwej pozycji.pkTRUE^

Jednak to podejście jest uproszczone, ponieważ nie wykorzystuje żadnej wiedzy o tym, jak punkty mogą się poruszać (ani nie wykorzystuje twoich 4 punktów i żadnej wiedzy, którą możesz mieć o tym, jak poruszają się razem).

Modelowanie sygnału: rozpoczęcie lepszego podejścia

Ta strona pokazuje, jak skonfigurować problem dotyczący pozycji i kątów eulera. Robi coś innego niż potrzebujesz, ale stan to:

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

a pomiary (wyjście) to

pk=[xk yk zk ϕ ψ θ ]T

Cały model na tej stronie naprawdę mówi: (ale dla każdegoX,Y,iZ).

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

To tylko klasyczne „równania ruchu”. Zobacz równanie (3) tutaj.

Peter K.
źródło
pk=αpk1+(α1)pk
α
Δt;12(Δ2)
Δt1/fs
1
fsΔtΔt12Δt2
0

Twój filtr dolnoprzepustowy może być podobny;

pk=αpk1+(1α)zk

zkkpkk

LPF można zdeformować do następnego:

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

This is quite similar to Kalman filter. In Kalman filter, K is Kalman gain and generally variable.

fumio ueda
źródło