Zusammenhang der NMEA Datensätze

Allgemeine Fragen zu GPS und verwandten Themen

Moderator: Roland

Antworten
johnpatcher
Beiträge: 13
Registriert: 25.05.2008 - 00:16

Zusammenhang der NMEA Datensätze

Beitrag von johnpatcher » 25.05.2008 - 00:35

Hi,

ich bin gerade dabei einen Nmea Parser zu schreiben. Genau genommen möchte ich gerne aufgezeichnete NMEA-Logs meines GPS-Empfängers in GPX Dateien umwandeln. Mir ist durchaus bewusst, dass es da schon Lösungen, wie z.B. GPS-Babel, gibt, das hilft mir leider nicht weiter :(.

Das Problem vor dem ich stehe, äußert sich folgendermaßen:

Ich würde gerne sämtliche Informationen, die mir zur Verfügung stehen, mit in die GPX Datei übernehmen. Nun sind die Informationen, welche ich für einen Punkt brauche, teilweise über mehrere NMEA-Datensätze verteilt. Z.B. möchte ich die Position dem GGA Datensatz entnehmen, die DOP-Werte (HDOP, VDOP, PDOP) stehen aber nur im GSA Datensatz.

Woher weiß ich nun, welcher GSA Datensatz zu welchem GGA Datensatz gehört. Kann man davon ausgehen, dass die GSA Datensätze immer den GGA Datensätzen folgen? Leider habe ich diesbezüglich keine Informationen finden können. Den Quellcode von GPSBabel habe ich zwar angesehen, leider bin ich der Programmiersprache C dann aber doch nicht in dem Maße gewachsen.

Ich hoffe, ihr könnt mir da nähere Infos geben.

JLacky
Beiträge: 221
Registriert: 03.02.2005 - 22:06

Re: Zusammenhang der NMEA Datensätze

Beitrag von JLacky » 25.05.2008 - 09:37

johnpatcher hat geschrieben:Woher weiß ich nun, welcher GSA Datensatz zu welchem GGA Datensatz gehört. Kann man davon ausgehen, dass die GSA Datensätze immer den GGA Datensätzen folgen?
Im Prinzip ja! Die Reihenfolge sollte immer glech sein.

ABER... je nach Empfängereinstellung kann die zeitliche Abfolge konfigurriert werden. Das heisst der Anwedner kann z.B. einstellen das der GGA alle Sekunde, der GSA aber nur alle 5 Sekunden vom GPS-Empfänger gesendet werden. Oder aber der GSA kann sogar ganz ausgeschaltet werden.

Du musst also analysieren, welche Datensätze wirklich im NMEA-Strom wann und überhaupt werden, und die Informationen evtl. aus einem anderen Datensatz nehmen, der z.B.GSA garnicht kommt.

mfg
JLacky

johnpatcher
Beiträge: 13
Registriert: 25.05.2008 - 00:16

Re: Zusammenhang der NMEA Datensätze

Beitrag von johnpatcher » 25.05.2008 - 12:06

Hi,

vielen Danke für deine schnelle Antwort. Leider wirft sie neue Fragen auf :).
JLacky hat geschrieben: Du musst also analysieren, welche Datensätze wirklich im NMEA-Strom wann und überhaupt werden, und die Informationen evtl. aus einem anderen Datensatz nehmen, der z.B.GSA garnicht kommt.
Den Satz verstehe ich irgendwie nicht ganz :D.

Und wie bewerkstelligt man eine solche Analyse am Einfachsten?

Ich wollte mittlerweile eigentlich so vorgehen: Ich suche nach GGA Datensätzen. Alle Datensätze die danach kommen (wenn sie nicht selber einen Fix beinhalten) beziehen sich auf diesen. Stoße ich auf den nächsten GGA Datensatz, so hab ich meinen nächsten Fix. So gibt es zwar Punkte, welche nicht alle Informationen beinhalten, diese müssten sich dann aber recht einfach aussortieren lassen, falls gewünscht.

Nur ist das Problem, dass der GGA Datensatz zwar durchaus vieles enthält, aber nicht unbedingt vorhanden sein muss. Wie stelle ich das ganze dann an? Dem Quellcode von GPSBabel habe ich folgendes entnommen:
/*
* An input file may have both GGA and GLL and RMC sentences for the exact
* same position fix. If we see a single GGA, start ignoring GLL's and RMC's.
* GLL's will also be ignored if RMC's are found and GGA's not found.
*/
Ist das eine gute Strategie, oder gibt es da andere (bessere) Ansätze?

Nochmals vielen Dank.

Benutzeravatar
Jörn Weber
Beiträge: 789
Registriert: 03.02.2007 - 16:11
Wohnort: Jena

Re: Zusammenhang der NMEA Datensätze

