Filtr Kalmana

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
Niniejszy artykuł jest częścią cyklu teoria sterowania.

Klasy układów
Układy statyczne - Układy dynamiczne
Układy liniowe - Układy nieliniowe
Układy stacjonarne - Układy niestacjonarne
Układy deterministyczne - Układy stochastyczne
Układy o parametrach skupionych - Układy o parametrach rozłożonych
Układy ciągłe - Układy dyskretne


Wybrane typy regulacji
Regulacja stałowartościowa
Regulacja nadążna
Regulacja optymalna
Regulacja adaptacyjna


Metody klasyczne
Opis typu wejście-wyjście
Stabilność
Transmitancja
Charakterystyki czasowe
Regulacja PID
Charakterystyki częstotliwościowe
Linie pierwiastkowe
Korekcja fazy


Nowoczesna teoria sterowania
Równania stanu - Stan układu
Sterowalność - Przesuwanie biegunów
Regulator liniowo-kwadratowy
Obserwowalność - Obserwator stanu
Filtr Kalmana
Regulator LQG
Sterowanie predykcyjne
Krzepkość - H-nieskończoność


Inne zagadnienia
identyfikacja systemów


Dziedziny powiązane
Teoria układów dynamicznych
Przetwarzanie sygnałów
Sztuczna inteligencja
Teoria decyzji
Metody numeryczne


Perspektywa historyczna
Historia automatyki
Teoretycy sterowania

Filtr Kalmana - algorytm rekurencyjnego wyznaczania minimalno-wariancyjnej estymaty wektora stanu modelu liniowego dyskretnego układu dynamicznego na podstawie pomiarów wyjścia oraz wejścia tego układu. Przyjmuje się założenie, że zarówno pomiar, jak i proces przetwarzania wewnątrz układu jest obarczony błędem o rozkładzie gaussowskim.

Wstęp[edytuj | edytuj kod]

Teoretycznie filtr Kalmana jest estymatorem tego co nazywa się problemem liniowo-kwadratowym czyli problemem estymacji natychmiastowego stanu liniowego układu dynamicznego, który narażony jest na perturbacje białego szumu (zob. regulator liniowo-kwadratowy-Gaussa) – przez użycie pomiarów liniowo związanych ze stanem ale zakłóconych przez biały szum. Wynikowy estymator jest statystycznie optymalny w odniesieniu do dowolnej funkcji estymowanego błędu.

Równania filtru Kalmana nie zmieniają swojej postaci w przypadku, gdy układ jest niestacjonarny. Jest to jedna z jego podstawowych zalet w stosunku do wcześniejszego filtru Wienera potrzebne źródło.

Funkcja będąca filtrem Kalmana posiada dwa parametry wejściowe, są to wejście układu oraz jego wyjście, na tej podstawie oblicza się estymaty zmiennych stanu (zob. też obserwator Luenbergera).

Równania liniowego dyskretnego modelu stanowego[edytuj | edytuj kod]

Filtr Kalmana jest optymalnym obserwatorem stanu układu (czyli układem, który estymuje jego stan), który modelowany jest z użyciem równań stanu:

\mathbf{x}(t+1)=\mathbf{Ax}(t)+\mathbf{Bu}(t)+\mathbf{v}(t)

\mathbf{y}(t)=\mathbf{C}^T\mathbf{x}(t)+\mathbf{w}(t),

gdzie

t=\dots ,-1,0,1,2,\dots oznacza dyskretną chwilę czasu,

\mathbf{x}(t) to chwilowa wartość wektora stanu,

\mathbf{A} to macierz systemowa układu (macierz przejścia),

\mathbf{B} to macierz wejścia,

\mathbf{C} macierz wyjścia,

\mathbf{v}(t) wektor szumu przetwarzania, a

\mathbf{w}(t) to wektor szumu pomiarowego.

\mathbf{y}(t) to wektor pomiarowy

Równania filtru[edytuj | edytuj kod]

Równania filtru Kalmana dzielą się na dwie kategorie: równania aktualizacji czasu i równania aktualizacji pomiarów.

Równania aktualizacji czasu[edytuj | edytuj kod]

Równania aktualizacji czasu dokonują predykcji stanu układu na chwilę t\, na podstawie znajomości estymaty stanu na chwilę t-1\,.

