Martwe liczenie z akcelerometrem i żyroskopem. Możliwy?

11

Mam 3-osiowy akcelerometr i 3-osiowy żyroskop. Zadanie polegało na opracowaniu martwego systemu rozliczeniowego przy użyciu tego sprzętu.

Zasadniczo potrzebuję, aby opracować kod do śledzenia pozycji w przestrzeni 3D płyty w czasie rzeczywistym. Więc jeśli zacznę od deski na stole i podniosę ją o 1 m w górę, powinienem być w stanie zobaczyć ten ruch na ekranie. Trzeba też wziąć pod uwagę rotacje, więc jeśli obrócę deskę do góry nogami w połowie tego samego ruchu, nadal powinien pokazywać ten sam wynik 1m w górę. To samo powinno dotyczyć każdego złożonego ruchu w ciągu kilku sekund.

Ignorując matematykę potrzebną do obliczania i obracania wektorów itp., Czy jest to w ogóle możliwe przy tak niedrogim urządzeniu? O ile wiem, nie będę w stanie usunąć grawitacji ze 100% precyzją, co oznacza, że ​​mój kąt względem ziemi będzie wyłączony, co oznacza, że ​​moje obroty wektorowe będą wyłączone, co prowadzi do nieprawidłowego pomiaru położenia.

Muszę też wziąć pod uwagę hałas z akcelerometru i odchylenie żyroskopowe.

Czy można to zrobić?

użytkownik41883
źródło
2
Można tego dokonać do dokładności dopuszczalnej przez czujniki. Błędy pozycji będą się kumulować w miarę upływu czasu. To, czy dokładność jest wystarczająca dla twojego projektu, zależy.
Wouter van Ooijen
1
Zaawansowane matematyki są tym, co umożliwi projekt. Musisz użyć czwartorzędów, filtra Kalmana i schematu ZUPT lub ZARU. Stamtąd możesz śledzić go dokładnie przez kilka sekund. Mówię z bezpośredniego doświadczenia.
Samuel
Mam cudowny cytat od Lorda Kelvina wiszący na ścianie mojego biura przez kilka dziesięcioleci: „Quaternions pochodziły z Hamiltona ... i były niezmieszonym złem dla tych, którzy ich w jakikolwiek sposób dotknęli. Wektor jest bezużytecznym przeżyciem ... i nigdy nie przydałby się jakiemukolwiek stworzeniu. ”
Scott Seidman
@ScottSeidman Quaternions nie są takie złe, jeśli myślisz o nich w kategoriach rotacji wokół wektorów jednostek. Następnie wystarczy tylko odrobina trygonometrii, aby przekonwertować na postać czwartorzędu.
JAB
@JAB, oczywiście oni (lub jakieś inne podejście) są konieczne, ponieważ rotacje nie dojeżdżają do pracy, co powoduje pewne interesujące niuanse w matematyce.
Scott Seidman

Odpowiedzi:

11

Odpowiedzi i komentarze, które otrzymujesz, są oczywiście doskonałe, ale mogę dodać trochę koloru.

Jak na swoją wartość, nasz system sensoryczno-nerwowy korzysta z tych samych narzędzi i nie zawsze otrzymuje właściwą odpowiedź! Mamy akcelerometry 3D (narządy otolitowe) i „żyroskopy 3D” (velocitomery kątowe, kanały półkoliste), a jednak cierpimy z powodu różnego rodzaju złudzeń, gdy system nie jest w stanie uzyskać prawidłowej „odpowiedzi”, na przykład iluzji windy i złudzenie okulograwiczne. Często te awarie występują podczas przyspieszeń liniowych niskiej częstotliwości, które są trudne do odróżnienia od grawitacji. Był czas, kiedy piloci nurkowali do oceanu podczas startu katapulty na lotniskowcach z powodu silnej percepcji skoku wynikającej z przyspieszenia niskiej częstotliwości związanego z startem, dopóki protokoły szkoleniowe nie nauczyły ich ignorowania tych spostrzeżeń.

To prawda, że ​​czujniki fizjologiczne mają inne wartości odcięcia częstotliwości i poziomy szumów niż czujniki MEMS, ale mamy też ogromną sieć neuronową rzuconą na problem - choć niewielką przeszkodę ewolucyjną, aby rozwiązać problem poprawnie przy ekstremalnych niskich częstotliwościach, o ile wystrzelenie katapulty jest dość rzadkie ;-).

Wyobraźcie sobie ten zdrowy rozsądek problem „martwego liczenia”, którego wielu doświadczyło, i myślę, że przekonacie się, jak to przenosi się do świata MEMS. Wsiadasz do odrzutowca, startujesz w Ameryce Północnej, przyspieszasz do prędkości przelotowej, przepływasz ocean, zwalniasz i lądujesz w Europie. Nawet usuwając z problemu niejednoznaczności translacji przechyłu i zakładając zerową rotację, bardzo mało byłoby nadziei na rzeczywistą implementację podwójnej integracji profili przyspieszenia, uzyskując profil pozycji w dowolnym miejscu wystarczająco dokładnym, aby powiedzieć, że dotarłeś do Europy . Nawet jeśli miałeś bardzo dokładny 6-osiowy żyroskop / pakiet akcelerometru, który leżał na twoich kolanach podczas podróży, miałoby to również swoje problemy.

