Strona główna Algorytmy i Struktury Danych Filtr Kalmana

📡 Filtr Kalmana

Optymalnie łącz zaszumione pomiary z modelem ruchu. Elipsa kowariancji rośnie w kroku predykcji i maleje przy aktualizacji; estymata Kalmana bije zarówno surowe pomiary, jak i sam model — dowodzi tego bieżący RMSE.

Algorytmy i Struktury Danych2DZaawansowany60 FPS
kalman-filter ↗ Otwórz osobno
Interfejs samej symulacji jest w języku angielskim.

O filtrze Kalmana

Filtr Kalmana, opracowany przez Rudolfa Kálmána w 1960 roku, to optymalny rekurencyjny liniowy estymator stanu, który łączy zaszumiony model procesu z zaszumionymi pomiarami czujników, by uzyskać estymatę stanu ukrytego o minimalnym błędzie średniokwadratowym. Działa w dwóch naprzemiennych fazach: Predykcja (propagacja estymaty stanu i wzrost kowariancji niepewności przy użyciu modelu procesu) oraz Aktualizacja (uwzględnienie nowego pomiaru, by zmniejszyć kowariancję i skorygować estymatę poprzez wzmocnienie Kalmana K = P·Hᵀ·(H·P·Hᵀ + R)⁻¹). Zasilał system nawigacji komputera naprowadzania misji Apollo i jest wszechobecny w GPS, robotyce oraz finansowych szeregach czasowych.

Symulacja śledzi cel poruszający się według prostego modelu stałej prędkości. Możesz dostroić kowariancję szumu procesu Q (niepewność modelu) i kowariancję szumu pomiaru R (szum czujnika) oraz obserwować, jak elipsa kowariancji rozszerza się podczas kroku predykcji i kurczy się przy każdej aktualizacji pomiaru. Licznik RMSE porównuje estymatę Kalmana z surowymi pomiarami i bezszumową prawdziwą trajektorią.

Najczęściej zadawane pytania

Co reprezentuje wzmocnienie Kalmana K?

Wzmocnienie Kalmana K = P⁻·Hᵀ·(H·P⁻·Hᵀ + R)⁻¹ to macierz wagowa, która określa, na ile ufać nowemu pomiarowi w porównaniu z predykcją. Gdy szum pomiaru R jest mały, K zbliża się do H⁻¹, a estymata skacze w kierunku pomiaru. Gdy R jest duże, K zbliża się do 0, a estymata ledwo się porusza. Elegancko łączy zaufanie do modelu i czujnika przy każdym kroku.

Jaka jest różnica między Q a R w filtrze Kalmana?

Q to macierz kowariancji szumu procesu, reprezentująca niepewność w modelu dynamiki systemu — na przykład nieznane przyspieszenia w systemie nawigacji pojazdu. R to kowariancja szumu pomiaru, reprezentująca niedokładność czujnika (np. dokładność GPS). Zwiększenie Q sprawia, że filtr bardziej ufa pomiarom i szybciej reaguje na manewry; zwiększenie R sprawia, że wygładza szum czujnika, ale wolniej reaguje na rzeczywiste zmiany stanu.

Kiedy filtr Kalmana daje optymalną estymatę?

Filtr Kalmana jest optymalny (minimalny błąd średniokwadratowy), gdy system jest liniowy, szum procesu jest gaussowski z kowariancją Q, szum pomiaru jest gaussowski z kowariancją R, a początkowa estymata stanu i jej kowariancja są poprawne. Naruszenie któregokolwiek z tych założeń pogarsza wydajność, co motywuje rozszerzenia, takie jak rozszerzony filtr Kalmana (EKF) dla systemów nieliniowych i filtry cząsteczkowe dla szumu niegaussowskiego.

Czym jest rozszerzony filtr Kalmana (EKF)?

EKF obsługuje systemy nieliniowe, linearyzując funkcje przejścia stanu i pomiaru wokół bieżącej estymaty przy użyciu ich macierzy Jakobiego. Choć nie jest w pełni optymalny (linearyzacja wprowadza błędy), jest szeroko stosowany w robotyce (SLAM), nawigacji lotniczej i rzeczywistości rozszerzonej. Jego główną słabością jest rozbieżność, gdy nieliniowość jest silna lub estymata początkowa jest słaba.

Czym jest bezśladowy filtr Kalmana (UKF)?

UKF propaguje mały zbiór starannie wybranych punktów sigma przez rzeczywiste funkcje nieliniowe zamiast je linearyzować, dając dokładniejsze przybliżenie drugiego rzędu rozkładu a posteriori. Zazwyczaj przewyższa EKF w silnie nieliniowych problemach przy podobnym koszcie obliczeniowym i jest preferowanym wyborem w wielu zastosowaniach lotniczych i robotycznych.

Czym filtr Kalmana różni się od filtru cząsteczkowego?

Filtr cząsteczkowy (sekwencyjne Monte Carlo) reprezentuje rozkład stanu jako ważony zbiór losowych próbek (cząstek), nie zakładając rozkładu gaussowskiego. Może obsługiwać dowolne systemy nieliniowe, niegaussowskie, ale wymaga setek do tysięcy cząstek i jest znacznie bardziej kosztowny obliczeniowo. Filtry z rodziny Kalmana dominują tam, gdzie liniowość i szum gaussowski są rozsądnymi założeniami.

Czym jest ustalony (steady-state) filtr Kalmana?

Dla niezmiennych w czasie systemów liniowych wzmocnienie Kalmana K zbiega do stałej wartości ustalonej, gdy t → ∞, którą można obliczyć offline, rozwiązując dyskretne algebraiczne równanie Riccatiego (DARE). Użycie tego stałego wzmocnienia eliminuje potrzebę aktualizacji macierzy kowariancji online, redukując obliczenia do prostego mnożenia macierzy przez wektor — istotne dla wbudowanych systemów o wysokiej częstotliwości.

Czym jest fuzja czujników i jak umożliwia ją filtr Kalmana?

Fuzja czujników łączy odczyty z wielu czujników (np. akcelerometr + GPS + barometr), by uzyskać estymaty lepsze niż jakikolwiek pojedynczy czujnik. Filtr Kalmana obsługuje to naturalnie: każdy czujnik dostarcza równanie pomiaru H z jego kowariancją szumu R; sekwencyjne aktualizacje (lub wspólny wektor pomiaru) uwzględniają wszystkie czujniki optymalnie przy każdym kroku czasowym. Jest to podstawa systemów nawigacji inercyjnej w samolotach i pojazdach autonomicznych.

Czy filtr Kalmana był naprawdę użyty w misjach Apollo?

Tak. Komputer naprowadzania Apollo używał wariantu filtru Kalmana do wyznaczania orbity i naprowadzania lądowania na Księżycu. Kálmán przedstawił algorytm w 1960 roku; Stanley Schmidt z NASA zaadaptował go do nieliniowego problemu estymacji trajektorii w 1961 roku, tworząc to, co stało się znane jako filtr Schmidta-Kalmana. Jest to jedno z najbardziej doniosłych zastosowań teorii sterowania w historii.

Podobne symulacje