DifferentialGPS mal wieder

Ich versuche mich gerade an einem lokalen differential GPS. Vorerst reicht mir, wenn die zusätzliche Genauigkeit im Postprocessing zustande kommt.
Ich habe also zwei Devboards für ein MT3333-basiertes GPS-Modul plus Antennen. Die Antennen sind etwa einen Meter von einander entfernt an der Außenseite des Gebäudes platziert und ich zeichne zeitgleich auf. Die integrierten Antennen auf den DevßBoards habe ich auch getestet und erhalte ähnliche Ergebnisse wie im Folgenden für die externen Antennen beschrieben.

Beide Module habe ich konfigueriert GPS/GLONASS/Galileo+EGNOS zu nutzen und sekündlich im WGS84 Datum auszugeben. Meine DOP Werte sind um die 1, also eigentlich sehr gut (s. auch Anhänge). Die Receiver sind jetzt seit mehreren Stunden angeschlossen, sollten also auch alle Satellitenpositionen haben.

Die (bekannte) Idee von DGPS ist nun, dass die beiden Receiver sehr ähnlichen (vor allem atmosphärischen) Störungen unterliegen sollten, so dass die Fehler auch stark korreliert sind. Mit den Werten einer statischen Basis sollten damit die Werte eine mobilen Rovers korrigierbar sein.
Der englische Wikipediaartikel zu DGPS hat mich hoffen lassen, dass da zumindest eine Genauigkeit von 1m drin sein sollte.

De facto kriege ich leider nicht mal annähernd ein sinnvolles Signal aus den den beiden Receiver. Die Werte springen mit einem Radius von fast 20m, völlig ohne Korrelation zwischen den beiden Receivern, und um einen Mittelwert, der auch etwa 20m vom wahren Wert entfernt ist.
Die reinen GPS-Koordinaten, die eine Sensorapp aus meinem Smartphone-GPS liest, sind dagegen recht gut.

Hat irgendjemand eine Idee, was da schieflaufen könnte?
Die Anhänge können z.B. hier geparst werden.

GPS_USB0_wsbas.txt (544 KB)

GPS_USB1_wsbas.txt (544 KB)

Das Gebäude schirmt den halben Himmel ab bzw das GPS Signal kommt sicher als Echo von der Hauswand. Beides Zusammen ergibt eine erhöhte Ungenauigkeit weil weniger Satelliten gesehen werden.

Mach Deine Tests in der freien Natur auf einer Wiese.

Die Idee hinter Differential GPS ist daß ein empfänger auf der gleichen Stelle bleibt und darum den Positionsfehler errechnene kann und dies Abweichung an den zweiten GPS Empfänger schikt und dieser seinen Meßwert um den Fehler korrigiert.

Grüße Uwe

uwefed: Das Gebäude schirmt den halben Himmel ab bzw das GPS Signal kommt sicher als Echo von der Hauswand. Beides Zusammen ergibt eine erhöhte Ungenauigkeit weil weniger Satelliten gesehen werden.

Hatte ich überlegt aber schien mir nicht hinreichend, weil mein Telefon an gleicher Stelle ganz gut ging. Habe aber schon zwei Rpis bestellt, um ins Feld zu gehen. Dafür spricht, dass nie eine Position im Gebäude rauskommt. obwohl ich auf dem Balkon stehe.

uwefed: Die Idee hinter Differential GPS ist daß ein empfänger auf der gleichen Stelle bleibt und darum den Positionsfehler errechnene kann und dies Abweichung an den zweiten GPS Empfänger schikt und dieser seinen Meßwert um den Fehler korrigiert.

Ist mir klar, hatte ich ja auch so beschrieben, oder? Zwei stationäre Empfänger sollten sich aber halbwegs synchron bewegen, und das tun meine kein Stück. Naja, vielleicht ist es wirklich das Gebäude. Mal den Feldtest abwarten.

Hm, ein erster Fieldtrip hat bestätigt, dass das Gebäude ein erhebliches Problem ist. Die Fehler sind jetzt eher in dem Rahmen, den ich von GPS erwarten würde aber immer noch nicht wirklich gut. Irgendeinen Effekt bezüglich DGPS kann ich aber nicht erkennen. Die Störungen scheinen ziemlich unabhängig zu sein.

