Komentator Napisano Styczeń 27, 2015 Udostępnij Napisano Styczeń 27, 2015 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. 1 Cytuj Link do komentarza Share on other sites More sharing options...
r_bot Marzec 4, 2015 Udostępnij Marzec 4, 2015 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. Cytuj Link do komentarza Share on other sites More sharing options...
GAndaLF Marzec 5, 2015 Udostępnij Marzec 5, 2015 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. Cytuj Link do komentarza Share on other sites More sharing options...
r_bot Marzec 5, 2015 Udostępnij Marzec 5, 2015 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. Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. 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
GAndaLF Marzec 5, 2015 Udostępnij Marzec 5, 2015 Odpowiedź znajdziesz w pliku logger.c - wynik przed wysłaniem przez usart jest mnożony przez 100, żeby uwzględnić 2 miejsca po przecinku. Cytuj Link do komentarza Share on other sites More sharing options...
Daniel_Wit Maj 18, 2015 Udostępnij Maj 18, 2015 Tutaj podobny projekt, warto również zajrzeć. https://github.com/TKJElectronics/KalmanFilter Cytuj Link do komentarza Share on other sites More sharing options...
moniu30 Sierpień 3, 2017 Udostępnij Sierpień 3, 2017 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 Cytuj Link do komentarza Share on other sites More sharing options...
GAndaLF Sierpień 6, 2017 Udostępnij Sierpień 6, 2017 Konfigurację Eclipse na STM32 opisałem kiedyś na swoim blogu: http://ucgosu.pl/2017/02/uruchomienie-szablonu-projektu-stm32-eclipse/ http://ucgosu.pl/2017/02/szablon-projektu-stm32/ 1 Cytuj Link do komentarza Share on other sites More sharing options...
szyss Marzec 13, 2018 Udostępnij Marzec 13, 2018 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 Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!