Beitrag von Jörn Weber » 25.05.2008 - 12:43

johnpatcher hat geschrieben:Hi,

vielen Danke für deine schnelle Antwort. Leider wirft sie neue Fragen auf :).
JLacky hat geschrieben: Du musst also analysieren, welche Datensätze wirklich im NMEA-Strom wann und überhaupt werden, und die Informationen evtl. aus einem anderen Datensatz nehmen, der z.B.GSA garnicht kommt.
Den Satz verstehe ich irgendwie nicht ganz :D.
Der GSA Datensatz kann vom User abgeschaltet worden sein.
Und wie bewerkstelligt man eine solche Analyse am Einfachsten?
Aller Datensätze sollten innerhalb von 5 Sekunden zu sehen sein. Andernfalls sollte dein Programm den User warnen, nach dem Prinzip: "Datensatz XYZ nicht gefunden"
Ich wollte mittlerweile eigentlich so vorgehen: Ich suche nach GGA Datensätzen. Alle Datensätze die danach kommen (wenn sie nicht selber einen Fix beinhalten) beziehen sich auf diesen. Stoße ich auf den nächsten GGA Datensatz, so hab ich meinen nächsten Fix. So gibt es zwar Punkte, welche nicht alle Informationen beinhalten, diese müssten sich dann aber recht einfach aussortieren lassen, falls gewünscht.
Ich weiß nicht welches Ziel du mit dem NMEA-Analyser verfolgst. Daher kann ich dir schlecht einen Rat geben.
Nur ist das Problem, dass der GGA Datensatz zwar durchaus vieles enthält, aber nicht unbedingt vorhanden sein muss. Wie stelle ich das ganze dann an? Dem Quellcode von GPSBabel habe ich folgendes entnommen:
Gebe dem User eine Warnung oder Fehlermeldung aus.
/*
* An input file may have both GGA and GLL and RMC sentences for the exact
* same position fix. If we see a single GGA, start ignoring GLL's and RMC's.
* GLL's will also be ignored if RMC's are found and GGA's not found.
*/
Ist das eine gute Strategie, oder gibt es da andere (bessere) Ansätze?
Ja.



Gruss Joern Weber

johnpatcher
Beiträge: 13
Registriert: 25.05.2008 - 00:16

Re: Zusammenhang der NMEA Datensätze

Beitrag von johnpatcher » 25.05.2008 - 15:13

Naja, im Grunde möchte ich aus einem NMEA Mitschnitt einen Track im GPX Format erstellen. Daher sind Warnungen eher unangebracht, das ganze soll automatisiert ablaufen.

Im Endstadium würde ich das ganze gerne auf einer Webseite benutzten. Sprich man lädt seinen NMEA Log hoch, woraus dann eine GPX Datei entsteht. Diese kann man dann weiter analysieren, Höhenverläufe, etc. anzeigen und sie beispielsweise in Google Maps einbetten.

Mir ist klar, dass es sowas durchaus schon gibt, ich möchte das aber zum einen selber basteln, und zum anderen noch andere Sachen drum herum bauen, welche hier aber nichts zu Sache tun.

In der GPX Datei kann man einem Punkt eben auch DOP (PDOP, HDOP, VDOP) uvm. zuweisen, welche aber nicht in einem Datensatz stehen.
Jörn Weber hat geschrieben:Aller Datensätze sollten innerhalb von 5 Sekunden zu sehen sein. Andernfalls sollte dein Programm den User warnen, nach dem Prinzip: "Datensatz XYZ nicht gefunden"
Ist das irgendwo dokumentiert, oder basiert das auf deinen Erfahrungen? Wie schon gesagt, kann man die Intervalle ja (zumindest bei SiRF-III) einstellen. Das macht die Sache dann ein wenig komplizierter.

Ich denke aber, dass ich mit meinem Ansatz einen Guten Weg verfolge:
  • Ich suche nach GGA Datensätzen, werden diese gefunden ignoriere ich GLL und RMC Datensätze. Finde ich keine GGA, aber RMC Datensätze, so greife ich auf diese zurück. Gibt es beide nicht, dafür aber GLL Datensätze, so werden diese verwendet.
  • Ich gehe nun den Mitschnitt durch, sehe jeden GGA (bzw. RMC/GLL) Datensatz als neuen Punkt an. Sämtliche Datensätze dazwischen ordne ich dem zuvor aufgetretenem GGA (bzw. RMC/GLL) Datensatz zu.
  • Zu guter letzt kann man über diverse Filterkriterien Punkte herauswerfen, die nicht ins Profil passen.
Da GSV bzw. GSA Datensätze sowieso keine Zeitstempel enthalten, erscheint mir diese Lösung als zufriedenstellend. Was meint ihr?