DGPS_20180329_161425.txt (56.5 KB)

Du hast schon sichergestellt, dass deine Antennen freie (wirklich freie!) Sicht gen Süden haben? Das Problem mit EGNOS ist, dass wir hier nen relativ flachen Winkel haben, da das System niemals für Geräte am Boden konzipiert war. Kannst dich dabei an Fernseh-Schüsseln in der Umgebung ungefähr orientieren: wo die funktionieren, geht EGNOS meist auch...und umgedreht.

Und zur Genauigkeit: im allgemeinen bedeutet eine "Genauigkeit von 5m" nur, dass 50% der Positionsangaben innerhalb eines Radius von 5m um den tatsächlichen Punkt liegen, das heisst: das sind eigentlich sowieso schon 10m, und von denen u.U. auch nur die Hälfte aller Daten.... Du müsstest also etliche Daten aufzeichnen (z.B. 100 Messungen) und dann mal gucken, was bei raus kommt.

Rabenauge: Du hast schon sichergestellt, dass deine Antennen freie (wirklich freie!) Sicht gen Süden haben? Das Problem mit EGNOS ist, dass wir hier nen relativ flachen Winkel haben, da das System niemals für Geräte am Boden konzipiert war. Kannst dich dabei an Fernseh-Schüsseln in der Umgebung ungefähr orientieren: wo die funktionieren, geht EGNOS meist auch...und umgedreht.

Ja, nachdem ich vom Gebäude weg war, wurde es besser, aber nicht gut.

Und zur Genauigkeit: im allgemeinen bedeutet eine "Genauigkeit von 5m" nur, dass 50% der Positionsangaben innerhalb eines Radius von 5m um den tatsächlichen Punkt liegen, das heisst: das sind eigentlich sowieso schon 10m, und von denen u.U. auch nur die Hälfte aller Daten.... Du müsstest also etliche Daten aufzeichnen (z.B. 100 Messungen) und dann mal gucken, was bei raus kommt.

Den 5m Radius habe ich jetzt wohl, das Problem ist, dass die Abweichungen der beidne Geräte völlig unkorreliert sind. Damit wird DGPS nicht nur sinnlos, sondern die Varianzen addieren sich sogar.

Es ist immer schwer, die Messwerte zu verifizieren- man müsste dazu eine wirklich genaue Referenz haben. Ich hab hier vier GPS-Geräte- zwei Handys, ein Garmin und ne Drohne- wirklich einer Meinung sind die nie. Wobei: das Furuno in der Drohne ist hier im Gebirge eher ein Schätzeisen, dem merkt man die Herkunft deutlich an. Das funktioniert schon in halbwegs dichtem Wald überhaupt nicht mehr, wo das Garmin immernoch ziemlich genau Bescheid weiss. Und die Handys spielen irgendwo zwischen beidem, wobei die es leichter haben: dank Mobilfunk-Anbindung haben die einfach andere Möglichkeiten. Offenbar hat Garmin da ein bisschen Vodoo eingebaut, das Ding ist schier unglaublich gut.

Eventuell kannst du den Empfang verbessern-ich las schon öfter, dass ein Stück Alublech unter der Antenne einiges bewirken soll- und das scheint auch zu stimmen: die Parrot Bebop2 hat das auch, und deren GPS ist ziemlich gut.

Rabenauge: Es ist immer schwer, die Messwerte zu verifizieren- man müsste dazu eine wirklich genaue Referenz haben.

Mir reicht relative Genauigkeit zur Basisstation. Dafür müsste der Fehler auf beiden nur gleich sein. Die Differenz ist dann konstant. Theoretisch sollte das so sein, nach allen Quellen die ich so gelesen habe. De facto zeigen meine Messwerte das aber überhaupt nicht. Messwerte_GPS2 - (Messwerte_GPS1 - Referenz) ergibt eine Punktwolke mit größerer Varianz als Messwerte_GPS1 und Messwerte_GPS2 haben.

