Nach dem die Basisstation aufgebaut ist und diese die GPS Daten überträgt folgt jetzt der Aufbau der mobilen Einheit die z. B. in einem Roboter eingesetzt wird. Der wesentliche Unterschied zwischen der mobilen Einheit und der Basisstation ist, dass die mobile Einheit den GPS Datenstrom der Basisstation empfängt und anhand ihrer zusätzlich empfangenen GPS Daten die präzise Position des Roboters ermittelt. Das Vorgehen ist jetzt denkbar einfach. Als erstes erstellen Sie ein Image / eine Kopie der micro-SD Karte der Basisstation und kopieren dieses Image wieder auf eine micro-SD Karte für die mobile Einheit.

Auch die mobile Einheit wurde wieder wie auch schon die Basisstation in eine Brotzeitbox von der IKEA eingebaut. Das Plastik der Brotzeitbox läßt sich sehr gut mit einfachen Mitteln bearbeiten und neigt nicht zum splittern. Das folgende Bild zeigt die mobile Einheit und die Basisstation. In beiden Einheiten ist wieder das RasPiGNSS Modul von www.drfasching.at verbaut.

XBee Pro S1 Module

XBee Pro S1 Module

Nach dem Sie den Raspberry Pi gestartet haben sollten Sie als erstes den Host-Name Ändern. Ich habe diesen auf “mstation” für mobile Station abgeändert. Anschließend sind Sie eigentlich schon fast startklar mit den vorhandenen RTK Bibliothek die genaue Position der mobilen Einheit zu ermitteln.

An die Mobile Station wird am RasPiGNSS Modul die zweite “Tallysman™ TW-4421” Antenne angeschlossen. Weiter erhält die Mobile Station wie auch die Basisstation ein XBee Pro S1 Modul für den schnellen GPS Datenaustausch. Aktuell lasse ich aber beide Einheiten noch über W-LAN kommunizieren.

Raspignss theoretical setup

Raspignss theoretical setup

Die Voraussetzung für den Betrieb ist, dass die mobile Station den GPS Datenstream der Basisstation empfängt. Wie im Artikel zum theoretischen Aufbau erklärt müssen beide Geräte über eine Funkverbindung die GPS Daten austauschen. Im vorherigen Artikel zu der Basisstation wurde durch die Konfiburation der “/usr/bin/rtkbase” Datei der Typ der Datenübertragung festgelegt.

Mobile Station – Software Setup

In diesem Abschnitt geht es darum den GPS Empfänger zu konfigurieren und das Programm RTKRCV (Real Time Positioning Programm) auf der mobilen Einheit auszuführen.

RasPiGNSS Modul initialisieren

Bevor Sie das RasPiGNSS Modul mit der RTK Bibliothek verwenden können muss dieses im BINR Mode initialisiert werden. Dazu finden sich ein paar Skripte im Ordner “/usr/etc/” der RPGTOOLS von www.drfasching.at. Am Besten führen Sie wie bei der Basisstation die Initialisierung des RasPiGNSS Moduls nach jedem Neustart des Raspberry Pi in der mobilen Einheit aus. Ich habe die Anpassungen wieder in der rc.local für die mobile Einheit vorgenommen.

Damit Sie die /ect/rc.local editieren können müssen Sie folgenden Befehl ausführen.

Befehl: sudo nano /etc/rc.local

Jetzt tragen Sie am Ende der Datei die folgenden Befehle ein und speichern die Änderung ab.

(/bin/sleep 5 && /usr/bin/nvsctl -v reset)

(/bin/sleep 7 && /usr/bin/nvsmode -v binr)

(/bin/sleep 9 && /usr/bin/binrcmd -v /home/pi/gnss/rpgtools/etc/init.cmd)

(/bin/sleep 11 && /usr/bin/rtkrcv -s -p 23 -m 24 -o /home/pi/gnss/rtkrover.conf &)

Die rc.local sieht mit den Anpassungen für das Starten des RasPiGNSS Moduls bei mir wie auf dem folgenden Bild gezeigt aus.

RasPiGNSS - rc-local mobile Einheit

RasPiGNSS – rc-local mobile Einheit

Die letzte Zeile “/usr/bin/rtkrcv -s -p 23 -m 24 -o /home/pi/gnss/rtkrover.conf” starten direkt das Programm rtkrcv für die Berechnung der RTK Position der mobilen Einheit. Sie können sich mit dem Programm RTKRCV sich via Telnet (<IP Adresse> <Port>) von jeden Rechner aus verbinden.

Hinweis Telnet

Wenn Sie die Verbindung zum Programm rtkrcv beenden wollen tippen sie bitte “exit” in der Konsole / im Telnet Client. Andernfalls sperren Sie sich aus und können sich nicht mehr via Telnet mit der mobilen Einheit verbinden. Erst nach einem Neustart von rtkrcv ist das dann wieder möglich.

