Kurs über GPS 3D Speed / Kalman mit Gyro

nero76

Moderator
Hallo,

wie genau ist eigentlich eine Geschwindigkeitsermittlung über GPS (Prinzip Dopplereffekt)? Viele neueren GPS-Empfänger (die meisten?) werten ja auch die Phase des Signals aus (nicht die GPS-Daten) um hierüber eine 3D-Geschwindigkeit (speedX, speedY, speedZ) zu ermitteln, angenommene Genauigkeit z.B. 0,1m/s.

Nun könnte man daraus ja den 3D-Kurs ermitteln (phiGPS) - Um die Genauigkeit weiter zu erhöhen würde man diesen z.B. mit der Winkelgeschwindigkeit des Gyro (delpPhi) in einem Kalman-Filter fusionieren. Die so gewonne Ausrichtung (phi) könnte dann mit Odoemetrie (Wegstrecke Sl,Sr) ebenfalls durch Kalman-Filter in eine Position (x,y) und Ausrichtung (phi) fusioniert werden.


Code:
Kalman-Filter

Gyro         => Winkdelgeschw.  delPhi      => 
Kurs(GPS)    => Ausrichtung phiGPS          => Kalman =>  Ausrichtung phi    =>                
Odometrie    => Wegstrecke Sl, Sr                                            => Kalman => Position x,y,Ausrichtung phi   


Angenommene GPSSpeed3D(Doppler) Genauigkeit: 0,1m/s
 
Mein GPS Modul ist schon älter, aber auch mit 1m/s spezifiziert. Ich könnte die Geschwindigkeit mal mitloggen. Erwarte aber nicht viel davon, wollte einmal die GPS Kompasswerte verwenden, und die waren bei Rasenmähergeschwindigkeit unbrauchbar.

Wurde der Kalmann Filter schon in der Praxis getestet? Im virbrierendem Rasenmäher?
Ich logge jetzt ein paar Rohdaten vom CMPS10 Kompass mit: Beschleunigung Maximal und Mittelwert x, y, z, neu auch Pitch und Roll.
Die Werte schwanken aber extrem von einer Messfahrt zur anderen, wollte damit Messerunwucht erkennen, aber schon das wird schwer werden.

LG!
 
Werner schrieb:
Mein GPS Modul ist schon älter, aber auch mit 1m/s spezifiziert. Ich könnte die Geschwindigkeit mal mitloggen. Erwarte aber nicht viel davon, wollte einmal die GPS Kompasswerte verwenden, und die waren bei Rasenmähergeschwindigkeit unbrauchbar.
Das ist interessant - ein kommerzieller Rasenmäher macht es so, daher habe ich die Frage nach der Genauigkeit einfach mal gestellt. Der mir bekannte Rasenmäher macht das angeblich mit einem u-blox Neo 6m Modul...

Werner schrieb:
Wurde der Kalmann Filter schon in der Praxis getestet? Im virbrierendem Rasenmäher?

Yep, ebenfalls dieser kommerzielle Rasenmäher (läuft bei mir zu Hause ) - wir haben gestern ein wenig Patente gelesen, daher kann man das bestätigen...

Werner schrieb:
Ich logge jetzt ein paar Rohdaten vom CMPS10 Kompass mit: Beschleunigung Maximal und Mittelwert x, y, z, neu auch Pitch und Roll.
Die Werte schwanken aber extrem von einer Messfahrt zur anderen, wollte damit Messerunwucht erkennen, aber schon das wird schwer werden.

Kann ich mir vorstellen - vermutl. braucht man allergenaueste Meßhardware (Odometrie, GPS3DSpeed) um überhaupt sinnvoll mit Kalman-Filter arbeiten zu können. Das Thema wird uns aber wohl nicht mehr loslassen, Kalman ist gerade bei Positionserkennung/Navigation in aller Munde... :)

Gruss,
Alexander
 
Zuletzt bearbeitet von einem Moderator:
Ich gehe davon aus, dass das GPS-Modul diese Arbeit erledigt und 3D Speed ausgibt - so jedenfalls habe ich das "Patent" verstanden ;)
 