\hat{\mathbf{x}}(t|t-1)=\mathbf{A\hat{x}}(t-1|t-1) + \mathbf{B\hat{u}}(t-1)
\mathbf{P}(t|t-1) = \mathbf{AP}(t-1|t-1)\mathbf{A}^T+\mathbf{Q}

Wektory

\hat{\mathbf{x}}(t|t-1) i \hat{\mathbf{x}}(t-1|t-1)

stanowią estymaty a priori (przed pomiarem) i a posteriori (po pomiarze) wektora stanu.

Model obrazujący działanie filtru Kalmana. Okręgi to wektory, prostokąty to macierze, a gwiazdki reprezentują szum z przypisaną kowariancją w kwadracie po prawej stronie

Macierze

\mathbf{P}(t|t-1)=E\left[ \tilde{\mathbf{x}}(t|t-1) \tilde{\mathbf{x}}^T(t|t-1)\right]

oraz

\mathbf{P}(t-1|t-1)=E\left[ \tilde{\mathbf{x}}(t-1|t-1)\tilde{\mathbf{x}}^T(t-1|t-1)\right]

to macierze kowariancji, odpowiednio: a priori i a posteriori, wektorów

\tilde{\mathbf{x}}(t|t-1) = \mathbf{x}(t) - \mathbf{\hat{x}}(t|t-1)

oraz

\tilde{\mathbf{x}}(t-1|t-1) = \mathbf{x}(t-1) - \mathbf{\hat{x}}(t-1|t-1).

Wektory te stanowią różnicę pomiędzy rzeczywistą wartością wektora stanu, a jego estymatą i są miarą błędu oceny wektora stanu.

Macierz \mathbf{Q} to macierz kowariancji szumu przetwarzania.

Równania aktualizacji pomiarów[edytuj | edytuj kod]

Równania z drugiej kategorii aktualizują wyliczoną wcześniej predykcję stanu, na podstawie pomiaru

\hat{\mathbf{x}}(t|t)=\mathbf{\hat{x}}(t|t-1)+\mathbf{K}(t)\mathbf{e}(t)
\mathbf{e}(t) = \mathbf{y}(t) - \mathbf{C}^T\mathbf{\hat{x}}(t|t-1)
\mathbf{K}(t) = \mathbf{P}(t|t-1)\mathbf{C}^T\mathbf{S}^{-1}(t)
\mathbf{S}(t) = \mathbf{C}^T\mathbf{P}(t|t-1)\mathbf{C}^T+\mathbf{R}
\mathbf{P}(t|t) = \mathbf{P}(t|t-1) - \mathbf{K}(t)\mathbf{S}(t)\mathbf{K}^T(t)

Macierz \mathbf{K}(t) nosi nazwę wzmocnienia Kalmana. Wartość wzmocnienia Kalmana decyduje o tym, czy bardziej "ufamy" naszej ocenie stanu (a priori), czy informacji zawartej w pomiarach. Zerowe wzmocnienie oznacza, że zupełnie ignorujemy pomiary - są obarczone nieskończenie wielkim błędem (wariancja szumu pomiarowego jest nieskończona). Wzmocnienie równe \left(\mathbf{C}^T\right)^{-1}(t) (jeżeli macierz \mathbf{C}^T(t) jest kwadratowa) powoduje, że estymata a posteriori wektora stanu opierać się będzie wyłącznie na pomiarze wyjścia układu.

Wektor \mathbf{e}(t) to wektor innowacyjny. Nazwany został tak dlatego, że jego wartość niesie ze sobą nową (opartą na najnowszych pomiarach) informację o procesie.

Macierz \mathbf{R} to macierz kowariancji szumu pomiarowego.

Zastosowania[edytuj | edytuj kod]

Filtr Kalmana znalazł zastosowanie w ogromnej liczbie dziedzin techniki, do których należą m.in.: automatyka, robotyka, elektronika, teoria sterowania, przetwarzanie sygnałów, inżynieria dźwięku i obrazu, rzeczywistość rozszerzona i wiele innych potrzebne źródło.

Wśród aplikacji wymienić można sterowanie złożonymi systemami dynamicznymi takimi jak ciągłe procesy produkcyjne, samoloty, statki wodne i kosmiczne potrzebne źródło.Dla takich aplikacji często nie jest możliwe lub pożądane by mierzyć każdą zmienną, którą chce się sterować, a filtr Kalmana dostarcza środków do wydedukowania brakującej informacji z pomiarów pośrednich. Filtr Kalmana może także być użyty do predykcji (przewidywania) możliwego przyszłego kursu systemów dynamicznych, takich jak przepływ rzek podczas powodzi, trajektorie ciał niebieskich czy ceny towarów, będących przedmiotem handlu potrzebne źródło.