Mehr erfahren Sie auf der Seite www.drfasching.at die noch deutlich tiefer in die Details der Initialisierung des RasPiGNSS GPS Empfängermoduls einsteigt.

Hinweis: BINR Mode Prüfen

Das RasPiGNSS Modul muss auf der mobilen Station wie auch auf der Basisstation im BINR Mode betrieben werden. Diese Einstellung nehmen Sie mit dem zuvor vorgestellten Befehl vor. Es ist möglich mit dem nachfolgenden Befehl zu überprüfen ob das RasPiGNSS Modul der Basisstation im BINR Mode läuft.

Befehl: stty -aF /dev/ttyAMA0

Im folgenden Bild das von der Basisstation stammt ist die Bautrate mit “230400” zu sehen. Somit ist sichergestellt, dass das Modul im BINR Mode läuft und nicht im NMEA Mode der eine niedrigere Bautrate von “115200” hat. Sie sollten auch auf der mobilen Einheit die Bautrate mit “230400” sehen.

RasPiGNSS Module - BINR Mode

RasPiGNSS Module – BINR Mode

Nach dem der GPS Empfänger erfolgreich im BINR Mode initialisiert ist kann das Programm RTKRCV verwendet werde für die Positionsbestimmung und Berechnung der genauen Posistion der mobilen Einheit.

RTKRCV Programm – kurze Einführung Konfiguration

Auf der mobilen Einheit wird das Programm RTKRCV (Real Time Positioning Programm) verwendet. Dieses RTKRCV Programm benötigt eine Konfigurationsdatei mit z. B. der Bezeichnung rtkrcv.conf, die genau beschreibt wie die Berechnung der Positionierung erfolgen soll. In dieser Datei werden auch die beiden GPS Input Streams konfiguriert. Einmal der GPS Datenstream von der Basisstation und der andere GPS Datenstream von der mobilen Einheit und dem RasPiGNSS Modul selber.

In der rtkrcv.conf Datei oder bei mir mit dem Namen rtkrover.conf Datei steckt das Wissen, dass benötigt wird um die Echtzeitpositionierung nicht nur starten zu können sondern diese auch noch so gut wie möglich durch die diversen Konfigurationen zu machen.

Optionen RTKRCV Programm

Die folgenden Optionen des Programmes RTKRCV stehen zur Verfügung wenn Sie dieses ausführen:

-s start RTK server on program startup
-p port port number for telnet console
-m port port number for monitor stream
-d dev terminal device for console
-o file configuration file
-r level output solution status file (0:off,1:states,2:residuals)
-t level debug trace level (0:off,1-5:on)

Ich möchte hier noch auf die Anleitung zu der RTK Bibliothek hinweisen: RTKLIB

RTKRCV Programm manuell starten

Wenn Sie das Programm RTKRCV manuell gestartet haben, dann befinden Sie sich jetzt in der Konsole des RTKRCV Programms. Es gibt jetzt einige Befehle die Sie benötigen um das Programm RTKRCV zu steuern. Die Verfügbaren Befehle sehen Sie wenn sie einfach “h” in der Konsole eintippen. Dann erscheint die Hilfe mit allen möglichen Befehlen. Diese Befehle funktionieren auch wenn Sie sich via Telnet verbunden haben.

Mit dem Parameter -s wird der RTKRCV Server direkt nach dem starten des Programmes ausgeführt. Dieser Parameter ist wichtig, wenn Sie das Programm RTKRCV automatisch starten möchten wie eingangs erklärt mit der Anpassung in der rc.local. Mit dem zweiten Parameter p wird eine Konsole gestartet die über den Port 2950 via Telnet erreichbar ist (telnet <IP-Adresse> 23). So können Sie via Telnet von jedem Rechner aus das laufende Programm RTKRCV steuern ohne direkt an der mobilen Einheit sitzen zu müssen. Ich habe bei mir das RTKRCV Programm mit der dritten Option “-o /home/pi/gnss/rtkrover.conf” gestartet damit die Einstellungen die in der rtkrover.conf Konfiguration hinterlegt sind für mein Roboter-Auto direkt geladen werden beim Starten des Programmes RTKRCV.

Befehl: sudo /usr/bin/rtkrcv -s -p 23 -m 24 -o /home/pi/gnss/rtkrover.conf

Mit dem Befehl Stream in der Konsole des RTKRCV Programmes können Sie sich die empfangenen Streams des GPS Empfängers an der mobilen Einheit sowie den Stream der von der Basisstation kommt anschauen.

Terminal - RTKRCV Streams

Terminal – RTKRCV Streams

RTKRCV IN-Stream – TCP/IP oder seriell

