Aside

OpenDGPS ist eine freie Initiative von GNSS-Enthusiasten. Ziel ist der Aufbau eines Netzes von festen Stationen, die Differential-Signale zur Verfügung stellen und damit jedem Empfänger eine Ortung bis zu einer Genauigkeit im zweistelligen Zentimeterbereich ermöglichen. Mehr ->

Rohdaten unter Android N

Nach der Ankündigung Googles, dass es in Android N Zugriff auf die GNSS-Rohdaten geben würde beschäftigen sich inzwischen einige Entwickler mit dem Thema. Eine Ausführliche Analyse der verfügbaren Daten hat unter anderem Rokubun (ein ESA funded StartUp) durchgeführt. Unter dem Titel “First look at Android N GNSS raw measurements” werden verschiedene Funktionen beschrieben und auf die verfügbaren Formate eingegangen.

(Danke an OpenDEM für den Tipp!)

Die Höhenvermessung der Welt: OpenDEM

Ein Kommentar zu “Android N mit Zugriff auf Raw GPS Data?” verwies auf ein uns bisher unbekanntes Projekt zur Höhenvermessung der Welt mit Hilfe der Crowd. OpenDEM startete bereits 2011 und möchte mit verschiedenen Methoden eine offene Quelle für Höhen- und Tiefenangaben aufbauen.

Neben App und Mapeditor bietet das Projekt Links zu frei verfügbaren Daten und interessante Informationen aus dem Bereich.

Aufbau einer ersten Testumgebung

In den nächsten Wochen soll es einen ersten Test für die grundlegenden Funktionen von OpenDGPS geben. Eine mobile Station soll mit Hilfe eines RTL-Dongles die Korrekturdaten für die eigene Position ermitteln und diese via Ntrip (Server, Caster & Client sind hier verfügbar) an eine entfernte Station senden, die die Differential-Daten verwendet um die eigene Positionsgenauigkeit zu verbessern. Ein Vergleichs-Receiver an dieser Station dient dazu, die Verbesserung bei verschiedenen Situationen (delay, Wetter) zu vergleichen.

Testsetup mit einer Basisstation und einem "Rover"

Testsetup mit einer Basisstation und einem “Rover”

Die Distanz beider Stationen beträgt 3,63km und beide sind an einer dauerhaften DSL-Verbindung am Netz.

Setup Basis:

Die Basisstation besteht aus einem parallella mit einem Dual Core ARM A9 auf Basis eines Zynq7020 und einem 16 Core Epiphany SMP. Sowohl die Programming Logic als auch der Multicore-Prozessor kommen im ersten Schritt nicht zum Einsatz. Später soll möglicherweise der FPGA des Zynqs einige Operationen des RTL-SDR-Parts (z.B. via GPS Demystified) oder/und RTKLIB übernehmen.

Als Receiver für die GPS Daten kommt ein einfacher 10€ DAB+ Dongle mit RTL-Chip zum Einsatz. Auf dem SDR-GPS-Blog von Peter Hahn findet sich eine Anleitung, wie man mit Hilfe von GNURadio an die GNSS-Daten gelangt.

Die Korrekturdaten sollen mit Hilfe des NTRIP-Protokolls (über einen Proxy) veröffentlicht werden. Die interessante Frage ist erstens, wie zeitnah ein 1GHz Dual Core ARM die Daten mit Hilfe der RTKLIB berechnen kann und zweitens, wie zeitnah die Daten tatsächlich für welche Genauigkeit beim Rover sein müssen. Es ist klar, dass je aktueller die Differential-Daten tatsächlich sind, desto genauer wird die Korrektur sein. Möglicherweise genügt jedoch eine Update-Frequenz von Minuten um eine signifikante Steigerung der Genauigkeit zu erlangen. Zumal in dem Testsetup vorerst nur eine feste Station die Daten liefert.