Rabenauge: Eventuell kannst du den Empfang verbessern-ich las schon öfter, dass ein Stück Alublech unter der Antenne einiges bewirken soll- und das scheint auch zu stimmen: die Parrot Bebop2 hat das auch, und deren GPS ist ziemlich gut.

Ich habe jetzt über die ganzen Osterfeiertage aufgenommen, mit den 28dB-Antennen auf dem Dach unseres Hauses. Immer noch völlig hoffnunslos, die Messwerte verteilen sich unkorreliert zwischen den beiden Empfängern auf die ganze Grundstücksbreite. Selbst wenn ich das noch verbessern könnte, habe ich nachher im Produktivsystem nicht nicht genug Raum für noch dickere Antennen.

Ich habe jetzt zwei Tiny RTK GPS als Devboards und U-Blox NEO-M8P-2 Module bestellt. Jetzt muss ich mal schauen, ob ich eine Funkverbindung dazwischensetze oder von Basis und Rover aufzeichnen und nachverarbeiten kann.

Eine genauer Referenz hat man ja. Ein x-belibiger Punkt auf der Erdoberfläche. Der genaue GPS Wert ist nicht bekannt aber, da der Punkt nicht driftet sollte ein wiederholbares Meßergebnis herauskommen. Ob dann der Punkt 1 m daneben ist, ist egal. Grüße Uwe

Also wirklich genau hab ich das seinerzeit nicht hinbekommen, aber eine Genauigkeit (nach obiger "Formel") von 2m war schon drin. Mitm Neo6m.

Ich hab das so gemacht, das sich mir nen Marker auf die Wiese gelegt habe, und dann den Truck dort seine "Home-Position" holen lassen hab (so wie das Drohnen machen, einschalten und auf den Fix warten). Dann hab ich ihn nen Stück weg geschafft und den RTH-Modus aktiviert. Das klappte- er landete ohne grosse Wirren im Umkreis von 2m um den Marker. Nicht immer im ersten Anlauf-aber meistens schon.

Kann aber sein, dass es dadurch, dass es ja das selbe GPS war, solche Abweichungen gar nicht gab- da sind ja auch atmosphärische Störungen irrelevant (zumindest innerhlab ner halben Stunde, da ändert sich nicht viel), er musste also nur eine relative Position finden, statt ner absoluten.

Ausser dem Neo6m und nem Kompass war da nichts weiter von Nöten- und der Kompass wurde nur benutzt, um rauszufinden, in welcher Richtung das Ziel überhaupt liegt.

Wenn du aber nun zwei GPS hast, dann hast du zweimal Ungenauigkeit- und die addieren sich.

Rabenauge: Wenn du aber nun zwei GPS hast, dann hast du zweimal Ungenauigkeit- und die addieren sich.

Der Theorie nach halt nicht, weil die Ungenauigkeiten größtenteils ortsß nicht Geräteabhängig sein sollten. Sonst wären ja die ganzen SBAS Systeme sinnlos. Siehe auch Wikipedia.

Ich glaube, mein MT3333 ist einfach ziemlich scheiße ... Ich werde mein Glück mit dem NEO-M8P berichten.

@ElCaron : Tja-Theorie und Praxis.....leg mal zwei Geräte, die ein GPS haben, nebeneinander....die umkreisen sich ständig, hehe. Ist so- hab ich schon öfter probiert.

Und nein: SBAS (oder auch ein anderes Korrektursystem, wenn du z.B. ne Internetanbindung hast, kannst du dir die Korrekturdaten auch daher besorgen) ist deshalb keineswegs sinnlos- durch atmosphärische Störungen ist nämlich ohne Korrekturdaten eine Genauigkeit unter 5m schonmal gar nicht machbar. Das wird sich eher im Bereich um die 10m bewegen. Trotzdem hab ich es nie geschafft, auch nur mal zwei GPS-Geräte auf die gleiche Position (sagen wir einfach 2m) zu bekommen, auch nicht, wenn die nebeneinander liegen. Wobei ich (mangels Möglichkeit) aber nie zwei baugleiche Geräte versucht habe. Das könnte noch nen paar Erkenntnisse bringen.

