Das Infolexikon
...und Blog über die Uni FrankfurtInformatik und Kram
Da wir lange nicht wußten, wo wir das für die Uni ausgearbeitete Material unterbringen sollten und auch einen schrecklichen Drang hatten der Welt diverse Sachen aufzudrücken...
| Jogging, GPS und Gnuplot |
Da ich ja jetzt nen XDA mit GPS habe, bin ich verpflichtet, was cooles damit zu machen...Also GPS-Daten loggen, analysieren, und ordentlich in ein Diagram plotten. So kann man sich dann easy seine Jogging-Erfolge und Statistiken anzeigen lassen.
Vorbereitung
XDA/PDA mit GPS-Logging-Software, ich habe in meinem Versuch VisualGPSce benutzt,http://www.visualgps.net/VisualGPSce/Dann auf zum Joggen (jahaaa, hab ich bock), Logging anschalten, Laufen, Logging ausschalten.Die Daten werden im NMEA-Format geloggt, das ist ein gängiges Format für GPS-Daten.
Mal schnell mit vi geöffnet, hat man lauter Blöcke mit folgendem Inhalt:
$GPRMC,091802.9,A,5008.932410,N,00838.324603,E,,,200208,,,A*6E $GPGSA,A,3,03,18,19,21,,,,,,,,,3.6,1.9,3.1*3C $GPVTG,,T,,M,0.0,N,0.0,K*4E $GPGSV,3,1,12,03,76,281,30,06,13,115,18,08,08,331,17,15,09,035,*76 $GPGSV,3,2,12,16,39,191,26,18,46,074,23,19,44,292,22,21,26,064,21*75 $GPGSV,3,3,12,22,49,140,,25,08,285,,26,07,023,,27,10,306,17*77 $GPGGA,091804.0,5008.932415,N,00838.324587,E,1,04,3.8,119.5,M,,,,*01
Das Programm
Da ich nun weiß, welche Daten ich woher bekomme, und ausserdem bock hatte, mal wieder was mit c++ zu machen, ein kleines Prog gebaut, dass die Log-Datei nach relevanten Einträgen durchsucht, und mir je Zeit, km/h und die vom prog errechnete Durchschnittsgeschwindigkeit in eine Datei schreibt.Über die ermittelte Durchschnittsgeschwindigkeit lässt sich nun anhand der Laufdauer bestimmen, wie weit man ungefähr gelaufen ist.
Ich werde das ganze wohl aber demnächst nochmal "glätten", um die Fehlmessungen zu beseitigen und eine genauere Wegstreckenmessung zu realisieren..
Hier erstmal die Version 1.0 von meinem gps-analyzer, der spuckt die Tabelle aus, die man dann für gnuplot oder ähnliches verwenden kann.
Plotten mit gnuplot
Gar nicht soo einfach!eigentlich reicht ein einfaches
gnuplot> plot "my_gps_data.txt"
um die Daten in ne Grafik zu bekommen. Aber wir sind anspruchsvoller, wir wollen Achsenbeschriftungen, Farben, das ganze in Postscript speichern, und Gitterlinien.
gnuplot> set xlabel "Uhrzeit"
gnuplot> set ylabel "km/h"
gnuplot> set out "diagram.ps"
gnuplot> set terminal post enhanced color solid
gnuplot> plot "my_gps_data.txt" using 1:2 title "Geschwindigkeit" with lines linewidth 2,\
"my_gps_data.txt" using 1:3 title "Durchschnittsgeschwindigkeit" with lines linewidth 2
Bei mir sieht das ganze so aus:
Update
Mittlerweile hab ich endlich mal mit gtkmm eine minimalistische GUI und einen system-call für gnuplot eingebaut..Der Filechooser ist nach stundenlangem Lesen auch endlich drin, und soweit sieht alles ganz gut aus..Was fehlt sind noch error-correction und abfangen von bösartigen Sachen..
| Erstellt | 22. Februar 2008 00:15:24 | Geändert | 27. Februar 2008 01:59:12 |
|---|---|---|---|
| Von | Tobias Weis | Kategorien | PDA Linux |
| 4 Kommentar(e) | |||
Kommentare
Was du noch einbauen könntest, wäre eine grafische Darstellung der Route, die du gelaufen bist. Das wäre recht einfach, wenn du einen weg findest, die Google Maps API anzusprechen und eine Polylinie auf eine entsprechende karte zu malen, die alle gps positionen verbindet.
Ja das mit der Google API ist eine kritische Sache. Die Terms of Service für den Dienst kann man hier nachlesen: http://code.google.com/apis/maps/terms.htmlzusammengefasst steht da: es sei ein Dienst um Google Inhalte auf einer "Website" anzuzeigen, welche nicht ausschließlich für Angemeldete oder ähnlich eingeschränkte Benutzergruppen verfügbar sein muss (You may not use the API for any service that requires a subscription or other restricted access, or for which a fee is charged) "Your use of this Content is limited to displaying it to end users within the Service itself, and in the same manner, form, format, and appearance as it is provided by the Service.", also streng genommen könnte man den Inhalt genauso im App anzeigen wie im Browser und es wäre sogar legal ;) Aber zur Sicherheit würde ich wirklich lieber nochmal was an Google schreiben, bevor die uns noch mehr hassen als eh scho...
ausserdem kann ein Google-Maps-API-key nur von einem bestimmten Server verwendet werden. D.h. ich müsste eine I-Net-Verbindung vorraussetzen, Routen-Punkte an Infolexikon.de schicken, Karte erzeugen lassen, und diese dann wieder zurück ans Programm schicken. Also nicht cool..Ich werd mich mal mit OpenMaps beschäftigen, vllt geht da was...

aber gnuplot is ja rischtisch geil für sowas, deluxe