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?
źródło
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 noisy
a potem mówiszWhat'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?Odpowiedzi:
Filtrowanie dolnoprzepustowe
Dobrze byłoby wiedzieć, co rozumiesz przez „prosty filtr dolnoprzepustowy”.
Na przykład, jeśli twoje pomiary w czasie sąk
a twoje filtrowane dane dolnoprzepustowe to:
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.
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
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.pTRUEk^
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:
a pomiary (wyjście) to
Cały model na tej stronie naprawdę mówi: (ale dla każdegoX,Y,iZ).
To tylko klasyczne „równania ruchu”. Zobacz równanie (3) tutaj.
źródło
Twój filtr dolnoprzepustowy może być podobny;
LPF można zdeformować do następnego:
This is quite similar to Kalman filter. In Kalman filter,K is Kalman gain and generally variable.
źródło