Forum: Digitale Signalverarbeitung / DSP / Machine Learning GPS Daten komprimieren mit 8bitter und wenig SRAM?


von Kai R. (Gast)


Lesenswert?

Moin,

gibt es einen Standard (so wie .gpx) der aber deutlich platzsparender 
ist als gpx, aber nicht an der Genauigkeit (Ort, Zeit) spart?

Sollte auf einen 8-Bitter mit 4k SRAM laufen. (gzip und co. brauchen zu 
viel SRAM)


Danke,
Kai

von Nobody (Gast)


Lesenswert?

NMEA. Das liefert normalerweise eine GPS Receiver standardmässig.

Du kannst die Daten natürlich nach deinen eigenen Vorstellungen 
eindampfen.

von Kai R. (Gast)


Lesenswert?

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 :-/

von Der Rächer der Transistormorde (Gast)


Lesenswert?

Kai R. schrieb:
> Ich dachte da mehr an 4 Byte pro Position

Kannst du dir selbst machen. Die Lat/Lon Koordinaten in verschiedene 
Telegramme packen und nur die Änderung übertragen.

von Nobody (Gast)


Lesenswert?

Kai R. schrieb:
> Leider ist selbst der kurze $GPGLL Satz mit 44 Byte noch viel zu groß.

Was hindert dich daran die benötigten Werte aus dem 44 Byte heraus zu 
ziehen und von ASCII (ein Byte pro Zeichen) in eine Platzsparende 
Binärform zu überführen.

Beim Einkaufen kaufts Du doch auch nicht den ganzen Supermarkt. ;-)

von Max H. (hartl192)


Lesenswert?

Die Latitude und Longitude könntest du einfach als vorzeichenbehaftete 
Festkommazahl in je 3 Byte speichern. Abhängig davon wie genau du die 
Position speichern willst, könntest du auch weniger Bits verwenden.

: Bearbeitet durch User
von Jürgen S. (jurs)


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.

von Kai R. (Gast)


Lesenswert?

Leider hab ich nur ~20 kbit frei (es ist kein neues Design).

von holger (Gast)


Lesenswert?

>Leider hab ich nur ~20 kbit frei (es ist kein neues Design).

Das sind 2,5kB. Kleb dir einen SPI Flash mit 4MB unter
die Platine. Dann hat dein leiden ein Ende. Oder
tausch den vorhandenen Speicher aus wenns geht.

von Christian B. (casandro)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.