To jedna skrajność. Istnieje wiele dowodów sugerujących, że w codziennych zachowaniach zwierzęta przyjmują proste założenie, że wykrywane przyspieszenia niskiej częstotliwości są prawdopodobnie spowodowane reorientacją względem grawitacji. Kombinacja żyroskopów i akcelerometrów, które mają szersze odpowiedzi częstotliwościowe niż nasze ucho wewnętrzne, może oczywiście rozwiązać problem znacznie lepiej, ale nadal będą miały skrajne problemy ze względu na poziom szumu, progi i tym podobne.

Tak więc, w przypadku krótkich epok z nietrywialnymi przyspieszeniami, nieumiejętne liczenie przy pomocy odpowiedniego oprzyrządowania nie jest tak dużym problemem. Na dłuższą metę, przy małych przyspieszeniach i przyspieszeniach o niskiej częstotliwości, liczenie martwe jest dużym problemem. W każdej sytuacji musisz dowiedzieć się, gdzie w tym spektrum leży twój konkretny problem i jak dokładne są twoje potrzeby polegania na rachunkach, aby ustalić, czy najlepsze, co możesz zrobić, jest wystarczająco dobre. Nazywamy to inżynierią procesów.

Scott Seidman
źródło
Dzięki za tę pouczającą odpowiedź. Zastanawiam się jednak nad kilkoma rzeczami: 1) co rozumiesz przez przyspieszenie niskiej częstotliwości? 2) Jeśli problem zostałby zredukowany z położenia 3D do przesunięcia bocznego (zignoruj ​​Z), czy to jest łatwiejsze? oraz 3) Co powiesz na powolny ruch w wodzie morskiej, gdzie działanie grawitacji jest zmniejszone? Doceniamy wszelkie wskazówki do czytania materiałów na temat tych obliczeń.
achennu
W rzeczywistości stare systemy nawigacji międzygwiezdnej byłyby dokładne z dokładnością do kilku mil po długim locie. Musiały być bardzo dokładne. (Mieszkali w dość dużym pudełku.) Technologia została opracowana w latach 50. XX wieku, aby poprowadzić ICBM.
Tuntable,
9

Główne problemy z martwym rachunkiem, które znalazłem podczas robienia starszego projektu podobnego do twojego, to to, że akcelerometr mierzy tylko przyspieszenie. Musisz raz zintegrować, aby uzyskać prędkość plus stałą C. Następnie musisz ponownie zintegrować, aby uzyskać pozycję + Cx + D. Oznacza to, że po obliczeniu pozycji z danych akcelerometru kończy się przesunięciem, ale masz również błąd, który rośnie liniowo z czasem. W przypadku czujnika MEM, którego użyłem, w ciągu 1 sekundy wyliczył, że jest co najmniej metr od miejsca, w którym faktycznie był. Aby było to przydatne, zazwyczaj trzeba bardzo często zerować błędy, aby uniknąć gromadzenia się błędów. Niektóre projekty są w stanie to zrobić, ale wiele nie.

Akcelerometry dają ładny wektor grawitacyjny, który z czasem nie rośnie, a kompasy elektroniczne podają orientację bez kumulacji błędu, ale ogólnie problem polegający na liczeniu martwych nie został rozwiązany dzięki tonom pieniędzy wydanym przez marynarkę wojenną na tonę czujników na statkach . Są lepsze niż to, co możesz zrobić, ale ostatnio czytałem, że wciąż podróżują 1000 km. To naprawdę całkiem dobre do liczenia martwych, ale bez ich wyposażenia nie będziesz w stanie osiągnąć niczego bliskiego.

horta
źródło
Z pewnością błąd jest kwadratem odległości / czasu? Błąd prędkości będzie liniowy, więc przemieszczenie kwadratu. Interesujące, a nie poruszone, jest to, jak dobre są te tanie akceleratory.
Tuntable,
@Tuntable Mam nadzieję, że masz akcelerometr, który nie jest tak zły, że masz znaczące stałe przesunięcie przyspieszenia. Jeśli masz taki, który jest taki zły, to tak, skończysz z kwadratowym błędem z odległością / czasem.
horta
7

Będziesz miał również stronniczość w akcelerometrach i hałas w żyroskopach, aby sobie z tym poradzić.

Grawitacja nie powinna wprowadzać błędów w pomiarach kąta; przeciwnie, wektor grawitacji zapewnia „bezwzględne odniesienie”, które pomaga wyzerować skumulowane odchylenie kątów „skoku” i „przechylenia”.

