Filtr Kalmana to jeden z najważniejszych algorytmów w teorii sterowania i przetwarzania sygnałów. Jest to algorytm rekursywnego wyznaczania minimalno-wariancyjnej estymaty wektora stanu liniowego, dyskretnego układu dynamicznego na podstawie pomiarów wyjścia oraz wejścia układu.

Opracowany na początku lat 60. XX wieku przez Rudolfa Emila Kalmana, zrewolucjonizował estymację stanu systemów dynamicznych w obecności szumu i niepewności pomiarowych. W praktyce filtr Kalmana łączy model matematyczny obiektu z zaszumionymi danymi pomiarowymi, dostarczając możliwie najdokładniejszego oszacowania stanu.

Chociaż algorytm jest złożony matematycznie, jego znaczenie dla praktycznych aplikacji jest ogromne – od nawigacji satelitarnej po robotykę i systemy autonomiczne. W niniejszym tekście omawiamy zarówno podstawy teoretyczne, jak i rzeczywiste zastosowania w elektronice oraz robotyce.

Historia i pochodzenie filtru Kalmana

Rudolf Emil Kalman (1930–2016) zaprezentował algorytm na początku lat 60. XX wieku. W 1960 roku Kalman i jego współpracownicy w USA opublikowali trzy kluczowe artykuły naukowe; w trzecim opisano filtrację optymalną i teorię estymacji, przedstawiając równania dyskretnego filtru Kalmana. Odpowiednik dla układów ciągłych opracowano rok później, w 1961 roku.

Znaczenie filtru Kalmana polega na tym, że stanowi naturalne rozszerzenie filtru Wienera dla niestacjonarnych układów stochastycznych. Współczesna teoria Wienera–Kołmogorowa jest szczególnym przypadkiem teorii Kalmana, co podkreśla uniwersalność tego podejścia.

Założenia teoretyczne

Aby filtr Kalmana działał poprawnie, muszą być spełnione ściśle określone założenia dotyczące charakteru szumów i zaburzeń w systemie.

Rozkład Gaussa zmiennych stanu

Fundamentalnym założeniem jest to, że zmienne stanu mają rozkład normalny (Gaussa). Każda ze zmiennych posiada wartość oczekiwaną (średnią) oraz wariancję, która opisuje niepewność.

Charakterystyka szumów

Zarówno pomiar, jak i proces w układzie są obarczone błędem o rozkładzie gaussowskim. Zakłócenia procesowe oraz szumy pomiarowe mają zerową średnią i znane wariancje, a wektory zakłóceń i pomiarów są wzajemnie niezależne.

W rezultacie rozpatrujemy problem liniowo-kwadratowej estymacji natychmiastowego stanu liniowego układu dynamicznego zaburzanego przez biały szum.

Teoretyczne podstawy działania

Optymalna estymacja stanu

Filtr Kalmana jest optymalnym obserwatorem stanu układu w sensie minimalizacji wariancji błędu estymacji. To czyni go niezwykle cennym w systemach, w których część zmiennych nie jest dostępna bezpośrednio pomiarowo.

Obserwator Luenbergera

Filtr Kalmana realizuje koncepcję obserwatora Luenbergera: na podstawie znanych sygnałów wejściowych i wyjściowych układu liniowego oblicza optymalne wartości zmiennych stanu, które nie są bezpośrednio obserwowalne.

Struktura algorytmu

W każdym kroku czasowym filtr Kalmana wykonuje dwie fazy przetwarzania: predykcję i korekcję.

Faza predykcji (estymata a priori)

W fazie predykcji szacujemy stan w chwili k na podstawie estymaty z chwili k−1 i znanego sterowania:

x̂_{k|k-1} = A x̂_{k-1|k-1} + B u_{k-1}

P_{k|k-1} = A P_{k-1|k-1} A^T + Q

Najważniejsze oznaczenia użyte w powyższych równaniach to:

  • x̂_{k|k-1} – ocena stanu a priori (przed pomiarem);
  • x̂_{k|k} – estymata stanu a posteriori (po pomiarze);
  • P_{k|k-1} – macierz kowariancji błędu predykcji;
  • P_{k|k} – macierz kowariancji błędu filtracji;
  • Q – macierz kowariancji szumu procesowego.

Faza korekcji (aktualizacja a posteriori)

Po dokonaniu pomiaru aktualizujemy estymatę, wykorzystując zysk Kalmana:

K_k = P_{k|k-1} H^T (H P_{k|k-1} H^T + R)^{-1}

x̂_{k|k} = x̂_{k|k-1} + K_k (y_k - H x̂_{k|k-1})