Wenn GPS 3D Speed vom GPS Modul kommt, braucht man dazu nur mehr einen genauen Kurs und kann so perfekt die akutelle Position berechnen. Odometrie würde ich nur als Rückfallebene verwenden falls vom GPS nichts kommt.
Habe mit meinen Log Daten herumgespielt, da bringt momentan der gemessene Weg nach Odometrie und Kurs nach Kompass die beste Position, mit noch besserer Wegmessung und genauerem Kurs wäre es natürlich perfekt.
Ein Punkt bleibt immer noch eine falsche Positionsmessung nach GPS. Denn irgendwann muss man die errechnete Position mit einer global gültigen Position vergleichen, und wenn das GPS durch Reflexionen mal 10m daneben liegt, was dann?

LG!
 
@Werner: sehe ich genauso - der GPSSpeed3D kann höchstens (falls wirklich so genau) zu einem sehr genauem Kurs betragen (zusammen mit dem Gyro). Die Positionsermittlung (genauer: die gefahrende Entfernung) über GPS+Odometrie bleibt ungenau, eine globale Re-Positionierung erfolgt an der Schleife (dessen Pfad durch häufiges Abfahren immer genauer bekannt ist). Das GPS darf ruhig mal ein paar Meter daneben liegen, beim Kalman fließen nur die Werte aktuell stärker ein welche zu den anderen plausibel (gerade sehr Warhscheinlich) sind, deshalb wird der so gerne genommen...
 
Speed Werte bekommt man auch im normalem NMEA Protokoll, aber wo steht dass es über die Dopplerfrequenz berechnet wird?
Nur aus den Rohdaten alleine braucht es mehr als einen Arduino um diese Berechnung zu knacken.

Die U-Blox Software ist ganz nett zum herumspielen und verschiedene Konfigurationen zu testen!

LG!
 
Werner schrieb:
Speed Werte bekommt man auch im normalem NMEA Protokoll, aber wo steht dass es über die Dopplerfrequenz berechnet wird?

Im "Patent" des bekannten deutschen Herstellers (s.Link oben) steht dass die 3D Speed-Werte im GPS über den Doppler-Effekt (also die Phaseninformation) berechnet werden - und o.g. Empfänger steckt nun mal im bekannten deutschen Roboter drin ;) - Also muss es ja gehen :) Phaseninformation gibt die 6m-Version nämlich nicht heraus...
 
Zuletzt bearbeitet von einem Moderator:
Ich bin alle möglichen Datenblätter von ublox durch, aber kein Wort von Doppler Messung gefunden. Bei der Spezifikation der allgemeinen Daten steht im Kleingedruckten zur Geschwindigkeit dass diese Genauigkeit von 0.1m/s bei 24h stationärer Messung gilt....
Hat einer von euch einen Nachweis für diese Funktion?
In ein Patent kann man alles schreiben, aber das bedeutet nicht das es schon umgesetzt ist.

Wenn es stimmt wäre es toll, dieses Modul gibt es bei Hobbyking um nur $19.99!

LG!
 
Ich werde ublox kontaktieren, dann wissen wir mehr. Ist zwar sehr wahrscheinlich, aber halt nicht Schwarz auf Weiß.
 
Ich habe jetzt 3 Fahrten mit GPS Speed mitgelogt und ausgewertet (letzte 3 Tabellenseiten) Datenlog.xls .

Es gibt auf diesen 3 Seiten 5 Auswertungen (vorher fehlt GPS Speed):
[ol]
[li]nach meiner normalen Odometrieberechnung (nimmt GPS und Kompass nur bei groben Abweichungen zur Korrektur, ansonsten reine Odometrie Weg- und Kurs-Berechnung)[/li]
[li]nur Weg nach Odometrie und Kurs nach Kompass[/li]
[li]GPS Rohdaten[/li]
[li]Weg berechnet aus GPS Rohdaten und Kurs nach Kompass[/li]
[li]Weg ermittelt aus GPS Speed (NMEA RMC) und Kurs nach Kompass[/li]


[/ol]

Meine Erkenntnis:
[ol]
[li]GPS Rohdaten kann man alleine vergessen.[/li]
[li]Alle Daten in Kombination mit Kompass liefern gute Ergebnisse.[/li]

[/ol]

Leider kann ich nicht mehr Daten aufnehmen, habe zwar Class1 Bluetooth am Roboter und PC, komme aber nur auf max 10m anstatt der 100m Reichweite, und dass nur wenn der Roboter grad vorm Fenster ist, und so muss ich weiter im 4kB kleinen EEPROM Daten speichern.

