Skocz do zawartości

Filtracja wyników z żyroskopu Kalmanem


Filippo9669

Pomocna odpowiedź

Cześć, 

mam za zadanie odszumić Kalmanem wyniki otrzymane z żyroskopu oraz akcelerometru. Nie jest to pomiar jednej, stałej wartości, lecz zmieniającej się w sposób (pseudo)losowy i w związku z tym mam problem z dobraniem macierzy A dla równania stanu x(k+1) = A*x(k). Na potrzeby sprawdzenia, czy kod w ogóle działa, przyjąłem A jako macierz jednostkową, co generuje całkiem sensowne wyniki, jednak zastanawiam się, jak inaczej - poprawnie - możnaby do tego podejść. 

Pozdrawiam i z góry dziękuję za pomoc,

Filip

Link do komentarza
Share on other sites

@Filippo9669, witam na forum!

Jeśli chodzi o filtr Kalmana to więcej na jego temat (od strony praktycznej) znajdziesz w tej serii artykułów: Filtr Kalmana od teorii do praktyki – #1 ciekawa lekturą może być jeszcze ten artykuł: Filtr Kalmana w praktyce – 3 przykłady z kodami!. Jeśli chodzi o same zagadnienia filtrowania danych z żyroskopu w praktyce to sprawdź jeszcze tę serię: Filtr Alfa – Beta od teorii do praktyki. Wiem, że to nie jest bezpośrednia odpowiedź na Twoje pytanie, ale linkuję te artykuły, bo może ich nie widziałeś, a na pewno mogą pomóc 🙂

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

Nie sprecyzowałeś dokładnie co właściwie chcesz zrobić.

Dnia 22.08.2018 o 14:07, Filippo9669 napisał:

mam za zadanie odszumić Kalmanem wyniki otrzymane z żyroskopu oraz akcelerometru

To trochę za mało informacji. Jakie dokładnie wartości fizyczne mierzysz? Czy chcesz tylko odszumić pomiary z każdego kanału, czy zrobić fuzję danych z obu sensorów w celu zwiększenia dokładności? Czy chodzi ci tylko o szum, czy np. dryft też? Czy sensor stoi na biurku i działa na niego tylko grawitacja, czy się porusza? Pytań jest sporo, wszystkie jakoś wpływają na model układu.

Dnia 22.08.2018 o 14:07, Filippo9669 napisał:

Nie jest to pomiar jednej, stałej wartości, lecz zmieniającej się w sposób (pseudo)losowy i w związku z tym mam problem z dobraniem macierzy A dla równania stanu x(k+1) = A*x(k)

Czyli jest to pomiar jednej losowej wartości, czy wielu losowych wartości? Filtr Kalmana z definicji służy właśnie do estymowania wartości zmiennych losowych obarczonych białym szumem więc to akurat nie powinien być problem.

W jednym z artykułów wspomnianych przez Trekera (https://forbot.pl/blog/filtr-kalmana-od-teorii-praktyki-2-id3885) jest właśnie poruszane zagadnienie odczytów z akcelerometru i żyroskopu. Czym różni się twój przypadek od tego z artykułu?

Dnia 22.08.2018 o 14:07, Filippo9669 napisał:

Na potrzeby sprawdzenia, czy kod w ogóle działa, przyjąłem A jako macierz jednostkową, co generuje całkiem sensowne wyniki

W ten sposób możesz sprawdzić, czy kod się kompiluje i odpala na procku, ale jeżeli model obiektu zupełnie mija się z prawdą, wyniki będą zupełnie z księżyca i tak naprawdę nie dostaniesz odpowiedzi na pytanie, czy kod właściwie działa. Co więcej przy strojeniu Kalmana możesz napotkać wiele subtelnych błędów np. z czasem próbkowania, wyborem stanu początkowego, czy doborem macierzy szumów. Żeby je rozwiązać, trzeba trochę podziałać metodą prób i błędów, ale niezbędne jest też zrozumienie teorii chociaż na tyle, żeby wiedzieć jaki dana zmiana będzie mieć spodziewany wpływ.

  • Lubię! 1
  • Pomogłeś! 1
Link do komentarza
Share on other sites

(edytowany)
Dnia 25.08.2018 o 18:54, GAndaLF napisał:

Jakie dokładnie wartości fizyczne mierzysz?

Kąt pochylenia i przechylenia.

Dnia 25.08.2018 o 18:54, GAndaLF napisał:

Czy chcesz tylko odszumić pomiary z każdego kanału, czy zrobić fuzję danych z obu sensorów w celu zwiększenia dokładności? Czy chodzi ci tylko o szum, czy np. dryft też? Czy sensor stoi na biurku i działa na niego tylko grawitacja, czy się porusza? Pytań jest sporo, wszystkie jakoś wpływają na model układu.

Tylko szum. Bez fuzji danych. Nie wiem, co z sensorem, dostałem gotowe dane pomiarowe, nic o nich nie wiem.

Dnia 25.08.2018 o 18:54, GAndaLF napisał:

Czym różni się twój przypadek od tego z artykułu?

Teraz się temu przyjrzałem i faktycznie, nie wiem dlaczego nie zwróciłem na to uwagi, że pozbywając się dryftu owa macierz A redukuje się do macierzy jednostkowej, czyli tak, jak w moim przypadku.

Dnia 25.08.2018 o 18:54, GAndaLF napisał:

W ten sposób możesz sprawdzić, czy kod się kompiluje i odpala na procku, ale jeżeli model obiektu zupełnie mija się z prawdą, wyniki będą zupełnie z księżyca i tak naprawdę nie dostaniesz odpowiedzi na pytanie, czy kod właściwie działa.

Zdaję sobie z tego sprawę, dlatego piszę tylko i wyłącznie o odczuciach. Związek zmian wartości macierzy kowariancji ze zmianami w otrzymanym sygnale również zdaje się to potwierdzać.

Dziękuję Ci bardzo!

Przechwytywanie.JPG

Edytowano przez Filippo9669
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • 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.