@noiasca Nein. wieso denn zwei? Ich hab immer nur eines benutzt....mir ging es ja lediglich darum, einen vorgegebenen Punkt auch wieder zu finden. Und da das Neo sich den selber errechnet hat (vorher, halt den Home-Punkt), klappte das ganz gut. Sollte aber eigentlich möglich sein: die Neos werden ja seriell angeschlossen. Am Mega sind genug Anschlüsse da- also müsste man ja nur zwei Unterprogramme schreiben, die etweder auf Serial1 oder Serial2 zugreifen...wenn du daraus sowas wie ein DGPS machen willst, dann ist das bis hierher im wesentlichen copy&paste- und dann musst du halt die Positionen beider Unterprogramme zusammenwursteln. Hm, das wäre mal echt spannend, zu gucken, was dabei rauskommt. Da könnte man auch mal testen, was z.B. das SBAS (kann das Neo6m ja auch) wirklich bringt.

Rabenauge: Hm, das wäre mal echt spannend, zu gucken, was dabei rauskommt.

Ich rede doch (für den MT3333) schon die ganze davon, was dabei rauskommt: nix :) In #3 ist eine csv Datei (txt, weil ich csv nicht hochladen darf) mit einer Aufzeichnung von zwei stationären Receivern (tatsächliche Position: auf der westlichen und östlichen Ecke der grauen Klappe direkt nördlich vom gelben Balken).

Sketch habe ich nicht. Ich zeichne derzeit einfach die NMEA Daten über das serial Interface am PC auf.

Hab mir deine Daten grade mal angesehen- ich würd die nicht in jedem Fall als repräsentativ werten. Beispielsweise stehn da bei beiden schon ganz zu Anfang Daten (Kurs, Bewegung, Position) obwohl kein einziger Satellit empfangen wurde? Da ist doch was faul- die Positionen, die da auf magische Weise herausgefunden werden, stimmen ja auch....

Ansonsten sehe ich da sehr grosse Schwankungen in der Signalqualität. Das deutet mir schon drauf hin, dass da Gebäude, oder auch Fahrzeuge (die z.B. könnten die gelegentlichen, offensichtlichen Ausreisser erklären) gestört haben. Wenn man die Tracks mal verfolgt, sieht man, dass beide erstmal daneben liegen-allerdings so uuuungefähr gleich. Dann wandern sie allmählich Richtung Zentrum der Wolke- ab dort gibts nur noch Ausreisser. Waren das Kaltstarts? Die können, unter schlechten Bedingungen (und dafür halte ich das, was ich da sehe) durchaus seeeeehr lange dauern. Auch länger als ne Stunde.

Du könntest mal versuchen, die CSV-Daten in KML umzuwandeln (z.B. mit GPSBabel). Dann kannst du die übereinander legen, beispielsweise in Marble. So siehst du, ob die Störungen beide zeitgleich getroffen haben (das müsste zumindest bei den grösseren Ausreissern sichtbar sein).

Was auch auffällt: die scheinen in verschiedene Richtungen zu driften- lagen die denn beide in der gleichen Orientierung, oder gegeneinander verdreht? Wär mal interessant, zu wissen.

Richtig toll wärs nun, wenn man die ganzen Messwerte mal mitteln könnte (sowas geht bestimmt mit OfficeCalc, aber ich hab davon keinen Schimmer), so dass sämtliche Daten zu einem Punkt vereint werden. Würde mich mal interessieren, wie weit diese beiden Punkte dann noch auseinander liegen. So vom anschauen würde ich sagen: keine 5m. Bei so miesem Empfang nicht schlecht....

hat länger gedauert, aber ich hab jetzt mal zwei Neo6 an einem MEGA an Serial1 und Serial2 laufen gehabt. Die Antennen sind etwa 17 cm auseinander (ganz nebeneinander, stören sie sich und ich bekomme keinen Fix).

Indoor, die elektronik direkt am Fenster. Am WE probiere ich mal Freifeld.

A simple demonstration of TinyGPS++ with an attached GPS module
Testing TinyGPS++ library v. 1.0.2