Benutzeravatar
Jörn Weber
Beiträge: 789
Registriert: 03.02.2007 - 16:11
Wohnort: Jena

Re: Zusammenhang der NMEA Datensätze

Beitrag von Jörn Weber » 25.05.2008 - 17:48

Hallo John,
johnpatcher hat geschrieben: Ist das irgendwo dokumentiert, oder basiert das auf deinen Erfahrungen? Wie schon gesagt, kann man die Intervalle ja (zumindest bei SiRF-III) einstellen. Das macht die Sache dann ein wenig komplizierter.
Nein das ist nicht dokumentiert. NMEA ist ein Marine-Standard, in dem GPS nur nebenbei vorkommt.

Gruss Joern Weber

Benutzeravatar
Taurus
Beiträge: 259
Registriert: 02.09.2007 - 14:36
Wohnort: Germany

Re: Zusammenhang der NMEA Datensätze

Beitrag von Taurus » 25.05.2008 - 21:59

Wenn ich das richtig sehe willst du wissen welcher GGA zu welchem GSA gehört, oder ?

johnpatcher
Beiträge: 13
Registriert: 25.05.2008 - 00:16

Re: Zusammenhang der NMEA Datensätze

Beitrag von johnpatcher » 25.05.2008 - 22:17

Genau. Allerdings nicht nur GSA, sondern auch eventuelle GSV, etc.

Benutzeravatar
Taurus
Beiträge: 259
Registriert: 02.09.2007 - 14:36
Wohnort: Germany

Re: Zusammenhang der NMEA Datensätze

Beitrag von Taurus » 26.05.2008 - 12:27

Sag das doch ;-)

Hab da einen Vorschlag. Soweit mir bekannt ist werden die NMEA-Daten stets in einem Block ausgegeben... also bsplsw. GGA,GSA,GSV,... (=Datenblock)
Schmeiß mal deinen Empfänger an und log mal EINEN Datensatz mit. Das heißt log-file starten, den Empfänger einschalten und direkt wieder ausschalten. So das du einen Satz Daten erhältst (Datenrate liegt meistens so bei 1 Hz, sprich in 1sec wird 1 Datenblock ausgegeben).

Wenn du das hast, schnappst du dir den zeitstempel vom GGA und weißt das in der Reihenfolge, wie jetzt in deinem log-file vorgegeben, alle Datensätze zu diesem GGA-Zeitstempel gehören.
Jetzt würd ich ausgehend vom GGA-Datensatz den vorherigen (bzw. nächsten) GSV-Datensatz durch Zeilensprünge finden lassen (in deinem Programm).

johnpatcher
Beiträge: 13
Registriert: 25.05.2008 - 00:16

Re: Zusammenhang der NMEA Datensätze

Beitrag von johnpatcher » 26.05.2008 - 14:39

Bei meinem SiRF-III Chipsatz kann ich das Intervall eines jeden Datensatzes selbst einstellen. Standard ist hier scheinbar 1/1/2/2 (GGA, RMC, GSA, GSV).

Über die Logs könnte ich, wenn überhaupt, nur Rückschlüsse ziehen, wie sich meine GPS Maus verhält, ich wollte das Ding aber standardkonform umsetzen. Da es hierzu scheinbar keinen Standard gibt, erscheint mir der oben gepostete Weg recht sinnvoll.

Einzig und allein die Filterfunktionen zum Schluss muss man dann noch durchdenken, aber an sich stellt das auch kein Problem dar!

Benutzeravatar
Taurus
Beiträge: 259
Registriert: 02.09.2007 - 14:36
Wohnort: Germany

Re: Zusammenhang der NMEA Datensätze

Beitrag von Taurus » 26.05.2008 - 15:40

Glücklicherweise ändern sich ja die DOP-Werte nicht so rapide während 1sec, deshalb denke ich das es keine großen Auswirkungen hat, wenn du zum Zeitpunkt t5 die DOP-Werte von Zeitpunkt t4 hast

johnpatcher
Beiträge: 13
Registriert: 25.05.2008 - 00:16

Re: Zusammenhang der NMEA Datensätze

Beitrag von johnpatcher » 26.05.2008 - 17:18

Taurus hat geschrieben:Glücklicherweise ändern sich ja die DOP-Werte nicht so rapide während 1sec, deshalb denke ich das es keine großen Auswirkungen hat, wenn du zum Zeitpunkt t5 die DOP-Werte von Zeitpunkt t4 hast
Das ist mir durchaus bewusst, ich wollte das Ganze halt einfach nur sauber umsetzen, daher die Frage :). Trotzdem danke für die vielen Antworten, ich werde mich melden, sofern ich was auf die Beine gestellt habe :).

Antworten