Proste demo

W końcu przyszedł czas na test algorytmów filtrujących, które stworzyłem na potrzeby mojego konkursowego projektu. Dane, które będę filtrował pochodzą z zarejestrowanego lotu motolotni Kasperwing. Pisałem o tym w jednym z poprzednich postów. W tym celu powstało małe demo, w którym zaimplementowałem takie funkcjonalności jak:

  • ładowanie danych z plików CSV,
  • wybór kolumny z pliku CSV,
  • wybór algorytmów filtrujących,
  • możliwość narysowania całki sygnału,
  • konfiguracja filtrów (na ten moment jeszcze nie działa, filtry są skonfigurowane na sztywno).

Filtering algorithms demo

Wiem, że layout nie powala na kolana ale przecież nie o to chodziło. Całość kodu znajduje się w moim konkursowym repozytorium na GitHubie.

Filtrujmy więc

Filtry testowałem na fragmencie rzeczywistych danych zarejestrowanych podczas prób w locie motolotni Kasperwing. W tym przypadku są to dane pochodzące z jednego z przyspieszeniomierzy.

Surowe dane

Surowe dane

Filtr FIR

Sygnał przefiltrowany filtrem FIR

Filtr AlphaBeta

Sygnał przefiltrowany filtrem AlphaBeta

Mądry filtr AlphaBeta – jednowymiarowy filtr Kalmana

O tym filtrze jeszcze nie pisałem. Okazało się, że odpowiednio zmodyfikowany filtr AlphaBeta staje się jednowymiarowym filtrem Kalmana. Modyfikacja ta polega na automatycznym, dynamicznym doborze współczynników alpha i beta na podstawie wariancji sygnału i szumów. Zainteresowanych odsyłam do mojego repozytorium i zachęcam do dyskusji 🙂

Filtracja sygnału jednowymiarowym filtrem Kalmana - test algorytmów

Podsumowanie

Może zastanawiasz się dlaczego tak dużo uwagi poświęcam zagadnieniu filtracji sygnałów. Przecież to konkurs dla programistów, nie dla naukowców! Owszem ale kod, który piszę ma bardzo naukowe podstawy i może potencjalnie przydać się niejednemu programiście tworzącemu przeróżne aplikacje. W kolejnych etapach konkursu stworzę algorytm INS i postaram się pokazać jak ważnym jego elementem jest dobrze dobrany filtr.

A propos ogarnąłem bardzo fajną bibliotekę w JS do rysowania chmur punktów. Dzięki temu będę mógł pokazać Wam w przyszłości efekty działania moich algorytmów w 3D. Poniżej macie zarejestrowany tor lotu motolotni Kasperwing na podstawie danych z GPSa 🙂

Wiem, że moje demo ma kilka niedociągnięć, że kod może pozostawiać wiele do życzenia. Chciałem jednak aby każdy mógł przetestować sobie moje algorytmy „od kopa” bez zbędnego kodzenia. Jeśli masz jakieś cenne uwagi na ten temat to pisz śmiało. Na pewno mi pomożesz.