Skocz do zawartości

Filtr Kalmana od teorii do praktyki - #1


Komentator

Pomocna odpowiedź

html_mig_img
W niniejszej serii artykułów mam zamiar zająć się filtrami Kalmana. Zacznę od niezbędnej dawki teorii, by przejść do przykładów praktycznych.Najpierw na podstawie rzeczywistych danych pomiarowych z czujnika zaprojektujemy filtr w Matlabie, a potem przeniesiemy implementację na mikrokontroler STM32.

UWAGA, to tylko wstęp! Dalsza część artykułu dostępna jest na blogu.

Przeczytaj całość »

Poniżej znajdują się komentarze powiązane z tym wpisem.

Link do komentarza
Share on other sites

Bobby, dzięki za materiał uzupełniający 🙂

Pozostałych zachęcam do komentowania czy artykuł jest dla Was ciekawy i zrozumiały. Jest to dość trudny tekst i chciałbym wiedzieć, czy warto zajmować się takimi tematami w przyszłości.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

Polećcie coś do przeczytania gdzie znajdę odpowiedź jak dobrać macierze A, C, V i W - w zależności od ZMIENNYCH STANU ???. Czytałem w wielu publikacjach, że jest zapis macierzowy o określonym rozmiarze i zadanych wartościach ale brakuje mi informacji jak się je dobiera w zależności zmiennych stanu OBIEKTU który generuje oscylacje.

Link do komentarza
Share on other sites

A i C określa Ci twój system - jednym słowem musisz nauczyć się modelować systemy za pomocą state-space

a V i W to zakłocenia procesowe i pomiarowe. Zarówno jedne jak i drugie nie muszą zawsze być obecne. No i ich rozmiary również wynikają z tego gdzie co i jak się zakłóca.

Link do komentarza
Share on other sites

admunt1

Jak mogą wyglądać macierze A, C, V, W dla nieliniowego filtru Kalmana ?

Nie sprowadzisz modelu do postaci równania stanu, jeżeli model jest nieliniowy. Cały myk polega na tym, aby zlinearyzować go wokół jakiegoś punktu pracy.

Link do komentarza
Share on other sites

Dla modelu nieliniowego stosujesz EKF. Macierz A tworzysz z pochodnych kolejnych równań stanu przez kolejne zmienne stanu, czyli dostajesz [df_1/dx_1 ... df_1/dx_n; ... df_n/dx_1 ... df_n/dx_n]. Macierz B tworzysz z pochodnych kolejnych równań stanu przez kolejne wejścia i dostajesz [df_1/du_1 ... df_1/du_n; ... df_n/du_1 ... df_n/du_n], a macierz C tworzysz z pochodnych równań wyjścia przez kolejne zmienne stanu, czyli [dg_1/dx_1 ... dg_1/dx_n; ... dg_n/dx_1 ... dg_n/dx_n]. Nowe wartości poszczególnych macierzy liczysz w każdej iteracji algorytmu i pod x_1 - x_6 podstawiasz aktualne estymacje zmiennych stanu.

  • Lubię! 1
Link do komentarza
Share on other sites

Co zmieni się w programie jeśli zmienią się rozmiary macierzy ?

Przykładowo w kolejności wiersz/kolumna: A(6x6); C(3x6); P0(6x6); x0(6x1)

Mam na uwadze linijki kodu jak:

% aktualizacja czas
xpri = A*xpost;
Ppri = A*Ppost*A' + V;

% aktualizacja pomiarow
eps = Y(i) - C*xpri;
S = C*Ppri*C' + W;
K = Ppri*C'*S^(-1);
xpost = xpri + K*eps;
Ppost = Ppri - K*S*K';

Co trzeba zmienić w xpri, xpost, Ppri itp. ???

Link do komentarza
Share on other sites

http://pl.wikipedia.org/wiki/Mno%C5%BCenie_macierzy

Musisz dobrać rozmiary poszczególnych macierzy tak, żeby ilość wierszy w pierwszej macierzy odpowiadała ilości kolumn w drugiej i vice versa. Jeżeli nie pasują ci rozmiary, użyj debuga i w miejscu gdzie program się wywala, wypisz na konsolę zawartość poszczególnych macierzy z mnożenia. W ten sposób sprawdzisz jak musisz pozmieniać rozmiary.

Link do komentarza
Share on other sites

Z pomocą GAndaLFa wypróbowałem filtr Kalmana dla różnych układów generujących szum, oscylacje, zakłócenia o charakterze nieliniowym i nieokresowym.

Posłużyłem się następującym równaniem, generującym oscylacje:

Model przedstawia zmodyfikowane równanie Vander Pola, używane do opisu drgań lampy elektronowej.

Widzimy , że jest to układ bez sygnału wymuszającego tzn. B=0, wzbudzany niezerowymi warunkami początkowymi tzn. x(0), y(0), z(0) ≠0.

Wektor równania stanu zapiszemy jako:

Równanie stanu przyjmuje postać:

Macierz stanu A(6x6) układu dla nieliniowego filtru Kalmana składa się z pochodnych kolejnych równań stanu. Dla uproszczenia przyjęto zerowy punkt pracy tzn. x1(0)=x2(0)=x3(0)=x4(0)=x5(0)=x6(0)=0;

Macierz stanu A ma postać:

Macierz wymuszeń B(6x1), ze względu na brak sygnału wymuszającego przyjmuje zerowe wartości:

Wektor równania wyjść, ma postać:

Zatem równanie wyjść, opiszemy jak:

Macierz wyjścia C układu dla nieliniowego filtru Kalmana – równania składa się z pochodnych kolejnych równań wyjść:

Macierz przenoszenia przyjęto D=0

Przyjęto warunki początkowe o następujących wartościach:

Dla odchylenia standardowego 10, przyjęto doświadczalnie kolejno macierze kowariancji szumów i procesu:

Poniżej zamieszczam wynik estymacji nieliniowego filtra Kalmana – przebiegi czasowe x(t), y(t), z(t):

Link do komentarza
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.