Skocz do zawartości

Filtr Kalmana od teorii do praktyki - #3 - Testy na STM32


Komentator

Pomocna odpowiedź

html_mig_img
W poprzedniej części wyprowadziłem model stanowy dla systemu określającego położenie kątowe robota na podstawie danych z akcelerometru i żyroskopu. Zaprojektowałem filtr Kalmana dla tego modelu i sprawdziłem jego działanie z rzeczywistymi danymi pomiarowymi.Teraz zajmę się przeniesieniem algorytmu na środowisko docelowe, czyli na 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.

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

Mam kilka uwag.

1. Czy bezpieczna jest ta linia? y[0] = atan(acc_x/acc_y)*180/M_PI Co jeśli acc_y będzie równe 0?

2. Nigdzie nie widzę użycia dwuelementowej tablicy CP? W tej linijce nie ma błędu? matrix_1x2_mul_2x1(C, C, CPCT); Z nazwy funkcji wynika, że mnożymy macierz 1x2 i macierz 2x1 a jako parametry są dwie takie same tablice C? Nie powinno być C*CP?

3. Czy nie lepiej byłoby skorzystać z tablic dwuwymiarowych, kod od razu był by dużo czytelniejszy.

Link do komentarza
Share on other sites

1. Faktycznie lepiej zabezpieczyć się przed dzieleniem przez 0. Można dodać warunki, że dla acc_x ujemnego i acc_y = 0, y[0] = -90, dla acc_x dodatniego i acc_y = 0, y[0] = 90 i dla acc_x = 0, acc_y = 0, y = 0.

2. Powinno być CP * C - macierz CP jako pierwsza, chociaż w tym przypadku zamieniona kolejność da taki sam wynik.

3. Jak komuś wygodniej to oczywiście może użyć tablic dwuwymiarowych. Trzeba tylko pamiętać, żeby dodać transpozycje dla macierzy, w których jeden z wymiarów jest równy 1. W aktualnym kodzie korzystam z faktu, że macierz Nx1 i 1xN jest przechowywana w ten sam sposób.

Link do komentarza
Share on other sites

Mam jeszcze jedno pytanie, dlaczego dane w kolumnie est_angle w pliku data3.txt są aż tak duże? Wrzuciłem ten filtr do Visual Studio i dla danych wejściowych acc_x, acc_y, gyro_z dane wyjściowe są 100 razy mniejsze niż te w kolumnie est_angle.

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

Odpowiedź znajdziesz w pliku logger.c - wynik przed wysłaniem przez usart jest mnożony przez 100, żeby uwzględnić 2 miejsca po przecinku.

Link do komentarza
Share on other sites

Witam mam serdeczna prośbę czy mógłby ktoś krok po korku ze screenami kolejnych działań pokazać jak uruchomić ten project w eclipse.

Otworzenie, zaimportowanie i kompilacja.

Ni jak mi nie wychodzi ciągle jakieś błedy

"The selection cannot be launched, and there are n recent launches"

będe wdzieczny za każda pomoc

ewentualnie kontakt do przesłania instrukcji moniu30@wp.pl

Link do komentarza
Share on other sites

Witam

Zastanawia mnie ten kawałek:

matrix_2x1_mul_1x2(KS, K, KSKT);

matrix_2x2_sub_2x2(P_pri, KSKT, P_post);

Macierz KSKT w inicjacji jest 2 elementowa, wydaje mi się że powinna posiadać 4 elementy.

Przykład świetnie działa, podziękowali

Pozdrawiam

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.