Forum: Mikrocontroller und Digitale Elektronik GPS + IMU sensor fusion


von autopilot (Gast)


Lesenswert?

Ich möchte die Position eines (Spielzeug) Mootorbootes auf einem See 
bestimmen. Als Sensoren habe ich eine 9 DOF IMU (Beschleunigung, Gyro, 
Kompass) und einen GPS Empfänger.
Das ganze soll auf einem µC erfolgen - ATmega oder wenn nötig STM32.

Um das Rad nicht neu zu erfinden, habe ich mich mal nach Code für die 
Sensor Fusion umgeschaut. Für die Orientierungsbestimmung aus der IMU 
gibts recht viel Code, aber für die Positionsbestimmung sieht das ganze 
schon viel schlechter aus. Habt ihr Tipps, wo man passenden Code finden 
kann? Das ist ja mittlerweile ein ausgereiftes Feld.

von Kevin M. (arduinolover)


Lesenswert?

Was du suchst nennt sich Kalman Filter und das ist nichts was man mal 
eben so programmiert.

von Jan H. (jan_h74) Flattr this


Lesenswert?

Sensor fusion brauchen sie nicht unbedingt. Den GPS gibt position, nur 
die "heading" fehlt bei stillstand. So eigentlich ist die IMU nur fur 
heading notwendig ! Positionsdaten von ein IMU sind eigentlich 
unbrauchbar ueber langere zeit, wegen wegdriften integral von abgelegten 
weg. Da gibt wel fix und fertige software for so etwas, such mal nach 
"Ardupilot". Ich habe das mal gemacht mit eine RC-car : 
https://youtu.be/yMbmp7c2mrw

von Dussel (Gast)


Lesenswert?

Jan H. schrieb:
> Den GPS gibt position, nur
> die "heading" fehlt bei stillstand. So eigentlich ist die IMU nur fur
> heading notwendig ! Positionsdaten von ein IMU sind eigentlich
> unbrauchbar ueber langere zeit, wegen wegdriften integral von abgelegten
> weg.
GPS-Positionen können aber auch mal springen, sind dafür absolut. 
IMU-daten laufen über die Zeit weg, sind dafür aber kurzfristig genau.
Deshalb fusioniert man beides, um eine absolute, ziemlich genaue 
Position zu bekommen.
Kevin stimme ich zu. Der Standard dafür ist wohl ein Kalmanfilter. Das 
ist zwar keine Quantenwissenschaft, aber auch nicht mal so auf die 
Schnelle programmiert. Damit würde ich mich erstmal befassen. Es solltes 
aber einige Abschlussarbeiten zu dem Thema zu finden sein.

von autopilot (Gast)


Lesenswert?

Kalman Filter habe ich mir aneschaut und werde es implementieren, falls 
ich nichts fertiges finde. Dachte, es müsste schon viel fertiges geben, 
weil das in vielen Anwendungen verwendet wird.

@ Jah H: Das sieht echt super aus! Hast du die Geschwindigkeit für die 
Positionsbestimmung verwendet oder nur GPS und Heading? Wie bist du 
damit umgegangen, dass GPS hin und her springt?

von Purzel H. (hacky)


Lesenswert?

Das Heading macht man natuerlich nicht mit der IMU, die bringt nur 
Winkelbeschleunigungen. Fuer das Heading nimmt man den Kompass. Dafuer 
kann man mit dem Kompass die Drigt der Winkelbeschleuningung 
raisrechnen. Und feststellen, wann der Kompass nur noch Mist bringt. 
Neben Eisen, zB

von autopilot (Gast)


Lesenswert?

Ja, das ist korrekt, mit IMU meinte ich eigentlich eine 9 DOF IMU 
(Beschleunigung, Gyro, Kompass), also eigentlich MARG.

von Wolfgang (Gast)


Lesenswert?

Dussel schrieb:
> GPS-Positionen können aber auch mal springen, sind dafür absolut.
> IMU-daten laufen über die Zeit weg, sind dafür aber kurzfristig genau.
> Deshalb fusioniert man beides, um eine absolute, ziemlich genaue
> Position zu bekommen.

Die GPS-Position driftet auch langsam durch die Gegend. Besser ist es, 
einen Referenzempfänger fest hin zu stellen bzw. Referenzdaten aus 
anderer Quelle für die Korrektur zu verwenden. (RTK).

Wie genau muss es denn werden?
[ ] 10 m GPS
[ ]  1-2 m GPS mit EGNOS
[ ]  1-2 cm RTK

von autopilot (Gast)


Lesenswert?

Es soll nicht super genau sein - 1m reicht völlig aus. Die Präzision im 
Video von @Jan H ist absolut ausreichend.

Ich werde zunächst mal nur mit Heading Sensor Fusion und GPS arbeiten - 
wenn das nicht reicht, dann versuche ich noch die Geschwindigkeit durch 
den Beschleunigungssensor genauer zu schätzen.

von Peter (Gast)


Lesenswert?

Hi,
Schau dir Mal deinen GPS genauer an. Wenn ich mich Recht erinnere haben 
sie teilweise eine Schnittstelle um IMU Daten einzuspeisen. Vielleicht 
hast du dann sogar ein tightly coupeld system in dem dann die 
Pseudoranges ausgewertet werden.
Gruß
Peter

von Jan H. (jan_h74) Flattr this


Lesenswert?

autopilot schrieb:
> Kalman Filter habe ich mir aneschaut und werde es implementieren, falls
> ich nichts fertiges finde. Dachte, es müsste schon viel fertiges geben,
> weil das in vielen Anwendungen verwendet wird.
>
> @ Jah H: Das sieht echt super aus! Hast du die Geschwindigkeit für die
> Positionsbestimmung verwendet oder nur GPS und Heading? Wie bist du
> damit umgegangen, dass GPS hin und her springt?
In diesen Fall wird die "ist" heading von 9DOF IMU uebernommen. Das Ziel 
wird rein ueber GPS-Coordinaten bestimmt ! Bei guten Empfangst (>8 
sattelliten) sind die GPS-coördinaten ziemlich stabil. Die 
"wiederholbarkeit" in ein kurze Zeit ist kleiner wie 50 cm. Absolut 
position kan naturlich mehr abweichen !Den GPS hat auch eine bestimmte 
"lag", selbst bei 10 Hz datenrate ist die "lag" um die 0.4s. Da ist den 
IMU wesentlich schneller (100 Hz rate). GPS module sind jetzt wirklich 
billig, <10€ (Beitian BN220 / BN 280, hat eine ublox M8 engine). Bei 
schnell fahren (wie in video) mussen sie weit for das Zielpunkt erreicht 
ist schon umschalten auf das naechste Ziel punkt.
RTK gps ist auch moglich, aber ist eine andere preisklasse (>300 € !).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.