Damit der RTKRCV Server richtig arbeitet muss die Datei rtkrover.conf konfiguriert werden. Diese liegt in meinem Fall im Ordner “/home/pi/gnss/rtkrover.conf”. Ich gehe an dieser Stelle auf die Einstellungen ein die vorgenommen werden müssen um den GPS Datenstrom von der Basisstation empfangen zu können.

Als erstes möchte ich den Empfang der GPS Rohdaten von der Basisstation über das WIFI Modul via TCP/IP Protokoll beschreiben. Nachfolgende ist der ausschnitt aus der rtkrover.conf Datei aufgeführt.

# Base input – TCPIP Stream NVS
inpstr2-type       =tcpcli        # (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,7:ntripcli,8:ftp,9:http)
inpstr2-path       =bstation:5800
inpstr2-format     =nvs      # (0:rtcm2,1:rtcm3,2:oem4,3:oem3,4:ubx,5:ss2,6:hemis,7:skytraq,8:gw10,9:javad,10:nvs,15:sp3)

Als zweites möchte ich den Empfang über die serielle Schnittstelle beschreiben. Bei mir ist das XBee Modul an die serielle Schnittstelle angeschlossen und empfängt das GPS Signal von der Basisstation im RTCM3 Format. Nachfolgende ist der ausschnitt aus der rtkrover.conf Datei aufgeführt.

# Base input – XBee Module
inpstr2-type       =serial        # (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,7:ntripcli,8:ftp,9:http)
inpstr2-path       =ttyUSB0:115200:8:n:1:off
inpstr2-format       =rtcm3
inpstr2-nmeareq    =off        # (0:off,1:latlon,2:single)
inpstr2-nmealat    =0          # (deg)
inpstr2-nmealon    =0          # (deg)

Je nach Konfiguration kann die mobile Einheit z. B. über TCP/IP die Rohdaten oder RTCM3 Daten empfangen oder auch über das XBee Modul an der seriellen Schnittstelle.

RTKRCV OUT-Stream – NMEA

In der rtkrover.conf Konfigurationsdatei ist auch ein NMEA Stream eingestellt der die genauen GPS Koordinaten der Mobilen Einheit zur Verfügung stellt. Dieser Stream wird wie folgt konfiguriert.

# Output 1
outstr1-type       =tcpsvr       # (0:off,1:serial,2:file,3:tcpsvr,4:tcpcli,6:ntripsvr)
outstr1-path       =:2947
outstr1-format     =nmea       # (0:llh,1:xyz,2:enu,3:nmea)

Allerdings ist der Stream noch nicht ganz perfekt. Er zeigt noch vereinzelt Lücken an bei den GPS Koordinaten des Rovers im Telnet. Diese Aussetzer liegen daran, dass die mobile Einheit nicht immer eine Fix Solution hat. Somit schaltet diese zwischen Float und SBAS hin und her je nach Qualität des empfangenen GPS Signals und der Anzahl der GPS Satelliten die von der Basisstation und mobilen Einheit empfangen werden.

telnet - NMEA Stream

telnet – NMEA Stream

Ausgabe RTKRCV Fix Solution

Die Ausgabe innerhalb der Konsole des RTKRCV Programmes über Telnet sieht wie im folgenden Screenshot gezeigt aus. Zu sehen ist auch das eine Fix Solution gefunden wurde. So sollte dann mein Roboter in Zukunft sehr genau navigieren können. Der Befehl in der Konsole des RTKRCV Programmes für diese Anzeige ist status.

Befehl: status

RTK FIX Solution

RTK FIX Solution

Zusammenfassung

Mit dem Aufbau der Basisstation und jetzt der Mobilen Einheit ist das RTK Setup in seinen Grundzügen abgeschlossen. Je nach Anzahl der empfangenen Satelliten und der Qualität des GPS Signals erhalte ich sehr schnell eine SBAS Solution. Nach ca. 15 Minuten habe ich meistens eine Float oder Fix Solution. Allerdings diese noch nicht durchgehend stabil. Hier kommt es immer wieder zu einem Wechsel zwischen Float und Fix als Solution. Alles was jtzt hoffentlich noch folgt ist Feintuning und eventuell eine Fallback Lösung falls das RTK Setup keine Solution berechnen kann. Hier könnte ich mir vorstellen die bekannte GPS Maus parallel noch zu betreiben.


Artikel Übersicht GPS Modul RasPiGNSS:

Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Einführung
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB - Theoretischer Aufbau
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – GPS Antennen Aufbau
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Software Installation
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Konfiguration RTK Basisstation
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Konfiguration RTK Mobile Einheit
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – XBee Funkverbindung Vorraussetzungen
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – XBee serielle Datenübertragung
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Navigation
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – RasPiGNSS im Dauer-Betrieb
Präzise GNSS-Positionierung mit dem Raspberry Pi und RTKLIB – Erfahrungsbericht
(Visited 6.204 times, 1 visits today)