Przykłady zastosowań[edytuj | edytuj kod]

Rys historyczny[edytuj | edytuj kod]

Information icon.svg Osobny artykuł: Historia automatyki.

Algorytm filtru Kalmana został zaproponowany w pracy Rudolfa Emila Kalmana A new approach to linear filtering and prediction problems, opublikowanej na łamach czasopisma Journal of Basic Engineering w roku 1960.

Założenie, dotyczące stacjonarności podstawowego sygnału użytecznego i szumu, było założeniem zasadniczym w teorii Wienera i Kołmogorowa. Dopiero na przełomie lat 1950 i 1960 rozwinięto nową teorię, która nie wymagała spełnienia założenia o stacjonarności. Opracowanie tej teorii było niejako wymuszone faktem, że często w praktyce miano do czynienia z sygnałami niestacjonarnymi i nie można było tego w żaden sposób ignorować. Teoria ta wkrótce przybrała nazwę teorii filtru Kalmana.

W 1960 roku Rudolf Kalman i jego współpracownicy pracujący w Stanach Zjednoczonych, opublikowali trzy najistotniejsze artykuły. W trzecim z artykułów Kalman opisał filtrację optymalną i teorię estymacji przedstawiając równania dyskretnego filtru Kalmana. Odpowiednik filtru Kalmana dla układów ciągłych opracowany został w 1961 roku (Kalman and Bucy 1961).

Początkowo, związek pomiędzy teorią Wienera i Kołmogorowa oraz Kalmana wydawał się wątpliwy, ponieważ wcześniejszą teorię opracowano w dziedzinie częstotliwości, a późniejszą – w dziedzinie czasu. Istnieje jednakże między nimi dość podstawowy związek, wynikający chociażby z faktu, że procesy stacjonarne są szczególnym przypadkiem niestacjonarnych. W chwili obecnej można łatwo wykazać, że teoria Wienera i Kołmogorowa jest szczególnym przypadkiem teorii Kalmana. Filtr Kalmana stanowi naturalne rozszerzenie filtru Wienera dla niestacjonarnych układów stochastycznych.

Obie teorie rozwinęły się, by sprostać potrzebom chwili, wynikającym z rozwoju techniki. Warto nadmienić, że możliwości realizacji obu rodzajów filtrów były dostosowane do istniejących warunków technologicznych. Filtry Wienera realizowano przy użyciu wzmacniaczy oraz elementów niezmiennych w czasie, takich jak np. oporniki i kondensatory; podczas gdy filtry Kalmana buduje się z zastosowaniem cyfrowych układów scalonych.

Z końcem listopada 1958 roku, niedługo przed przejściem do Research Institute for Advanced Study w Baltimore, Kalman wracał pociągiem do Baltimore po wizycie w Princeton. Około godziny 22.00 pociąg zatrzymał się na prawie godzinę tuż przed Baltimore. Było późno, był zmęczony i bolała go głowa. Gdy tak tkwił „uwięziony” na godzinę przez pociąg przyszedł mu do głowy pomysł: Dlaczego by nie zastosować koncepcji zmiennych stanu do problemu filtracji Wienera? Był już zbyt zmęczony by rozwijać ten pomysł jeszcze tego wieczoru, jednak pamiętał o nim. Zapoznał się z książką Michel Loève'a na temat teorii prawdopodobieństwa pozwoliło mu zrealizować swoje zamierzenia. Miało to kluczowe znaczenie dla wyprowadzenia filtru Kalmana. Z dodatkowym założeniem o skończonej wymiarowości mógł wyprowadzić filtr Wienera co dało w efekcie to, co nazywamy dziś filtrem Kalmana. Przejście na postać zmiennych stanu uprościło matematyczne podstawy wyprowadzenia.