LG!
 
Habe noch ein paar Messfahrten und Auswertungen mehr durchgeführt:

Meine normale Positionsberechnung(1),nur Weg nach Odometrie und Kurs nach Kompass(2), und Weg ermittelt aus GPS Speed (NMEA RMC) und Kurs nach Kompass(5) bringen alle 3 recht ähnliche Ergebnisse, wobei der Unterschied von (1) und (2) ja nur bei der GPS Korrektur liegt, sowie (1) enge Kurven genauer berechnet.

Weg berechnet aus GPS Rohdaten und Kurs nach Kompass (4)liefert schlechtere Ergebnisse.
Anscheinend berechnet der GPS EMpfänger die Geschwindigkeit nicht aus den Wegpunkten, sonst müsste diese Berechnung mit der von GPS Speed übereinstimmen.

Ich habe jetzt meine Positionsbestimmung erweitert, so dass in Fällen von schlechtem GPS Empfang die Position aus den parallel durchgeführten Odometrie(1) und GPS Speed Berechnungen(5) gemittelt wird. Korrektur nach GPS erfolgt bei schlechten GPS Werten oder extra markierten Zonen im Garten nur mehr bei >8m Abweichung, Korrektur an Schleife bleibt und wird auch bei den GPS Speed Positionen angewandt.

Mal sehen ob damit das Fahrverhalten an den typischen GPS Problempunkten besser wird.

LG!
 
Erste Erkenntnisse der Live-Berechnung der Position mit GPS Speed:
[ul]
[li]Der GPS Empfänger bekommt die Daten auf 3 Stellen genau, also Werte mit mm/s. Ob das die Berechnung nach Doppler Effekt ist, keine Ahnung. Vermute es aber da die Werte trotz allem plausibel sind.[/li]
[li]Auch am Stand schwanken die Werte zwischen 5-20mm/s, mit Spitzen bei 80mm/s.[/li]
[li]Die Wegberechnung ermittelt einen etwa 10% längeren Weg als die Odometrie. Die Positionsberechnung erfolgt ausnahmsweise mit Fließkomma Variablen, ansonsten werden aus Performance Gründen alle Berechnungen mit Festkomma Arithmetik durchgeführt. Hier aber zeigten Simulationen dass mit es bei verminderter Genauigkeit bald zu großen Abweichungen kommt. Wenn es funktioniert werde ich versuchen eine schnellere Berechnung hinzubekommen.[/li]


[/ul]Ab morgen steht die erste Fahrt an in der diese Berechnung in die Positionsberechnung mit einfließen wird. Sie läuft parallel mit der Odometrie Berechnung mit, der Weg wird nach den oben genannten Beobachtungen auf 90% des Wertes korrigert und mit max 400mm/s limitiert. Schneller fährt der Roboter nicht.
[ul]
[li]Je nach GPS Genauigkeit (HDOP und Anzahl der Satelliten) wird wie bisher zuerst die Odometrie korrigiert, danach die GPS Wegberechnung mit der Odometrie verglichen und bei größeren Abweichungen ebenfalls korrigiert.[/li]
[li]Falls der GPS Empfang schlecht ist, gilt der Mittelwert aus 2/3 Odometrie und 1/3 GPS Wegberechnung.[/li]
[li]Falls kein GPS Empfang möglich ist, wird die GPS Wegberechnung gleich den Odometriewerten gesetzt, bis es wieder GPS gibt.[/li]


[/ul]Werde berichten was dabei rauskommt.

LG!
 
So, bin mal in der Nähe des Roboters geblieben und hab mir die einzelnen Werte auf Tablett geschickt. Grundsätzlich war die Odometrie und GPS Speed Berechnung sehr ähnlich,
 
So, ich lösche GPS Speed wieder aus dem Code. Die Abweichungen waren zu groß, zB fährt der Roboter einmal exakte Spiralen, und nach dieser Wegberechnung wandert der Mittelpunkt gleich um mehrere Meter.

Momentan ist Odometrie mit Kompass einfach genauer.

Vielleicht geht es mit einem moderneren GPS Empfänger besser.

Werde demnächst die Hardware für die Kamera zusammenlöten, vielleicht bringt das bessere Ergebnisse

LG!
 
Oben