Filtr Kalmana - optymalny sposób obsługi pomiarów „pochodnych”?

13

To znaczy, jeśli masz jako zmienne stanu pozycję ( p ) i prędkość ( v ), a ja wykonuję pomiary p o niskiej częstotliwości , to również pośrednio daje mi informacje o v (ponieważ jest to pochodna p ). Jaki jest najlepszy sposób radzenia sobie z takim związkiem?

A) Czy na etapie aktualizacji powinienem tylko powiedzieć, że zmierzyłem p i polegałem na procesie filtrowania oraz mojej skumulowanej macierzy kowariancji stanu ( P ), aby poprawić v ?

B) Czy powinienem utworzyć „dodatkowy” krok predykcji, przed lub po moim kroku aktualizacji dla pomiaru p , który wykorzystuje mój zmierzony p i (stosunkowo duży) czas delta do wykonania prognozy o dużej wariancji v ?

C) Czy na etapie aktualizacji / pomiaru powinienem powiedzieć, że dokonałem pomiaru zarówno p, jak i v , a następnie jakoś zakodować informacje o ich współzależności w macierzy współosiowości pomiaru ( R )?


Aby uzyskać więcej informacji, oto konkretna sytuacja, w której napotkałem problem:

Pracuję z systemem, w którym chcę oszacować pozycję ( p ) obiektu i wykonuję częste pomiary przyspieszenia ( a ) i rzadkie pomiary hałasu o wartości p .

Obecnie pracuję z bazą kodu, która robi to z rozszerzonym filtrem Kalmana, w którym zachowuje się jak zmienne stanu p i v . Wykonuje krok „przewidywania” po każdym pomiarze przyspieszenia, w którym wykorzystuje zmierzony czas a i delta do całkowania i przewidywania nowych wartości p i v . Następnie wykonuje krok „aktualizacja” / „pomiar” dla każdego (rzadkiego) pomiaru p .

Problem w tym, że od czasu do czasu dostaję pomiary wysokiego błędu a , które powodują bardzo błędne v . Oczywiście dalsze pomiary a nigdy tego nie poprawią, ale pomiary p powinny się tego pozbyć. I faktycznie wydaje się, że tak się dzieje ... ale BARDZO powoli.

Myślałem, że może to częściowo wynikać z tego, że jedynym sposobem, w jaki p wpływa na v w tym układzie, jest macierz kowariancji P - tj. Metoda A) z góry - która wydaje się dość pośrednia. Zastanawiałem się, czy byłby lepszy sposób na włączenie naszej wiedzy o tej zależności między p i v do modelu, aby pomiary p poprawiłyby v szybciej.

Dzięki!

Paul Molodowitch
źródło
1
Spróbuję później wrócić z dłuższą odpowiedzią, ale moje natychmiastowe reakcje na twoje pytania brzmiałyby: A) Tak, B i C) Prawdopodobnie nie. Czy potrafisz w jakiś sposób wykryć pomiary o wysokim poziomie błędu ? Jeśli potrafisz wykryć wartości odstające, możesz je wyrzucić, aby złagodzić ich skutki. Możesz mieć trudności z uzyskaniem doskonałej wydajności, jeśli częstotliwość próbkowania pozycji systemu jest zbyt niska w porównaniu do jego dynamiki. a
Jason R
2
Jeszcze jedna rzecz; powinna istnieć niejawna zależność między i wyrażoną w macierzy przejścia stanu. W szczególności powinien wyrażać, że lub podobny. pvpk+1=pk+vkΔt
Jason R

Odpowiedzi:

3

W idealnym świecie miałbyś odpowiedni model i używałbyś go.
W twoim przypadku model nie jest idealny.
Jednak kroki, które sugerujesz, oparte są na wiedzy, którą posiadasz na temat procesu - którą powinieneś uwzględnić w równaniu procesu za pomocą macierzy modelu dynamicznego:

  1. Klasyczny i poprawny sposób danej macierzy F jest budowany poprawnie zgodnie z twoją wiedzą.

  2. „Dodatkowy” krok przewidywania nic nie da, ponieważ i jeśli ramy czasowe, powinieneś odpowiednio zmienić i co powinno cię na końcu łańcucha małych kroków ten sam P_k_k-1. QRFik=FijFjkQR

  3. Jeśli nie zmierzysz V, musisz to jakoś oszacować. Jednak z definicji, jeśli twoja sprawa mieści się w założeniach Kalmana, użycie filtra Kalmana dałoby najlepsze wyniki.

Podsumowując, trzymaj się „klasycznego”.

Royi
źródło