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

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.