ATNEL tech-forum https://forum.atnel.pl/ |
|
Całkowana prędkość wraca do zera. https://forum.atnel.pl/topic20936.html |
Strona 1 z 1 |
Autor: | resonator [ 1 lip 2018, o 21:11 ] |
Tytuł: | Całkowana prędkość wraca do zera. |
Cześć. Mam taki problem, że całkuje sobie prędkość kątową z żyroskopu żeby otrzymać kąt obrotu. O ile całkowanie prędkości ujemnej wychodzi poprawnie, tzn po obrocie i zatrzymaniu żyra scałkowany kąt jest poprawny i stoi w miejscu. To przy obrocie w drugą stronę kiedy prędkość jest dodatnia, po zatrzymaniu żyroskopu kąt natychmiast zaczyna spadać aż do zera. Zejście do zera z 90stopni zajmuje gdzieś ok. 10 sekund. Ja już nie wiem gdzie może być błąd, rozebrałem kod, podpatrywałem na sucho wartości prędkości i wydawały się być ok. Może Wy coś doradzicie z góry dziękuję. język c Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod. Potem tylko wyrzucam ang_z na seriala z częstotliwością 10Hz |
Autor: | krish [ 2 lip 2018, o 20:18 ] |
Tytuł: | Re: Całkowana prędkość wraca do zera. |
Mnożysz zmienne int16 z double i podstawiasz wynik do int16, co niekoniecznie może dawać wynik, którego oczekujesz. |
Autor: | Alcybiades [ 3 lip 2018, o 09:02 ] |
Tytuł: | Re: Całkowana prędkość wraca do zera. |
J.w kolega już opisał. Jeżeli chcesz liczyć na AVRku przesuń sobie przecinek i daj nawet uint32. By ci się zmieściły liczby z wynikami. W przypadku 8bitowych ciężko jest ogarnąć na nich wydajne liczenie zmiennoprzecinkowych. Po za tym zawsze następują błędy obliczeń. W przypadku jak przesuniesz przecinek i będziesz operować na dużych liczbach bez wartości ułamkowych, błędy będą dużo mniejsze, a i same obliczenia szybsze. Sama biblioteka zmiennoprzecinkowa zajmowała z tego co pamiętam ok 2kb na AVRku. Nie mówiąc już o wykorzystaniu sporych zasobów ramu do ich obliczania. |
Strona 1 z 1 | Strefa czasowa: UTC + 1 |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |