Łączenie filtrów Kalmana

9

Mój zespół buduje robota do autonomicznej nawigacji w środowisku zewnętrznym. Niedawno dostaliśmy nowy zintegrowany czujnik IMU / GPS, który najwyraźniej ma rozszerzone filtrowanie Kalmana na chipie. Daje prędkość, przechylenie i odchylenie, północ, wschód i dół, a także szerokość i długość geograficzną.

Mamy jednak również enkodery przymocowane do naszych kół, które zapewniają prędkości liniowe i kątowe. Zanim otrzymaliśmy ten nowy czujnik IMU / GPS, stworzyliśmy własny EKF do oszacowania naszego stanu za pomocą enkoderów i niektórych innych tanich czujników. Chcemy zastosować filtr wbudowany w nowy czujnik, ale także włączyć nasze miksery do miksu.

Czy jest jakiś problem z łańcuchem filtrów? Chodzi mi o to, że wykorzystalibyśmy wyjście wbudowanego EKF czujnika IMU / GPS jako aktualizacji naszego własnego EKF, podobnie jak wykorzystujemy dane odczytane z enkoderów jako aktualizację naszego EKF. Wydaje mi się to rozsądne, ale zastanawiałem się, co zwykle należy zrobić w tym przypadku.

Robz
źródło
Czy potrafisz przesłać korekty / szacunki do „czarnej skrzynki” EKF?
Damien
@Damien nie, nie ma na to sposobu.
Robz

Odpowiedzi:

4

Możesz użyć INS / GPS jako aktualizacji danych wyjściowych pierwszego EKF. W rzeczywistości nie jest to łączenie łańcuchowe, ale po prostu warunkowanie oszacowania na podstawie dodanych informacji z INS / GPS.

Załóżmy, że mamy następujące funkcje:

xt+1|t, P.t+1|t = EKF_PREDICT (xt, P.t, ut), dla danych wejściowych jako stan x, kowariancja P.i kontrolne dane wejściowe (szacowane na podstawie odometrii) ut.

i

xt+1|t+1, P.t+1|t+1 = EKF_UPDATE (xt+1|t, P.t+1|t, x^t+1).

Szacunki z czujników to x^t+1. Mamy takie rzeczy jak:

x^t+1solps=fa(solP.S.)

x^t+1mzap=fa(mzap)

x^t+1jans=fa(jaN.S.)

itp. dla wszystkich innych sposobów szacowania stanu robota. Zatem uruchomienie funkcji EKF_UPDATE dla wszystkich tych czujników jest wystarczające.

Twoja pętla będzie wyglądać mniej więcej tak:

za wszystkie czasy t

  • Pozwolić ut być bieżącym szacunkiem odometrii / kinematyki pozy, oraz Ru być hałasem w tym oszacowaniu.

  • xt+1|t, P.t+1|t = EKF_PREDICT (xt, P.t, ut, Ru)

  • dla wszystkich czujników S.,

    • Pozwolić x^t+1S. być oszacowaniem pozy z tego czujnika, i RS. być hałasem w tym oszacowaniu

    • xt+1|t+1, P.t+1|t+1 = EKF_UPDATE (xt+1|t, P.t+1|t, x^t+1,RS.).

    • koniec

  • koniec

Niektóre zastrzeżenia:

  • Ponieważ używamy EKF, nie ma gwarancji, że kosztorys jest niezależny od kolejności aktualizacji. Oznacza to, że jeśli wykonasz INS, a następnie GPS, wynikowe oszacowanie może być inne niż w przypadku aktualizacji za pomocą GPS, a następnie INS. Zwykle nie jest to wielka sprawa, ale filtr wymaga znacznie więcej strojenia.

  • Należy pamiętać, że system INS ma tendencyjność i dryf, który może mieć wpływ na długoterminową niezawodność. GPS może ci tutaj bardzo pomóc . Większość literatury jednocześnie szacuje tendencyjność i dryf w INS.

Josh Vander Hook
źródło