Kalman zaprezentował swoje nowe wyniki podczas rozmów z kilkoma uczelniami i laboratoriami badawczymi zanim opublikowano je drukiem. Jego idee spotkały się jednak z pewnym sceptycyzmem kolegów co zmusiło Kalmana do wybrania, do publikacji, czasopisma naukowego z zakresu inżynierii mechanicznej (zamiast ewentualnego czasopisma z zakresu inżynierii elektrycznej) bo, jak wyraził się podczas sympozjum w Los Angeles 17 kwietnia 1991 roku, Gdy ktoś boi się stąpać po zapadłym gruncie obwarowanym partykularnymi interesami najlepiej jeśli przejdzie bokiem. Jego drugi artykuł, który przedstawiał przypadek dla czasu ciągłego, został raz odrzucony bo – jak wyraził się jeden z osądzających – jeden z kroków w dowodzie nie może prawdopodobnie być zgodny z prawdą (w istocie jednak był zgodny z prawdą). Kalman uparcie prezentował swój filtr, i w innych miejscach spotykał się z coraz większą, natychmiastową akceptacją. Niedługo potem jego idea stała się podstawą dla wielu tematów badawczych na wielu uczelniach i przedmiotem prac doktorskich z zakresu inżynierii elektrycznej jakie powstawały w następnych latach.

Kalman spotkał się z ciepłym przyjęciem audytorium podczas prezentacji jego filtru w 1960 w centrum badawczym NASA (Ames Research Center of NASA) w Mountain View w Kalifornii, gdzie przybył z wizytą do Stanley F. Schmidt’a. Kalman opisał swoje ostatnie wyniki i Schmidt docenił jego potencjalne możliwości zastosowania do problemów jakie badano w Ames – do estymacji trajektorii i problemów sterowania w projekcie Apollo (planowanej misji na księżyc). Schmidt od razu rozpoczął pracę nad tym co stało się prawdopodobnie pierwszą pełną implementacją filtru Kalmana. Wkrótce stał się pomysłodawcą filtru, który dziś znany jest pod nazwą rozszerzonego filtru Kalmana. Był on od tamtej pory zawsze używany do większości nieliniowych aplikacji filtru Kalmana dla czasu rzeczywistego. Pełen entuzjazmu po swoim sukcesie z filtrem Kalmana, zabrał się za nawracanie innych, którzy zajmowali się podobnymi pracami. W początkach 1961 roku, Schmidt opisał swoje wyniki Richard’owi H. Battin’owi z MIT Instrumentation Laboratory (później zmieniło ono nazwę na Charles Stark Draper Laboratory). Battin używał już metod zmiennych stanu do projektowania i implementacji astronautycznych systemów naprowadzania i dzięki niemu filtr Kalmana, odpowiednio zaprojektowany i opracowany w Instrumentation Laboratory, stał się jedną z części systemu naprowadzania jaki montowano na statkach kosmicznych w programie Apollo. W połowie lat 60., dzięki staraniom Schmidt’a filtr Kalmana stał się częścią systemu nawigacji dla transportu powietrznego C5A, zbudowanego w firmie Northrup i zaprojektowanego przez Lockheed Aircraft Company. Filtr Kalmana zastosowano do problemu fuzji danych związanego z łączeniem danych z radaru z danymi sensorów bezwładnościowych tak by uzyskać ogólną estymatę trajektorii samolotu i do problemu odrzucania danych związanych z detekcją błędów egzogennych w danych pomiarowych. Od tego czasu filtr Kalmana stał się integralną częścią prawie każdego projektu pokładowego systemu estymacji trajektorii i sterowania nią.

Wiele z tego co osiągnięto od czasu wprowadzenia filtru Kalmana nie było by możliwe bez niego. W szczególności była to jedna z technologii, która umożliwiła nadejście epoki lotów kosmicznych. Precyzyjna i wydajna nawigacja statków kosmicznych w Układzie Słonecznym nie mogłaby być realizowana bez filtru Kalmana. Zasadnicze wykorzystanie filtracji Kalmana ma miejsce w systemach sterowania, przy nawigacji wszelkiego rodzaju pojazdów i przy predykcyjnym projektowaniu estymacji i sterowaniu systemów. Takie techniczne działania stały się możliwe dzięki filtrowi Kalmana.

Bibliografia[edytuj | edytuj kod]

  • Mohinder S. Grewal, Angus P. Andrews Kalman Filtering: Theory and Practice Using Matlab, John Wiley and Sons 2001, ISBN 0-471-39254-5

Zobacz też[edytuj | edytuj kod]

Linki zewnętrzne[edytuj | edytuj kod]