A miało być tak pięknie. Wygląda na to, że muszę zmienić projekt. Okazuje się, że czujniki MEMS montowane w telefonach są bardzo marnej jakości i ich dokładność nie jest wystarczająca do wykorzystania w nawigacji inercyjnej. Nawet wysokiej klasy systemy INS oparte na bardzo dobrych czujnikach są obarczone sporym błędem więc czego innego można było się spodziewać…
Dokładność
Żyroskopy i akcelerometry są podstawowymi czujnikami wykorzystywanymi w nawigacji bezwładnościowej. Ich dokładność ma kolosalny wpływ na ostateczną precyzję obliczeń położenia.
Żyroskopy
Podstawową miarą błędu żyroskopów jest dryf czyli wielkość opisująca fałszywą zmianę ich wskazań w czasie. Niestety czujniki na pokładach telefonów należą do tej najgorszej klasy więc o choćby minimalnie zadowalającej dokładności pomiarów możemy zapomnieć.
Jak widać na powyższym diagramie, ich dryf może przekraczać nawet 100 °/h czyli pond 1.5 °/min (sic!). Za moment opiszę jakie są tego konsekwencje.
Akcelerometry
Jeżeli chodzi o przyspieszeniomierze sprawa ma się trochę inaczej. Spójrz na poniższy wykres.
Przedstawia on pomiar przyspieszeń leżącego w spoczynku na biurku telefonu w jednym z trzech kanałów akcelerometru. Jeden obraz mówi tutaj więcej niż tysiące słów.
Na uwagę zasługuje również fakt, że pomiary nie oscylują nawet w okolicach zera. Jest to spowodowane wpływem grawitacji. Tutaj właśnie w grę wchodzą pomiary z żyroskopów, które pomagają określić i wyeliminować jej wpływ na pomiar przyspieszeń we wszystkich kanałach akcelerometru.
W konsekwencji telefon leżący na biurku zgodnie z obliczeniami ciągle się porusza. Nawet kilkadziesiąt centymetrów w ciągu sekundy!
Co teraz?
Muszę się zastanowić nad nowym projektem. Nie mogę się przecież poddać. Mam czas do 12 marca.
Nie traktuję tej sytuacji w kategorii porażki. Jednym z moich założeń było w końcu zdobywanie wiedzy. Nie wykluczam, że wrócę kiedyś do tego tematu.
15 marca 2017 at 20:48
Problem z dryftem żyroskopu i zaszumieniem akcelerometru nie jest nowy i w wielu zastosowaniach ludzie sobie z tym radzą bez używania części za grube miliony. Rozwiązaniem jest zastosowanie filtru Kalmana: http://forbot.pl/blog/artykuly/programowanie/filtr-kalmana-teorii-praktyki-1-id2855
Zaszumienie akcelerometru to typ zakłócenia, z którym filtr Kalmana radzi sobie najlepiej. Wystarczy, że dobierzesz odpowiednio wariancje szumów. Aby zniwelować wpływ dryftu żyroskopu, należy go dodać jako oddzielna zmienna stanu do modelu układu i estymować tak samo jak inne zmienne stanu.
15 marca 2017 at 22:20
Dzięki za link. Na pewno się przyda. O filtrze Kalmana słyszałem już na studiach ale pobieżnie i teoretycznie. Prawdę mówiąc niewiele z tego zrozumiałem. Niebawem mam zamiar napisać kilka postów o filtrach i Kalman miał być jednym z nich.