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.
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
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.
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?
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
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
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.
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
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 € !).