GPS-Tracking mit Ruby

Ich habe letztes Jahr einen GPS-Receiver bei eBay ersteigert, mangels Notebook (kaputt) aber wenig Verwendung dafür. Nun kann so ein Gerät aber auch stationär betrieben einigen Spaß bereiten: ein GPS-Empfänger kann nicht nur seine eigene Position bestimmen, sondern liefert auch die Position der Satelliten (Richtung/Elevation) zurück. Einige GPS-Tools zeigen die aktuellen Informationen in einer 2D-Darstellung an und erleichtern damit das Debugging. Ich bin nun aber ein Freund der Langzeitbeobachtung und sofort tauchen wichtigere Fragen als die eigene Position auf der Erdhalbkugel auf: wie gut ist eigentlich der Empfang an meinem Standort? Welche und wie viele Satelliten sind empfangbar? Sind alle Himmelsrichtungen abgedeckt? Und auf welchen Bahnen verlaufen die Satelliten?

Ein Ruby-Script verbindet sich via TCP mit einem lokal laufenden gpsd, interpretiert die GPGSV-Informationen (Satellites in View) und stellt diese grafisch dar. Richtung und Elevation werden in eine 2D-Darstellung des Himmels über dem Empfänger umgewandelt (Norden ist oben) und die Signalstärke bestimmt die Farbe – je grüner desto besser:


GPS-Satellit Nummer 5, Aufnahmedauer 10 Stunden

Ein GPS/Navstar-Satellit benötigt für einen Erdumlauf zwölf bis dreizehn Stunden. Man wird denselben Satelliten daher ungefähr zweimal pro Tag über der eigenen Position zu Gesicht bekommen, jedes Mal auf einer anderen Flugbahn:


GPS-Satellit Nummer 22, Aufnahmedauer 10 Stunden

 

Das Skript liefert einen Satz PNG-Bilder, eines pro Satellit. Die empfangenen Samples werden in einer Datei zwischengespeichert und beim Start auch von dort nachgeladen, auf diese Weise wird selbst bei Unterbrechungen eine Langzeitbeobachtung möglich. Nach ausreichend vielen Umläufen sollten Abdeckung und Empfangsqualität deutlich erkennbar sein. Neben den Einzelbildern erhalte ich dazu auch ein Gesamtbild:


Übersicht, Aufnahmedauer 12 Stunden

 

Es fällt sofort auf, dass der nördliche Bereich scheinbar gar nicht abgedeckt zu sein scheint und die Emfpangsqualität gen Westen drastisch abnimmt. In diese Richtung ist in meinem Falle ein Hausdach im Weg, immerhin reicht die Signalstärke noch aus, um die Satelliten zu identifizieren. Wie es aussieht, reichen die 55°-Neigung der Umlaufbahnen nicht aus, um meinen Standort (ca. 48° Nord) gegen Norden hin abzudecken, ein ähnliches Bild zeigt sich auch für Mittelamerika (etwa in der Mitte, “GPS coverage at a mid-USA site”). In unseren Breiten sind aber sehr selten weniger als acht Satelliten gleichzeitig am Himmel zu sehen, bei ausreichend freiem Sichtfeld findet ein Empfänger also immer genug Daten um seine eigene Position zu errechnen.

Vielleicht für spätere Versionen interessant: Coverage tracking (wann war ein Satellit empfangbar) und eine etwas schönere Darstellung.