Location1: 61.197959,29.396505  Date/Time: 4/12/2018 16:51:51.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197910,29.396480  Date/Time: 4/12/2018 16:51:51.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000050 -0.000025
Location1: 61.197959,29.396511  Date/Time: 4/12/2018 16:51:52.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396484  Date/Time: 4/12/2018 16:51:52.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000046 -0.000027
Location1: 61.197959,29.396512  Date/Time: 4/12/2018 16:51:53.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396486  Date/Time: 4/12/2018 16:51:53.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000046 -0.000027
Location1: 61.197952,29.396507  Date/Time: 4/12/2018 16:51:54.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396486  Date/Time: 4/12/2018 16:51:54.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000038 -0.000021
Location1: 61.197956,29.396507  Date/Time: 4/12/2018 16:51:56.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396488  Date/Time: 4/12/2018 16:51:56.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000042 -0.000019
Location1: 61.197944,29.396488  Date/Time: 4/12/2018 16:51:57.00 Sats:6 valid:1 HDOP:1.10
Location2: 61.197914,29.396486  Date/Time: 4/12/2018 16:51:57.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000031 -0.000002
Location1: 61.197933,29.396471  Date/Time: 4/12/2018 16:51:58.00 Sats:6 valid:1 HDOP:1.10
Location2: 61.197914,29.396486  Date/Time: 4/12/2018 16:51:58.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000019 0.000015
Location1: 61.197933,29.396459  Date/Time: 4/12/2018 16:51:59.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396488  Date/Time: 4/12/2018 16:51:59.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000019 0.000029
Location1: 61.197933,29.396444  Date/Time: 4/12/2018 16:52:00.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396490  Date/Time: 4/12/2018 16:52:00.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000019 0.000046
Location1: 61.197948,29.396413  Date/Time: 4/12/2018 16:52:01.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396490  Date/Time: 4/12/2018 16:52:01.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000034 0.000076
Location1: 61.197952,29.396415  Date/Time: 4/12/2018 16:52:02.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396492  Date/Time: 4/12/2018 16:52:02.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000038 0.000076
Location1: 61.197956,29.396409  Date/Time: 4/12/2018 16:52:03.00 Sats:7 valid:1 HDOP:1.00
Location2: 61.197914,29.396492  Date/Time: 4/12/2018 16:52:03.00 Sats:8 valid:1 HDOP:0.96
Diff2-1  : -0.000042 0.000082

Hm- wenn ich das jetzt richtig zusammenkrieg, ist die fünfte Nachkommastelle mit dem Faktor 1,11m zu multiplizieren. Demnach schwirrst du irgendwo zwischen 2 und 5m herum. Ist doch nicht schlecht....erst recht nicht, wenn das Indoor war!

Hast du die Neos richtig konfiguriert? Bei meinem ist standardmässig z.b. SBAS nicht aktiviert, das muss man erst machen (geht z.B. mit dem U-Center). Das ist bei meinem Modul übrigens immer dann nötig, wenn der eingebaute Mini-Akku leer ist (der hält nur ein paar Tage, wenn man es nicht benutzt, wird im Betrieb aber wieder aufgeladen).

du hast vermutlich richtig gerechnet, hab mal eine Zeile mit einem online-Tool ausgerechnet, da waren es etwa 7m.

Wegen Parametrierung des M6 … im U-Center - da suche ich noch eine gute Beschreibung.

Da gab es mal ne Seite, wo das so leidlich beschrieben war. Find die aber grade nicht…wobei das meiste im U-Center aber selbsterklärend ist.
Gespeichert hab ich die Daten immer mit nem Mega 2560, an den ich das Neo auf der einen, und das U-Center (über USB) auf der anderen Seite seriell angeschlossen hab. Das Programm im Mega hat die Daten quasi nur einfach durchgereicht. Sollte aber mit nem einfachen, seriellen Adapter genauso funktionieren.

Ansonsten: einfach rum probieren, so lange du die richtige Baudrate weisst (die Auto-Erkennung hat nicht immer funktioniert), kannst du das jederzeit rückgängig machen. Und wenn alles passt, im U-Center exportieren, und irgendwo abspeichern.