Für den Test ist nicht vorgesehen, die Basisstation aufwendig zu eichen. Es soll lediglich eine mehrere Stunden dauernde Korrektur vorgenommen werden um eine annähernde Genauigkeit zu erreichen. Da die Station nicht bewegt wird dürfte sich die Ungenauigkeit an dieser Stelle nicht auf die Qualität der Korrekturdaten auswirken.

Setup “Rover”:

Der Rover ist in unserem Test keine bewegliche Einheit sondern ein stationäres System. Es soll zunächst nur dazu dienen, den Gewinn an Genauigkeit zu definieren. Es wird ein UDOO Quad Core verwendet. Das UDOO verfügt neben einem normalen ARM-System auch über eine Arduino-Einheit die uns die benötigten I/Os bietet. Als GPS-Receiver kommen zwei NaviLock NL 507E TTL zum Einsatz. Der darin verbaute u-blox kann mit NTRIP-Daten umgehen und sie zur Korrektur verwenden.

Dabei soll der nur einer der beiden Receiver die Korrekturdaten erhalten. Der andere Empfänger verwendet nur die onboard Positionierung. Dadurch können die beiden Daten verglichen werden und hoffentlich die Unterschiede in der Genauigkeit sichtbar werden.

Auf dem Rover-System läuft keine RTKLIB, die NMEA-Daten werden lediglich über TTL zur späteren Analyse gespeichert.

GPS entschlüsselt

Für einen GPS-Receiver braucht es nicht viel: eine RF-Einheit mit Antenne und ~1,5 GHz, einen Wandler und einen Prozessor. Und dann muss man nur noch wissen, wie man aus den Daten auch die Informationen rausfiltert, die man sucht.

Den Softwarepart hat sich der @field_hamster vorgenommen. In seinem neuen Blog GPS DEMYSTIFIED beschreibt er den Prozess, wie die empfangenen Daten decodiert werden können. In seinen ersten Posts erklärt er, was ein Gold Code ist (Identifier zur Erkennung der Satelliten und dem korrekten Datenempfang) und wie man aus dem Datenstream mit Hilfe eines simplen XOR-Tricks die GPS-Daten filtern kann, ohne einen Megaflop-Prozessor bemühen zu müssen.

Die Hardwarebasis ist das Kickstarter-Projekt KiwiSDR, das einen Xilinx Artix 7 FPGA auf einem Beagle Cape anbietet. Allerdings sollten sich die Ausführungen auch leicht auf andere Hardware transportieren lassen. So sind sie eine hervorragende Ergänzung zu dem Homemade GPS Receiver von Andrew Holme. Dieses Hardware Project basiert auf einem sehr preiswerten Spartan 3.

Michael Field (@field_hamster) hat darüber hinaus auch noch weitere Projekte auf Github, wie einen FPGA WebServer und FPGA GigabitTx. Eigentlich schon alle grundlegenden Module, die man für OpenDGPS bräuchte.

Kaltstart Position Fix mit FPGA-Lösung beschleunigen

masterarbeitDie Masterarbeit eines Studenten (Michael Sammartino) der Youngstown State University untersucht die Möglichkeit, die “receiver’s time to first fix from a cold start” zu minimieren. Mit Hilfe eines FPGA (Cyclone IV auf dem DE2 Board von Terasic) erreicht seine Lösung, die 4 mal schneller ist (1,7 sec.) als die Zeit, die ein Garmin Forerunner (8 sec.) braucht.

Obwohl er leider den Code nur in kleinen Auszügen veröffentlicht hat kann man davon ausgehen, dass die verwendete Hardware (FPGA-Board ~250€ plus custom ASIC RF board) eigentlich überdimensioniert ist. Effektiv müsste ein Spartan 6 und ein GPS-Modul, dass die Rohdaten liefert ausreichen.

 

Vermisste Einführung in die RTKLIB

Sieht man sich den Code der RTKLIB auf github an kann man zwei Dinge feststellen: ein ausgesprochen sauberer und effizienter Code und leider nur sehr spärliche Code-Documentation. Zwar gibt es auf der Homepage (rtklib.com) Handbücher. Diese beschreiben aber nur die GUI und Commandline-Benutzung. Der C-Code selbst ist weder selbst- noch fremderklärend.

