Próbowałem kilku algorytmów, aby uzyskać nachylenie, przechylenie i odchylenie przy ciągłych liniowych przyspieszeniach i wibracjach (mniejszych niż 0,4 g, częstotliwości niższych niż 10 Hz). Żaden z nich nie daje dobrych wyników, ponieważ odczyty albo dryfują, albo zbytnio wpływają na nie przyspieszenia liniowe. Chcę osiągnąć, gdy przyspieszenie zewnętrzne jest mniejsze niż + -0,4 g, błąd skoku i przechylenia powinien być mniejszy niż + -1 stopni.
Wypróbowałem następujące algorytmy:
Algorytm Madgwicka . Gdy wzmocnienie Beta jest ustawione bardzo wysoko, zbieżność jest szybka, ale kąty są bardziej podatne na przyspieszenia liniowe. Zredukowałem go i zmniejszyłem błąd przy przyspieszeniach liniowych do + -0,5 stopnia. Jeśli jednak wibracja jest ciągła, odczyty będą dryfować i zebranie się do prawdziwych wartości zajmie wieczność. Ma to sens, ponieważ przy przyspieszeniach liniowych żyroskop jest bardziej zaufany, a obliczone kąty dryfują, gdy dryfuje integracja żyroskopu.
Algorytm Mahony'ego . W przeciwieństwie do Madgwicka, nie dryfuje wcale, niezależnie od tego, jakich wartości używam dla Ki i Kp. Jednak zawsze na to wpływ mają przyspieszenia liniowe. (Błędy większe niż + -6 stopni)
Tradycyjny filtr Kalmana . Wiele czasu poświęcono na dostrajanie tych ogromnych wektorów R i Q. Do tej pory ma taki sam występ jak Mahony.
Używam razor IMU . Wiem, że za pomocą tanich czujników nie można osiągnąć takiego samego wyniku jak ten .
Istnieje kilka innych opcji, takich jak UKF, ale zrozumienie lub wdrożenie jest trudne.
Wszelkie sugestie są mile widziane.
źródło
Odpowiedzi:
Po pierwsze, upewnij się, że rozumiesz tutaj dwa kluczowe punkty:
Określenie postawy na podstawie samych danych IMU jest z natury niejednoznaczne w obecności przyspieszenia liniowego . Bez dodatkowej wiedzy o naturze przyspieszeń zawsze będzie górna granica dokładności, którą można osiągnąć.
Dokładność jest ograniczona dryfem w zintegrowanych pomiarach żyroskopowych . Dzięki doskonałym danym żyroskopowym i integracji dane akcelerometru nie byłyby wcale potrzebne. Im bardziej zbliżasz się do perfekcji, tym bardziej możesz ignorować przyspieszenia.
Wybór algorytmu orientacji jest tutaj w dużej mierze nieistotny. Wszystkie działają na tej samej zasadzie: wykorzystując kierunek przyspieszenia grawitacyjnego do dryfu poprawiają zintegrowane dane żyroskopu, z pewną zmienną wagą między nimi. Jeśli próbowałeś dostroić parametry i nie osiągnąłeś pożądanych rezultatów, prawdopodobnie nie będziesz w stanie lepiej zastosować innego algorytmu.
Istnieją dwie rzeczy, które możesz zrobić.
Druga opcja jest trudna do omówienia, ponieważ zależy od szczegółów badanego ruchu. Istnieje kilka prostych sztuczek, takich jak odrzucanie lub wyważanie przyspieszeń poza określonym zakresem. Zasadniczo sprowadzają się one do modelowania przyspieszeń liniowych jako krótkich przypadków. Jeśli twój system jest w ciągłym ruchu, nie jest zbyt pomocny.
Istnieje jednak kilka rzeczy, które możesz zrobić, aby poprawić integrację z żyroskopem:
Masz rację, że używane czujniki nie są najwyższej dostępnej klasy. Można jednak uzyskać bardzo dobre wyniki z czujników konsumenckich, jeśli są wystarczająco dobrze scharakteryzowane i skalibrowane.
źródło