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.

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!)

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.

 

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

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.

 

Handgestrickter GPS-Receiver in einem FPGA

Die Bereitschaft der GNSS-Receiver-Hersteller, die Rohdaten zur Verfügung zu stellen scheint sich in letzter Zeit nicht signifikant zu verbessern. Dies muss inzwischen aber niemanden mehr ärgern oder allzu tief in die Tasche greifen lassen. Inzwischen gibt es gute Referenzimplementierungen für selbst gemachte GNSS-Receiver. Den Anfang machte Andrew Holme mit einem Spartan-3-FPGA in Zusammenarbeit mit einem Raspberry Pi.

Die Besonderheit bei diesem Projekt ist die Programmierung des FPGA mit Forth. Sicher keine Allerweltssprache aber für den Zweck hervorragend geeignet. Der Sprachcore passt ohne Probleme in den inzwischen recht kleinen Spartan 3 mit unter 10k Logic Cells. Das Projekt ist ein hervorragender Ausgangspunkt für eigene Entwicklungen.

Basierend darauf hat John Seamons vor kurzem eine eigene Implementierung mit einem Spartan 6 und einem Beaglebone Black gemacht. Der FPGA wäre tatsächlich in der Lage, die Rohdaten aufzubereiten und der Prozessor auf dem Beaglebone hätte genug Power, die Differenzsignale zu berechnen. Die Kosten für eine solche Kombination sind allerdings derzeit noch mit knapp 150€ zu hoch. Spannender könnten dann Systeme sein, die über einen Zynq-Prozessor von Xilinx verfügen. Dieser hat zwei vollwertige ARM-Kerne und einen groß bemessenen FPGA gleich mit drin. Für $15 pro Zynq liessen sich wesentlich kostengünstigere und stromsparende GNSS-Reciever bauen.

 

Piksi: 1cm Genauigkeit mit DGPS bei Kickstarter

Piksi Modul (Quelle: swift-nav.com)

Piksi Modul (Quelle: swift-nav.com)

Bei Kickstarter ist vor wenigen Tagen ein Crowdfunding Projekt gestartet, dass sich ideal für OpenDGPS eignen würde. Wenn es nicht viel zu teuer wäre. Mit $900 für zwei Piksi-Module verlangen die Macher fast das zehnfache der Materialkosten. Der Preis scheint aber gerechtfertigt, da schon jetzt die angestrebte Summe von $14.000 weit überschritten ist.

Ein Piksi-Modul besteht aus Antenne, einem Analog-Digital-Wandler, einem Startan-6 (jenem FPGA-Chip auf dem Mojo) und einem ARM Cortex-M4 (STM32F4, über diese günstige CPU hatten wir uns letzte Woche einen Vortrag auf der Makers Faire in Hannover angehört). D.h. Piksi verfügt selbst nicht über einen eigenständigen GNSS-Receiver und stellt damit eine neue Kategorie dar, die man in Zukunft häufiger antreffen dürfte. Zumal das Design mit einem Stromverbrauch von 500mA sehr sparsam ist.

Die Macher von Swift Navigation aus Kalifornien versprechen eine Genauigkeit von bis hinunter zu 1cm. Dabei muss man aber berücksichtigen, dass dazu das Differenzsignal von einer geeichten Feststation kommen muss. Andernfalls gilt diese Genauigkeit nur in Bezug zur Referenzstation. Insofern dürfte es bei einigen Käufern ein böses Erwachen geben. Denn immerhin sind DGPS-Signale noch nicht frei verfügbar.

Interessant ist das Projekt auch, weil sowohl Hardware als auch Software Open Source ist. Damit ist es auch anderen möglich, das Modul nachzubauen und dann bei wesentlich geringeren Kosten zu landen.

[Update] Mit Sicherheit wäre ein Zynq 7010 oder 7020 für das Projekt wesentlich besser geeignet als die Kombination aus Spartan-6 und Cortex-M4. Denn erstens ist darin ein wesentlich leistungsfähigerer ARM-Prozessor drin und zweitens hat der FPGA-Teil bis zu 10 mal mehr Logicelemente. Bei einer Abnahme von x000 Stück kostet eine solche CPU lediglich $15. [Update]

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.