Seit Anfang des Jahres gibt es jedoch das Blog-Projekt rtklibexplorer. Dort wird in vielen Posts sowohl die Lib selbst beschrieben als auch die Verwendung von verschiedenen Receivern dargestellt.

Ein Beispiel für das Trackprocessing aus dem rtklibexplorer. [Quelle: https://rtklibexplorer.wordpress.com/2016/05/25/new-data-moving-rover-fixed-base/]

Android N mit Zugriff auf Raw GPS Data?

Auf der Google I/O sagte Steve Malkos, Technical Manager vom Android Location and Context Team, dass Apps auf Android N zukünftig Zugriff auf die GPS-Rohdaten haben werden. Das wäre tatsächlich für OpenDGPS eine ausgezeichnete Nachricht. Tatsächlich liess sich diese Aussage bisher nicht bestätigen. Möglicherweise gilt diese Aussage auch nur für einige Modelle, da es bisher nicht zu den Anforderungen an die Hardware gehörte, die GPS Pseudoranges auszugeben. Zumindest bei einigen Broadcom-Chips dürfte das nicht unbedingt gegeben sein.

Bleibt auch noch die Frage ob das auch für Glonass, Galileo und BeiDou gilt.

https://www.youtube.com/watch?v=OEvycEMoLUg

Update

OpenDGPS hat sich einige Zeit in einem Hybernation-Modus befunden. Aus privaten Gründen konnte sich kein Unterstützer darum kümmern. Wir hoffen dem Projekt nun wieder Schwung geben zu können.

Zunächst werden wir uns darum kümmern, ein Wiki und/oder eine Mailinglist in Betrieb nehmen zu können. Hilfe ist wie immer willkommen.

Embedded World 2014

Die größte Messe für Embedded Systeme findet jedes Jahr im Februar in Nürnberg statt. Mit sehr knappem Zeitbudget haben wir es geschafft am letzten Tag eine lange Wunschliste mit Ständen von Herstellern, Entwicklungsbüros und vor allem Gadgets zu besuchen.

Adapteva war mit dem Parallella-Board auf der Messe vertreten. Der Stand war gut besucht und die Demos auf den Bildschirmen beeindruckend. Natürlich gab es keine Boards zu kaufen und auch die Backer des erfolgreichen Kickstarter-Projekts gingen leer aus.

Auf dem Adapteva-Board ist neben dem Parallel-Prozessing-Chip Epiphany auch ein Zynq von Xilinx verbaut. Und dieser FPGA mit zwei ARM-Kernen war definitiv der heimliche Star der embedded world 2014. Alle Hersteller mit Platinen auf der Basis eines Zynqs hätten alleine schon die größte Halle füllen können.

Aufgefallen ist uns ein Board mit dem launigen Namen “Gimme2″. Der Hersteller af inventions aus Braunschweig verwendet den Zynq für die Steuerung einer Stereokamera mit zwei 10Mp-CMOS-Chips. Insbesondere für die Robotik ausgelegt verfügt das Board über zwei Gigabit-Ethernet-Ports und zusätzliche I/Os.

Bei dem Stand von Vision Components konnte man andere Lösungen für Kamera-Systeme mit mehreren Bildnehmern ansehen. Basierend auf einem DSP von Texas Instruments können so ohne zusätzlichen CPU-Aufwand beispielsweise 3D-Daten aus einem Zweikamerasystem ermittelt werden.

Ein anderer Hersteller und Reseller von FPGA-Lösungen ist die Firma Bayer DSP Solutions aus Düsseldorf. Eines ihrer interessanten Produkte ist die Xynergy-Reihe. Statt eines SoC mit ARM und FPGA findet sich hier ein Spartan 6 und STM32 Cortex-M4 separat auf einer kleinen Platine mit SO-DIMM-Anschluss.

Der Besuch bei der Firma enclustra aus Zürich hat gezeigt, dass die Boards der Mars- und Mercury-Reihe auch in echt sehr kompakt und gut verarbeitet sind. Die Mars-Boards basieren wiederum auf einem Zynq und die Mercury-Boards haben die vergleichbaren Cyclone-Chips von Altera drauf. Im Prinzip ist er mit dem Zynq vergleichbar. Allerdings brachten mehrere Gespräche auf der Messe zu Tage, dass der Cyclone mit über 100 Gbit/s offensichtlich eine wesentlich höhere Datenrate zwischen den ARM-Prozessoren und dem FPGA-Core bietet. Demgegenüber wurde auf dem Xilinx-Stand gezeigt, wie eine App auf einem Zynq pro Core jeweils 8 GBit/s zum FPGA überträgt.

Keine Hardware zeigte die Firma antmicro aus Poznan. Dennoch war sie gefühlt auf jedem dritten Stand präsent. Das junge Team ist extrem engagiert im Bereich der Betriebssysteme für embedded Systeme. Dabei liegt ihr Fokus auf Open Source Systemen. So portieren sie beispielsweise das freie OS ecos auf die Mars-Reihe von enclustra und auf das oben genannte Parallela-Board. Ihre Software geben sie weitestgehend auf github frei.

Für das Projekt OpenDGPS stellte sich die Firma round solutions aus Neu-Isenburg bei Frankfurt als Goldgrube heraus. Mit Trimble und Telit haben sie zwei Hersteller im Portfolio, die GNSS-Bausteine mit RTK-Funktionalität bieten und auf Genauigkeiten im Zentimeterbereich kommen. In der Pipeline, aber noch nicht verfügbar soll ein Chip mit nur 12mm Größe aus der Jupiter-Reihe sein, der auch die Rohdaten rausgibt. Die aktuell verfügbaren Module beherrschen GPS, GLONASS, GALILEO und QZSS und unterstützen sogar “Jammer recjection”. Mit einem Preis von unter 20€ ist das Modul für OpenDGPS extrem interessant.

Selbst mit unserer beschränkten Zeit war die embedded world in diesem Jahr eine fruchtbare Veranstaltung. Deutlich fiel auf, dass die Zeit der MiniPCs auf der Basis von 8086ern vorbei ist. ARM beherrscht den gesamten Markt und zunehmend werden FPGAs damit gekoppelt. Für alle Arten der Signalverarbeitung – egal ob Audio, Video oder Sensoren – bietet diese Kombination hohe Rechenleistung bei sehr niedrigem Stromverbrauch.

FPGAs und SDR auf dem #30c3

Spannende Vorträge über vier Tage 30C3. Oft auch gleichzeitig.

Spannende Vorträge über vier Tage 30C3. Oft auch gleichzeitig.

Morgen startet der 30C3 mit einigen spannenden Talks. In diesem Jahr liegt der Focus der Veranstalter natürlich noch mehr als sonst auf der permanten Überwachung. Kritisch wird hier selbstverständlich auch die Funktion aller mobilen Geräte die Position permanent zu tracken. Am Samstag findet dazu um 12:45 der Talk “lecture: Glass Hacks” statt in dem Stephen Balaban über Google Glass spricht. Am gleichen Tag um 16:00 beschreibt Felix “tmbinc” Domke in “Script your car” wie man die Firmware seines Autos aufmacht und so auch an die GPS-Daten kommt oder diese modiziert. Einen Tag später um 11:30 berichtet Maria Xynou über die Überwachung in Indien.

Aus technischer Sicht sind mehrere Vorträge über FPGAs interessant: An Tag 2 gibt es um 12:45 einen Talk mit dem Titel “Extracting keys from FPGAs, OTP Tokens and Door Locks” von David Oswald von der Ruhr-Uni Bochum und um 17:15 dann “FPGA 101 – Making awesome stuff with FPGAs” von Karsten Becker (von den Parttimescientists). Am gleichen Tag zu späterer Stunde um 21:45 wird dann ebenfalls von Karsten Becker noch PSHDL vorgestellt, das den Anspruch erfüllen soll, die Programmierung von FPGAs so einfach zu machen, wie die des Arduino.