GPS Daten komprimieren mit 8bitter und wenig SRAM?

#3725895
Lesenswert?

Kai R. schrieb:
> Leider ist selbst der kurze $GPGLL Satz mit 44 Byte noch viel zu groß.
> Ich dachte da mehr an 4 Byte pro Position...
>
> Das Problem ist doch schon mindestens 14 Jahre alt :-/

Bei einem GPS-Fix einmal pro Sekunde über 14 Jahre mal 44 Bytes pro Fix 
sind das:
14  365  86400 * 44 Bytes = 19426176000 Bytes = ca. 19426 MB

Damit bekommst Du in 14 Jahren eine 32 GB SD-Karte zu knapp zweidrittel 
vollgeschrieben.

Warum willst Du die Daten komprimieren, wenn sie locker unkomprimiert zu 
verarbeiten sind?

Und falls Dir 44 Bytes zu viel sind:
- LAT in Millionstel Grad ==> long
- LON in Millionstel Grad ==> long
- Sekunden ab z.B. 1.1.2000 ==> long
3 * sizeof(long) = 12 Bytes

Dann bekommst Du auf eine 32 GB SD-Karte mehr als 84 Jahre Aufzeichnung 
mit sekündlichem GPS-Fix drauf.
#3726705
Lesenswert?

Schau Dir erst mal das Signal an. Wahrscheinlich kannst Du einfach 2 
Datensatzformate definieren. Eines mit der kompletten Position (das dann 
groß ist), und eines mit Differenzen. Das kleine mit den Differenzen 
kannst du dann für jede Positionsangabe verwenden. Falls die Differenz 
mal größer ist, kannst Du die vollständige Position abspeichern. Das ist 
so ein Kompromiss zwischen Aufwand und Größe.

Willst Du das ideal machen, mach folgendes:
Speichere nur Differenzen, wobei Du entweder die Anfangsposition direkt 
speicherst, oder von der Anfangsposition 0 ausgehst (und dann eine große 
Position hast).
Messe erst mal ein paar Strecken durch, und bilde die Differenzen 
zwischen den Positionsdaten. Mach eine Häufigkeitsverteilung über diese 
Differenzen, und bestimme dann, zum Beispiel über den Huffman 
Algorithmus die optimale Kodierung für jede Differenz. Wahrscheinlich 
wirst Du dann für kleine Differenzen weniger Bits haben als für große. 
Richtig gemacht wird das ideal.
Die Tabelle die Du zur Umsetzung brauchst kannst Du ja konstant auf 
beiden Seiten haben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren