RasPiGNSS und RTKLIB für Verbesserung der Genauigkeit auf einem Rover

Der Autor (“Roboter-Autos mit dem Raspberry Pi“) und Maker Ingmar Stapel beschreibt in einem ausführlichen Artikel den Aufbau eines Systems aus einer mobilen und einer festen Station zur Verbesserung der GNSS-Genauigkeit. Zum Einsatz kommen zwei RaspberryPi und zwei RasPiGNSS-Module (“Aldebaran” ~149€ von Dr. Franz Fasching) mit NV08C-CSM (hier schon mal beschrieben) von NVS Technologies AG.

Der Artikel beschreibt den theoretischen Hintergrund und den praktischen Aufbau. Im Unterschied zu OpenDGPS, wo die Differential Signale per NTRIP übertragen werden, benutzt Stapel die Daten der fixen Station um sie auf dem Rover mittels RTKLIB zu prozessieren und so die Genauigkeit der eigenen Position zu verbessern.

Bisher sind noch nicht alle Artikel erschienen. Es ist aber dennoch eine interessante Lektüre, wenn man sich mit dem Thema (insbesondere RTKLIB auf dem RasPi) beschäftigen will.

Der Anbieter des RasPiGNSS-Moduls hatte auf den Grazer Linux-Tagen 2016 einen interessanten Vortrag über “Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB”. Die Folien findet man hier.

Apache SIS: EPSG Koordinaten umrechnen (und mehr)

Eine der – für die meisten – weniger schönen Beschäftigungen im Umfeld von GPS/GNSS ist die Umwandlung von Koordinaten von einem “Coordinate Reference System” (CRS) in ein anderes. Im Allgemeinen sprechen die Receiver WGS84. Das genügt auch solange man die Daten nicht mit anderen Systemen austauschen oder abgleichen möchte.

Unter EPSG versteht man einen einheitlichen Standard von Coordinate Reference Systems. Derzeit sind knapp 6000 solcher Systeme gebräuchlich. Wahrscheinlich gibt es jedoch noch wesentlich mehr, die nicht veröffentlicht wurden. Entwickelt wurde das System im Rahmen einer Arbeitsgruppe der International Association of Oil & Gas Producers und firmiert unter dem Namen “European Petroleum Survey Group Geodesy“.

Unter der Katalognummer EPSG 4326 verbirgt sich zum Beispiel das genannte WGS84. Andere Systeme, wie Gauss-Krüger mit verschiedenen Anpassungen an die jeweiligen Breiten und Längen sind zum Beispiel in Deutschland gültig.

Ein typischer Fall für die Konversion verschiedener Koordinatensystem ist beispielsweise die Gebäude-Datenbank des österreichischen Bundesamt für Eich- und Vermessungswesen. in mehreren Excel-Dateien (sic!) sind Strassen, Hausnummern und Gebäudetypen aller österreichischen Bundesländer(!) aufgelistet. Zusätzlich ist jedes Gebäude auch mit einer (Punkt-)Koordinate verzeichnet.

Die Koordinaten sind dabei allerdings in zwei verschiedenen CRS gelistet: EPSG 31255 und EPSG 31266. D.h. bei einer Konversion genügt nicht eine Formel sondern man benötigt mindestens zusätzliche Variablen.

Mit Hilfe der Apache SIS Bibliothek steht ein Java-Framework zur Verfügung, dass die EPSG-Spezifikationen lesen kann und Konversionen von über 5000 Systemen durchführen kann.

ps: Neben der bemerkenswerten Tatsache, dass Österreich offensichtlich in Sachen “Offene Daten” ein Vorreiter ist, muss man geoland.at erwähnen. Dort kann man unter anderem Gauss-Krüger-Daten verschiedener CRS eintragen und sich auf der Karte anzeigen lassen.

 

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.

 

Empfehlung: BeagleBone Black

Das Raspberry Pi hat viel Aufmerksamkeit nicht nur bei den Bastlern erregt und dürfte zu einem Revival der DIY-Elektronik-Szene geführt haben. Und sicher hat es mindestens dafür einen dicken Pluspunkt verdient. Für alles andere verdient das RasPi leider nur befriedigende Noten. Das Layout ist mehr als mangelhaft, die Ausführung ist nur 2- und das Software-Packaging ist schlecht bis unterirdisch.

Gutes Layout und ausgezeichnete Verarbeitung.

Ganz anders das BeagleBone Black. Abgesehen von der sowieso leistungsfähigeren Ausstattung ist das Layout und die Verarbeitung wesentlich besser. Aber vor allem ist die Softwareausstattung und Dokumentation um Welten besser. Auf dem integrierten 2GByte Speicher ist eine lauffähige Ångström-Linux-Distribution installiert. Und: bei der Inbetriebnahme kann man dieses interne Medium direkt an einem Rechner mounten. Über USB kann man darüber hinaus sogar ein Netzwerkinterface anschliessen. Auch Neulinge ohne Erfahrung mit Ethernet und DHCP erreichen so nach wenigen Klicks den integrierten WebServer auf dem BeagleBone.

Ein echtes Highlight ist jedoch Beaglescript. Eine Brücke zwischen JavaScript und dem System. D.h. mit JavaScript kann man auf die Hardware zugreifen und so erste Gehversuche mit den I/O-Ports auf dem Gerät machen.

Überhaupt, die Ports: Mit Dutzenden digitalen und einigen Analogports dürfte das BeagleBone Black das ideale Gerät für Bastler sein. Es gibt bereits jetzt etliche Projekte, die sogenannte Capes entwickeln. Diese Huckepack-Platinen bieten zum Beispiel GPS-, Accelerometer, Magnetfeldsensoren oder Thermometer. Ein schönes Beispiel findet man auf Hipstercircuits. Dort wird beschrieben, wie ein BeagleBone als Controller für einen 3D-Drucker verwendet werden kann.