Tak, to, co chcesz zrobić, jest możliwe, ale niska wydajność tanich urządzeń MEMS oznacza, że ​​błędy będą się kumulować szybko - zarówno zmiany nastawienia, jak i „losowy spacer” generowany przez hałas (zarówno w akcelerometrach, jak i żyroskopach prędkości) spowoduje, że wyniki odejdą od rzeczywistości w ciągu kilku sekund lub minut.

Aby to naprawić, musisz zainstalować w systemie dodatkowe czujniki, które nie powodują tego rodzaju błędów. Jak wspomniałem powyżej, użycie kąta wektora grawitacji jest jednym ze sposobów na skorygowanie niektórych błędów żyroskopowych, ale musisz być świadomy, kiedy masz dokładny pomiar grawitacji (systemy nie są w inny sposób przyspieszane) przed użyciem to.

Innym sposobem korekcji dryftu kątowego jest zastosowanie magnetometru do pomiaru pola magnetycznego Ziemi. Magnetometry mają stosunkowo duże błędy, ale nie cierpią z powodu długotrwałego dryfu.

Korekta błędów pozycji utworzonych przez składowe znoszenia odczytów akcelerometru wymaga pewnego rodzaju bezwzględnego odniesienia do pozycji. GPS jest powszechnie używany (jeśli jest dostępny), ale możesz również używać innych czujników, takich jak barometry (wysokości), odometry (jeśli masz koła na ziemi), czujniki zasięgu ultradźwiękowe lub podczerwieni, a nawet czujniki obrazu.

Niezależnie od tego, jakiej kombinacji czujników używasz w końcu, wszystkie te dane muszą zostać „połączone” w spójny model oprogramowania stanu systemu, który obejmuje nie tylko bieżącą pozycję i nastawienie, ale także szacunki bieżącego obciążenia , współczynnik skali i poziomy hałasu samych czujników. Powszechnym podejściem jest stosowanie filtra Kalmana, który można wykazać w celu zapewnienia „optymalnej” oceny (tj. Najlepszej dostępnej oceny) stanu systemu dla danego zestawu odczytów czujnika.

Dave Tweed
źródło
4

Krótka odpowiedź brzmi „nie do końca”. Długa odpowiedź jest taka, że ​​można sformułować takie stwierdzenia, jak: „Biorąc pod uwagę moje odczyty żyroskopu, jestem w 95% pewien, że urządzenie zostało obrócone od 28 stopni do 32 stopni od ostatniego odczytu”.

reθ(t)ret=r(t)
re2)p(t)ret2)=r(t)
r(t)t

Te „hałaśliwe” równania różniczkowe zwykle noszą nazwę „stochastyczne równania różniczkowe”, w których zakłada się, że hałas jest białym szumem generowanym przez losowy spacer. Matematyka może być uogólniona na inne sytuacje, w których hałas nie pochodzi z przypadkowego spaceru. W każdym konkretnym przypadku hałas będzie miał rozkład, który można ustalić eksperymentalnie, którego parametry będą zależeć od konkretnego urządzenia i zastosowania. Ze względu na akumulację hałasu, bez względu na to, co robisz, aby uzyskać dobre oszacowania w stosunkowo długim okresie czasu, zawsze będziesz musiał okresowo kalibrować do znanej pozycji. Przykładami stałych odniesień są bazy domowe, odczyty kompasu i grawitacja.

Jeśli zdecydujesz się na tę drogę, musisz zdecydować o kilku sprawach:

  • Jaki jest dopuszczalny poziom błędu? Czy chcesz mieć 95% pewności, że jest w granicach jednego stopnia po 2 sekundach, czy chcesz mieć 80% pewności, że jest w 5 stopniach po 2 sekundach?

  • Wykonaj kilka odczytów z żyroskopu / akcelerometru. Można to wykorzystać do obliczenia empirycznego rozkładu hałasu, który szacuje rzeczywisty hałas. Użyj tego do rozwiązania hałaśliwego równania różniczkowego i obliczenia przedziałów ufności.

  • Z powyższego powinno być jasne, w jaki sposób dokładność odczytu (wariancja) z arkusza danych wpływa na rozwiązanie twojego hałaśliwego równania różniczkowego. Będzie również jasne, jak wpływa to na przedziały ufności.

  • Wybierz urządzenie z akceptowalnymi parametrami, aby uzyskać pożądane przedziały ufności w pierwszym kroku. Może się okazać, że parametry dokładności urządzenia, które chcesz / potrzebujesz, nie pasują do dostępnych i / lub twojego budżetu. Z drugiej strony możesz być zaskoczony wynikami uzyskanymi dla tańszych urządzeń.

SomeEE
źródło
Problem (lub jeden problem) polega na tym, że akcelerometr jest wrażliwy na więcej niż p (t). Jest także wrażliwy na zmiany w theta wokół niektórych osi.
Scott Seidman
Zgadzam się. Dlatego zawsze najlepiej jest używać wektorów podczas przeprowadzania analizy układu wieloparametrowego. Uogólnienie z procesów stochastycznych o wartości wektorowej z przypadku pojedynczej zmiennej jest trywialne w porównaniu do reszty zagadnień.
SomeEE