Integracja odczytów żyroskopu i akcelerometru [duplikat]

Możliwy duplikat:
połączenie danych żyroskopu i akcelerometru

Czytałem wiele artykułów na temat Kalman filters, ale wydaje się, że jest kilka dobrych publicznie dostępnych przykładów przejścia z papieru matematycznego do rzeczywistego kodu roboczego.

Mam system zawierający Trzyosiowy akcelerometr i pojedynczy żyroskop mierzący obrót wokół jednej z osi akcelerometru. System jest przeznaczony do trzymania przez człowieka, a większość czasu żyroskop będzie mierzył obrót wokół wektora grawitacji lub blisko niego. (Osoby pracujące w tej samej branży zapewne rozpoznają z tego, o czym mówię;)) zdaję sobie sprawę, że jest to niedokonane.

Wydaje się, że żyroskopy mają niemal stałe odchylenie, które jest nieco inne dla każdej instancji systemu. W jaki sposób mógłbym zakodować filtr, aby wykorzystać odczyty akcelerometru do kalibracji żyroskopu w momentach, gdy system jest przechylony, aby oś żyroskopu nie była zbieżna z grawitacji, a czy jest obracany wokół osi żyroskopu? Wydaje się, że powinno być wystarczająco dużo informacji, aby to zrobić, ale powiedziano mi, że nie ma i dlaczego miałaby być odpowiedź zbyt :)
Author: Community, 2008-09-21

6 answers

NBot, Robot wyważający Dwa Koła
Sporo informacji i linków o tym, jak ten autor postanowił rozwiązać problem równowagi dla swojego dwukołowego robota.

 3
Author: Louis Davis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-11 20:50:55

Wydaje się, że masz dwa (lub trzy) oddzielne problemy tutaj.

1. Nie rozumiesz filtrów Kalmana i / lub matematyki, która za nimi stoi. To będzie bardzo trudne do prawidłowego wdrożenia i korzystania z jednego.

2. Wydaje się, że nie rozumiesz podstaw fizyki związanych z tym problemem. (Podstawowa fizyka oznacza podstawową fizykę, a nie prostą fizykę, ponieważ nie jest prosta.)

Proponuję spróbować użyć znacznie prostszego integratora, takiego jak Runga-Kutta 4, dla których można znaleźć wiele książek z przykładami zarówno wdrożenia, jak i wykorzystania. To powinno wystarczyć na ten problem. (Jeśli klient określił Kalmana, zapytaj dlaczego.)

Co do tego, dlaczego problem jest ograniczony, wydaje mi się, że nie ma sposobu, aby zapewnić, że urządzenie jest utrzymywane w pionie i nie ma sposobu, aby zmierzyć rzeczywistą orientację. Zapomnij na chwilę o żyroskopie i załóż, że urządzenie nie może być obracane wokół osi pionowej. Masz trzy akcelerometry, przypuszczalnie do oszacowania pozycji w 3D. więc jeśli widzisz przyspieszenie w kierunku X, zwiększasz oszacowanie, gdzie jesteś w kierunku X. Podobnie, jeśli widzisz przyspieszenie w kierunku Z (które zakładam jest "w górę"), zwiększasz oszacowanie, gdzie jesteś w kierunku Z. Teraz lekko obróć urządzenie, powiedzmy o 30 stopni względem osi Y. Teraz, gdy urządzenie myśli, że przyspieszasz wzdłuż kierunku X, urządzenie faktycznie przyspiesza a nieco mniej niż podano w X i przyspiesza również w kierunku Z. Więc twoje oszacowanie pozycji jest błędne.

Rotacje są znacznie trudniejsze do zintegrowania (równania są bardziej "sztywne", wymagają krótszego kroku czasowego, aby zachować precyzję). Ale będą cierpieć podobne problemy z obliczaniem złych odpowiedzi, jeśli urządzenie jest przechylony (ponieważ urządzenie nie może powiedzieć, że jest przechylony). Pomyśli, że obrót wokół osi pionowej jest większy lub mniejszy od niego w rzeczywistości jest, ponieważ część obrotu jest faktycznie wokół innej osi (tak jak część przyspieszenia była wzdłuż innej osi).

Być może musisz zatrudnić konsultanta (Nie, Nie szukam pracy), który pomoże Ci w formułowaniu matematyki.

 6
Author: Mark T,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-21 12:18:35

Biorąc pod uwagę twoje zainteresowanie filtrem Kalmana, być może zamierzasz wzbogacić dane GPS o pomiary inercyjne. O twoim pytaniu:

" Jak mam zakodować filtr aby wykorzystać odczyty akcelerometru do skalibrować żyroskop w czasie, gdy układ jest przechylony, więc oś żyroskopu jest nie zderza się z grawitacją i jest obracanie wokół osi żyroskopu? Informatyka wydaje się, że powinno być wystarczająco informacje, aby to zrobić "

To brzmi jak / align = "left" / Zakładając, że wykonujesz kalibrację fabryczną i masz urządzenie na stanowisku, będziesz w stanie niezależnie zmierzyć wyrównanie. Następnie uruchom kod wyrównywania, który zapiszesz i wycofasz błąd odchylenia żyroskopu z różnicy między miarą a wyrównaniem skompresowanym żyroskopem.

Jeśli chcesz zaktualizować gyro drift w locie, będziesz potrzebował filtra Kalmana.

Jeśli chodzi o implementację to polecam Rozdział 7, GPS i inercyjny Integracja z Global Position System Theory and Applications vol 2 ma doskonałe tło na ten temat. Ma teorię i matematykę, ale nie ma kodu źródłowego.

 4
Author: Steve Roe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-01-18 21:18:31

Znalazłem dobre artykuły na temat wykorzystania akcelerometrów i żyroskopów w nawigacji na Ten blog . Część o filtrowaniu Kalmana jest nieco zamglona, ale wydaje się, że są próbki kodu.

Znajdziesz również ogólne zasoby dotyczące filtrowania Kalmana na http://academic.csuohio.edu/simond/publications.html . artykuł, o którym mowa w (8) jest dobrym, niezbyt strasznym wprowadzeniem do matematyki leżącej za filtrami Kalmana.

 3
Author: Kena,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-15 13:51:58

Pewien dżentelmen w Danii właśnie opublikował przykład wyprowadzenia filtra Kalmana do rozwiązania prawie dokładnie tego problemu.

 2
Author: moonshadow,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-10 18:50:21

Jeśli przypadkiem rozwijasz dla Propeller uController, to Parallax Object Exchange ma jakiś kod. Świetne pytanie; -)

 1
Author: Chris O,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-05-27 20:16:09