P_{k|k} = (I - K_k H) P_{k|k-1}

W powyższej fazie wykorzystujemy następujące wielkości:

  • y_k – wektor pomiaru w chwili k;
  • H – macierz pomiaru (sprzęga stan z przestrzenią pomiarową);
  • R – macierz kowariancji szumu pomiarowego;
  • K_k – zysk Kalmana, równoważący wiarygodność modelu i pomiaru;
  • I – macierz jednostkowa.

Właściwości algorytmu

Filtr Kalmana jest algorytmem rekursywnym – przetwarza nowe dane sukcesywnie, korzystając z wyników z poprzedniego kroku, bez potrzeby ponownego użycia całej historii pomiarów. Dzięki temu jest wysoce efektywny obliczeniowo i świetnie sprawdza się w aplikacjach czasu rzeczywistego.

Inicjalizacja i konfiguracja

Przed uruchomieniem filtru należy zadać estymatę początkową x̂_{0|0} (wartość oczekiwana stanu w chwili 0) oraz macierz niepewności P_{0|0} (kowariancja błędu początkowego, często przyjmowana na poziomie niepewności procesu). Wybór tych parametrów wpływa na szybkość zbieżności i odporność początkowej fazy filtrowania.

Parametry strojenia filtru

Skuteczność filtru Kalmana zależy od właściwego doboru macierzy opisujących szumy.

Macierz kowariancji szumu procesowego (Q)

W praktycznych implementacjach często przyjmuje się postać: Q = q W q^T, gdzie q modeluje sposób wprowadzania zakłóceń do stanu, a W zawiera wariancje poszczególnych składowych zaburzeń. Przy założeniu niezależności składowych W bywa diagonalna i pełni rolę parametru strojenia czułości na dynamikę nieopisaną przez model.

Macierz kowariancji szumu pomiarowego (R)

R modeluje niepewności pomiarowe i kontroluje wrażliwość filtru na nowe dane. Większe wartości R oznaczają mniejsze zaufanie do pomiarów i silniejsze poleganie na modelu; mniejsze – odwrotnie.

Praktyczne zastosowania filtru Kalmana

Odszumianie pomiarów

Filtr Kalmana odszumia pomiary i odtwarza nieobserwowalne bezpośrednio zmienne stanu, co jest kluczowe, ponieważ realne sensory zawsze dostarczają dane obciążone szumem.

Systemy sterowania

Precyzyjna estymacja stanu umożliwia skuteczne sterowanie obiektami automatyki, zwłaszcza gdy część zmiennych jest niemierzalna.

Robotyka i nawigacja

W robotyce filtr Kalmana znajduje zastosowanie w wielu krytycznych zadaniach:

  • estymacji pozycji i orientacji robotów mobilnych,
  • fuzji danych z różnych sensorów (akcelerometry, żyroskopy, magnetometry),
  • nawigacji autonomicznej, zwłaszcza w systemach SLAM (Simultaneous Localization and Mapping).

Prognozy biznesowe

Filtr Kalmana bywa stosowany w prognozowaniu sprzedaży i analizach szeregów czasowych, gdzie dane historyczne są obciążone szumem statystycznym.

Ograniczenia i rozszerzenia

Problem nieliniowości

Oryginalny filtr Kalmana dotyczy układów liniowych, podczas gdy wiele realnych obiektów zachowuje się nieliniowo. Ta ograniczoność doprowadziła do opracowania rozszerzonego filtru Kalmana (EKF) dla modeli nieliniowych.

Rozszerzony filtr Kalmana (EKF)

EKF linearyzuje równania stanu i pomiaru wokół bieżącej estymaty, co pozwala zastosować mechanizm filtracji Kalmana w szerszej klasie problemów praktycznych.

Filtry rozmyte i hybrydowe

Modele rozmyte mogą zastępować lub uzupełniać klasyczną filtrację Kalmana, zwłaszcza w procesie strojenia parametrów, co bywa użyteczne w systemach z trudnymi do opisania zakłóceniami.

Przykład praktyczny – przypadek skalarny

Aby zilustrować działanie, rozważmy najprostszy model o dynamice: x_{k+1} = x_k. W tym modelu przyjmujemy następujące założenia:

  • macierze mają wartości: A = 1, B = 0, H = 1,
  • stan jest wielkością skalarną,
  • wektory zakłóceń i szumów pomiarowych są skalarami,
  • macierz kowariancji szumu pomiarowego R redukuje się do wariancji tego szumu.

W takim przypadku równania upraszczają się do formy bardzo przejrzystej, co ułatwia zrozumienie mechanizmu filtracji już na starcie nauki.