Archived
expand implementation
This commit is contained in:
Vendored
+1
@@ -75,6 +75,7 @@
|
||||
"bürstenbehafteten",
|
||||
"Christof",
|
||||
"CPHA",
|
||||
"Desktopumgebung",
|
||||
"DGNSS",
|
||||
"documentclass",
|
||||
"Doxygen",
|
||||
|
||||
+4
-1
@@ -32,6 +32,8 @@
|
||||
\usepackage{scrhack}
|
||||
\usepackage{enumitem} % Liste mit keinen Abstand zwischen den Punkten
|
||||
\usepackage{url} % Zum einfügen von URLs ohne das alles escaped werden muss
|
||||
\usepackage{menukeys} % Zum Anzeigen von Tastenkombinationen
|
||||
\usepackage{pdfpages} % Einbinden von PDFs
|
||||
|
||||
% Tabelle über mehrere Seiten
|
||||
\usepackage{longtable}
|
||||
@@ -120,7 +122,8 @@
|
||||
%Anhang
|
||||
\appendix
|
||||
\include{110_windowsAndUblox}
|
||||
\include{120_cd}
|
||||
\include{120_antennenAuswertung}
|
||||
\include{190_cd}
|
||||
|
||||
%Literaturverzeichnis
|
||||
% \bibliographystyle{unsrtdin}
|
||||
|
||||
+116
-5
@@ -94,29 +94,140 @@
|
||||
|
||||
\item der \textbf{Installationskasten} soll unterhalb des vorhandenen Kastens am Pfosten angebracht werden. Als Maße stehen der gemessene Durchmesser des Pfostens (\(90mm\)) und der aus dem Datenblatt !!!cite!!! verfügbare Lochabstand der Befestigungslöcher des Kastens. Mit diesen Werten konnte eine Halterung konstruiert werden, welche aus zwei Halbschalen besteht. Ein Halbschale verfügt über abstehende Arme mit vorhandenen Löchern für M!!!-Schrauben, an denen der Kasten befestigt werden kann. Die M!!!-Schrauben können von hinten mit der passenden Mutter gesichert werden. In die gleich Halbschale können passgenau M8-Muttern eingelegt werden. Die andere Halbschale verfügt über die Löcher und Vertiefungen um diese mit zwei M8-Schrauben an der anderen Halbschale befestigen zu können. Die Halterungen wurde für den oberen und den unteren Teil des Kastens jeweils einmal ausgedruckt. Eine Halterung ist in Abbildung !!!ref!!! zu sehen,
|
||||
|
||||
\item für den Server wird eine Halterung benötigt, damit dieser an der Hutschiene im Installationskasten befestigt werden kann. Dafür...
|
||||
\item für den \textbf{Server} wird eine Halterung benötigt, damit dieser an der Hutschiene im Installationskasten befestigt werden kann. Es bot sich an die mitgelieferten Winkel und Schrauben von dem Computer in die Konstruktion mit einzubeziehen. Die Winkel sind für die Wandmontage gedacht und werden nach Herstellervorgaben auf der Rückseite des Computers befestigt, so dass nach der Montage der Winkel Befestigungspunkte neben Computer benutzbar sind. Die Winkel haben einen Versatz, der den Computer theoretisch etwas von der Wand hervorstehen lassen würde. Um die Befestigung an der Hutschiene zu ermöglichen, wurden die Winkel um \(180^\circ\) verdreht. Dadurch entsteht auf der Rückseite der Computer ein breites Trapez mit geringer Höhe. Diese Form wurde als Grundplatte für den Adapter genutzt. Auf dieser Grundplatte befinden sich neben der Aufnahme für die Hutschiene herausstehende Kegel, welche genutzt werden um den Adapter mittels der am Winkel vorgesehenen Löcher zur Wandmontage zu fixieren, !!!Bild?!!!
|
||||
|
||||
\item die letzte Konstruktion soll das \textbf{GNSS-Modul} ebenfalls an der Hutschiene fixieren. Das Formteil ist ein etwas in die Länge gezogene Quader. An einem Ende befindet sich der Mechanismus für die Hutschiene. Für das Modul ist eine Vertiefung mit Aussparungen für die Anschlüsse eingefügt worden. Das Modul wird durch das Einschieben einer Deckplatte gesichert. Das Formteil wird in Abbildung !!!ref!!! gezeigt.
|
||||
\end{itemize}
|
||||
|
||||
|
||||
Antenne, PC, ZED-F9P, Box
|
||||
|
||||
\subsubsection{Installationskasten bestücken}
|
||||
Der Installationskasten kann weitgehend vorbereitet werden. Dafür wurden zunächst ein Loch an der unteren Seite gebohrt, welches groß genug ist um ein RJ45-Stecker durchzuführen. Weiterhin wurde die Hutschiene außer mittig positioniert, damit im unteren Raum mehr Platz für Kabel bleibt. Danach wurden die beiden Halbschalen an der Rückseite des Kastens befestigt, weil die Löcher für die Befestigungen durch die Komponenten teilweise verdeckt werden. Anschließend konnten die Komponenten an der Hutschiene befestigt werden. Die Komponenten wurden rechtsbündig verbaut. Dabei wurde der PoE-Splitter links neben dem Server und das GNSS-Modul rechts neben dem Server eingehackt. Diese beiden Komponenten auf je eine Seite des Computers zu befestigen, vereinfacht die Kabelführung. Der PoE-Splitter befindet sich auf der linken Seite, weil dieser die beste Klemmwirkung an der Hutschiene aufweist und so das verrücken der anderen Komponenten verhindert.
|
||||
\par
|
||||
Um den Computer über den PoE-Splitter mit Strom zu versorgen wurde ein Kabel mit einem Hohlbuchsenstecker konfektioniert. Das andere Ende des Kabels wurde verzinnt und an dem Blockterminal des Splitters angebracht. Das Netzwerkkabel von dem PoE-Splitter zu dem Server konnte ebenfalls schon eingesetzt werden. Mit einem USB-C auf USB-A Kabel wurde die Verbindung zwischen dem GNSS-Modul und dem Server hergestellt. Das Antennenkabel wurde durch das gebohrte Loch geführt und an dem GNSS-Modul angeschraubt. Der vorbereitete Installationskasten wird in Abbildung !!!ref!!! dargestellt.
|
||||
\par
|
||||
Als weitere Vorbereitung wurden weitere benötigte Netzwerkkabel bereitgelegt und Adapter für die Antennenmontage wurde an dem C-Profil befestigt.
|
||||
|
||||
\subsubsection{Montage}
|
||||
Die Montage began mit der Befestigung des Installationskastens, dafür wurde in je eine Halbschale ein griffiges Klebeband eingebracht, um den Halt zu verbessern. Der Kasten wurde an den Pfosten gehalten und durch die dazugehörigen Halbschalen fixiert. Daraufhin wurde die Antenne an dem C-Profil befestigt und das Antennenkabel angeschlossenen. Das C-Profil wurde an den bei der Begehung besprochen Befestigungspunkten angebracht. Das Antennenkabel wurde mit Kabelbindern an dem C-Profil befestigt.
|
||||
\par
|
||||
Als nächstes musste der PoE-Extender in den vorhanden Anschlusskasten eingebracht werden. Dieser wurde ebenfalls an der Hutschiene befestigt. Das von dem !!!DragiLoRaWAN-Gateway?!!! kommende Ethernetkabel wurde aus der Hutschienen-RJ45-Buchse entnommen und in mit dem ersten Ausgang des Extenders verbunden. Der Eingang wurde mit dem nun freien Port an der Hutschiene verbunden. Danach wurde kontrolliert, ob der vorhandene System wieder einsatzbereit ist. Für die letzte herzustellende Verbindung zwischen dem Poe-Extender und dem Poe-Splitter, musste das Loch in dem vorhanden Installationskasten etwas aufgebohrt werden. Danach konnte das Kabel verlegt werden, wobei die überschüssige Länge des Kabel im neuen Installationskasten aufgewickelt wurde. Durch die Betriebs-LED des Servers und den LEDs des Netzwerkinterfaces konnte schon während der Installation festgestellt werden, dass der Server mit Strom versorgt wird und einen Link aufbauen konnten.
|
||||
|
||||
\subsection{Antennenposition bestimmen}
|
||||
Die nun folgenden Schritte wurde alle von einem Remote-Arbeitsplatz durchgeführt.
|
||||
\par
|
||||
Damit die Antennenposition bestimmt werden kann sind im grundlegenden drei Schritte notwendig:
|
||||
|
||||
\setlist{noitemsep}
|
||||
\begin{enumerate}
|
||||
\item Rohdaten des GNSS-Moduls aufzeichnen,
|
||||
\item die Rohdaten in das RINEX-Format konvertieren
|
||||
\item und die Daten von einem Post Processing Dienst auswerten lassen.
|
||||
\end{enumerate}
|
||||
\setlist{}
|
||||
|
||||
Damit die Rohdaten aufgezeichnet werden können, muss das Modul so konfiguriert werden, dass es diese ausgibt. Dafür wird das u-center und die Verbindung über ser2net genutzt. Die dafür benötigte Installation unter Windows, sowie die grundlegende Nutzung vom u-center wird im Anhang \ref{cha:winAndUcenter} beschrieben. Im u-center muss der Nachrichtentyp RAWX und RAW!!!?!!! für die USB-Schnittstelle aktiviert werden. Ob die benötigten Daten gesendet werden kann in !!!Packet-View?!!! kontrolliert werden.
|
||||
\par
|
||||
Die Aufzeichnung der Daten übernimmt der Kommunikations-Server der RTKLib. Das Programm heißt in der Kommandozeilenversion \mintinline[]{text}|STR2STR| und kann einen Dateneingang auf mehrere Datenausgänge übertragen. In diesem Fall werden die Daten des GNSS-Moduls in eine Datei geschrieben. Die meisten Post Processing Dienst verarbeiten bis zu 24 Stunden Aufzeichnungslänge, deshalb wird für die höchste Genauigkeit genau diese Dauer für die Einmessung verwendet. Die Länge der Aufzeichnung wird über den \mintinline[]{bash}|timeout| Befehl gesteuert. Damit die Aufzeichnung nicht als Kind-Prozess der Remote-Sitzung läuft wird das Hilfsprogramm \mintinline[]{bash}|screen| installiert, da ansonsten ein Abbruch der Verbindung auch die Aufzeichnung frühzeitig beenden würde. Aus dieser Beschreibung ergibt sich diese Befehlsfolge:
|
||||
|
||||
\begin{minted}[linenos, gobble=4, breaklines]{bash}
|
||||
sudo apt-get update
|
||||
sudo apt-get install screen
|
||||
|
||||
screen
|
||||
|
||||
cd ~
|
||||
timeout 24h ./RTKLIB/app/consapp/str2str/gcc/str2str -in serial://ttyACM0:9600:8:n:1:off -out observation.ubx
|
||||
\end{minted}
|
||||
|
||||
Die screen-Sitzung kann mit der Tastenkombinationen \keys{\ctrl + A} gefolgt von \keys{D} verlassen werden.
|
||||
\par
|
||||
Sobald die Aufzeichnung beendet ist, müssen die Daten in das allgemeingültige RINEX-Format umgewandelt werden. Dafür bietet die RTKLib einen RINEX Konverter an. Zur Benutzung im Terminal muss das Programm \mintinline[]{bash}|convbin| aufgerufen werden. Die Konvertierung erfolgt mit:
|
||||
|
||||
\begin{minted}[linenos, gobble=4, breaklines]{bash}
|
||||
cd ~
|
||||
./RTKLIB/app/consapp/convbin/gcc/convbin -od -os -oi -ot -ti 30 observation.ubx
|
||||
\end{minted}
|
||||
|
||||
Für die Erklärung der verwendeten Optionen folgt ein Ausschnitt aus dem Manual der RTKLib !!!cite!!!:
|
||||
|
||||
\setlist{noitemsep}
|
||||
\begin{itemize}[label=-]
|
||||
\item od include doppler frequency in rinex obs
|
||||
\item os include snr in rinex obs
|
||||
\item oi include iono correction in rinex nav header
|
||||
\item ot include time correction in rinex nav header
|
||||
\item ti tint observation data interval (s)
|
||||
\end{itemize}
|
||||
\setlist{}
|
||||
|
||||
Die umgewandelte Datei muss als nächstes zu einem Post Processing Dienst übermittelt werden, der gewählte Dienst erhält die Daten über ein Formular im Browser, deshalb ist die einfachste Variante die Datei \url{ubservation.obs} auf einen Rechner mit einer Desktopumgebung zu kopieren. Dafür wurde die Datei mit dem Programm \mintinline[]{bash}|scp| über ssh kopiert.
|
||||
\par
|
||||
Nach einigen Stunden wird die Auswertung per E-Mail versandt. In dem erhaltenen Archiv befinden sich eine PDF (siehe Anhang \ref{cha:auswerungObservation}) in der die Auswertung grafisch veranschaulicht wird und neben anderen Dateien die Datei \url{observation.sum}. In dieser wird ab Zeile 69 die Position der Antenne im Erdkoordinatensystem angegeben. Zusätzlich werden geschätzt Genauigkeiten angegeben, diese liegen je nach Achse zwischen \(1,8mm\) und \(5,2mm\).
|
||||
\par
|
||||
Die Koordinaten für X, Y und Z müssen nun über das u-center in das GNSS-Modul programmiert werden. Dafür muss in der Konfigurationsansicht der TMODE ausgewählt werden. In den Einstellungen des TMODE muss der Modus auf \texttt{fixed} eingestellt werden, danach können die Koordinaten im gleichen Fenster eingetragen werden. Damit das Modul auch die Korrekturdaten ausgibt kann ich das Fenster zur Konfiguration der Nachrichten gewechselt werden. Dort sollten die Nachrichten für die Rohdaten wieder entfernt werden, um das Datenaufkommen zu reduzieren. Danach können die RTCM3 Nachrichten mit den Nummern 1005, 1074, 1084, 1094, 1124 und 1230 aktiviert werden. Ob die Konfiguration erfolgreich war kann wieder im Packet View Fenster kontrolliert werden. Diese Finale Konfiguration des Moduls sollte in den Flash des Moduls geschrieben werden um auch über einen neustart hinweg verfügbar zu sein. Dafür kann in der Menüleiste der Punkt !!!?!!! ausgewählt werden.
|
||||
|
||||
\subsection{Service einrichten}
|
||||
\label{ssec:pushService}
|
||||
Die von dem GNSS-Modul generierten Korrekturdaten müssen kontinuierlich an den Ntrip-Caster weitergeleitet werden. Dafür wird der bereits zuvor genutzte Kommunikationsserver der RTKLib verwendet. Als Ausgang wird anstelle der Datei nun der Ntrip-Caster angegeben.
|
||||
\par
|
||||
Damit die Ausgabe automatisch protokolliert wird und der Kommunikationsserver auch nach einem Neustart des Servers automatisch startet wird dem Betriebssystem ein Service hinzugefügt. Dafür muss eine Datei mit root-Rechten und der Endung \texttt{.service}, welche den Service definiert unter dem Pfad \url{/etc/systemd/system} erstellt werden. Der Inhalt der erstellten Datei \texttt{rtk.service} sieht wie folgt aus:
|
||||
|
||||
\begin{minted}[linenos, gobble=4, breaklines]{bash}
|
||||
[Unit]
|
||||
Description=Push RTCM correction data from serial to caster
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
ExecStart=/home/rtk/pushRtcm2Caster.sh
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
\end{minted}
|
||||
|
||||
Das auszuführende Skript enthält zum aktuellen Zeitpunkt lediglich den Aufruf des Kommunikationsservers mit den benötigten Parametern.
|
||||
|
||||
\begin{minted}[linenos, gobble=4, breaklines]{bash}
|
||||
#!/bin/bash
|
||||
/home/rtk/RTKLIB/app/consapp/str2str/gcc/str2str -in serial://ttyACM0:9600:8:n:1:off -out ntrips://:password@rtk2go.com:2101/GER-Dortmund
|
||||
\end{minted}
|
||||
|
||||
Anschließend muss der Service aktiviert und gestartet werden.
|
||||
|
||||
\begin{minted}[linenos, gobble=4, breaklines]{bash}
|
||||
sudo systemctl activate rtk
|
||||
sudo systemctl start rtk
|
||||
\end{minted}
|
||||
|
||||
In den Logs kann die übermittelte Datenmenge oder auftretende Fehler betrachtet werden. Wenn der Caster die Daten akzeptiert, erscheint der zuvor bei rtk2go registrierte Mount Point \texttt{GER-Dortmund} in der Mount Point Tabelle unter \url{rtk2go.com:2101}
|
||||
|
||||
\section{Rover}
|
||||
Die Implementierungen für den Rover beginnen mit der Integration des Gyroskops, dies umschließt den Einbau der Hardware und das einbinden der Sensorwerte in die dafür vorgesehene Komponente. Im nächsten Schritt wird der Ntrip-Client dem System hinzugefügt, damit in den folgenden Prozessen die hochgenaue Positionsbestimmung verfügbar ist. Sobald das GNSS-Modul die Korrekturdaten verarbeitet, kann die Implementierung der Verwaltung für die Routen beginnen. Danach sind alle voraussetzungen gegeben um den Modus zum Routen aufzeichnen programmieren zu können. Daraufhin können die Algorithmen für das automatische befahren der Route entwickelt werden.
|
||||
|
||||
\subsection{Gyroskop installieren}
|
||||
Das Gyroskop-Modul benötigt
|
||||
- Lochraster Platine erstellt
|
||||
- Kompass durchschleifen oder an Gyro anschließen - beide Möglichkeiten
|
||||
- Wenn über Gyro, dann Kompass kann nicht mher kalibriert werden? Beides Test mit Umschalter beim Compilieren vielleicht
|
||||
|
||||
\subsection{NTRIP Client}
|
||||
\label{ssec:ntripclient}
|
||||
Die Implementierungen des Clients orientiert sich an dem von der RTCM herausgegebenen Paper \glqq Best Practices for NTRIP Client developers\grqq \cite{NTRIPWorkingGroup2023}
|
||||
|
||||
\subsection{Routen Management}
|
||||
\subsubsection{Postionsspeicherung}
|
||||
Die Implementierung der Routen Verwaltung erfolgt über die \mintinline{c++}|class Route|, welche eine Liste zur Speicherung der Punkte nutzt. Die Punkte sind Instanzen der \mintinline{c++}|class Point|. Es herrscht also eine 1 zu n Beziehung zwischen \mintinline{c++}|class Route| und \mintinline{c++}|class Point|.
|
||||
|
||||
\subsubsection{Postionen mit \mintinline{c++}|class Point|}
|
||||
Eine Instanz dieser Klasse besteht unter anderem aus den Koordinaten, welche in dem \mintinline{c++}|struct Coordinates| als zwei \mintinline{c++}|double| Werte gespeichert werden. Zusätzlich kann die Zeit der Erzeugung und die geschätzte Genauigkeit des Punktes angegeben und gespeichert werden. Neben Methoden zur Datenkontrolle und Zugriff wird die Funktionalität dieser Klasse durch diese beiden Funktionen gegeben:
|
||||
|
||||
\begin{itemize}
|
||||
\item \mintinline{c++}|double distanceTo(Point);| errechnet die Entfernung zwischen den Koordinaten der Instanz zu dem gegeben Punkt. Für die Berechnung wird die Erdkrümmung vernachlässigt, deshalb kann der Satz des Pythagoras genutzt werden. Dafür muss...
|
||||
\item \mintinline{c++}|int16_t courseTo(Point);|
|
||||
\end{itemize}
|
||||
|
||||
!!! Mit Metadaten (Genauigkeit) !!!
|
||||
|
||||
\subsubsection{Postionsspeicherung mit \mintinline{c++}|class Route|}
|
||||
|
||||
\subsubsection{Exportieren}
|
||||
\subsubsection{Importieren}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
\chapter{Windows und U-Center}
|
||||
\label{cha:winAndUcenter}
|
||||
|
||||
\section{Virtuelle Com-Ports}
|
||||
\section{U-Center Einstellungen}
|
||||
@@ -0,0 +1,33 @@
|
||||
\chapter{Ergebnisse des Post Processing Dienstes}
|
||||
\label{cha:auswerungObservation}
|
||||
Alle Dateien der Auswertung befinden sich auf der beiliegenden CD. Die Ordnerstruktur der CD und die Pfade der unterschiedlichen Dateien werden im Anhang \ref{cha:cd} beschrieben.
|
||||
|
||||
\section{Positionsergebnis}
|
||||
In der nachfolgenden Tabelle werden die Ergebnisse der Berechnung angegeben.
|
||||
\begin{table}[ht]
|
||||
\centering
|
||||
\begin{tabular}{|l|r|c|}
|
||||
\hline
|
||||
\textbf{Koordinate} & \textbf{Wert} & \textbf{SIGMA 95\%} \\
|
||||
\hline
|
||||
X & 3945988,2768m & 0,0043 \\
|
||||
\hline
|
||||
Y & 513826,1065m & 0,0018 \\
|
||||
\hline
|
||||
Z & 4968081,0916m & 0,0052 \\
|
||||
\hline
|
||||
Latitude & 51° 29'' 37,79692' & 0,0020 \\
|
||||
\hline
|
||||
Longitude & 7° 25'' 8,45348' & 0,0018 \\
|
||||
\hline
|
||||
Height & 186.34591m & 0,0065 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\caption{Berechnete Position vom Post Processing Dienst}
|
||||
\label{tab:observationResults}
|
||||
\end{table}
|
||||
|
||||
\section{Auswertung}
|
||||
Nachfolgend ist die von dem Post Processing Dienst erstelle PDF eingefügt. Diese enthält Informationen und Grafiken zur Auswertung. Da die PDF unverändert auf den nächsten Seiten eingefügt wird, findet dort keine Seitengestaltung im Sinne dieser Arbeit statt. Das betrifft auch die Seitenzahlen, welche zwar mitgezählt werden, aber erst wieder nach der eingefügten Auswertung angezeigt werden. Die angezeigten Seitenzahlen beziehen sich lediglich auf das eingefügte Dokument.
|
||||
|
||||
\includepdf[pages=-]{observation.pdf}
|
||||
@@ -1,9 +0,0 @@
|
||||
\chapter{Programmcode und Dokumentation}
|
||||
|
||||
Auf der beiliegenden CD befindet sich im Ordner Doxygen die generierte Dokumentation des Rovers. Diese ist für die Ansicht in einem Webbrowser optimiert, dafür die Datei \flqq index.html\frqq{} öffnen.
|
||||
\par
|
||||
In dem Ordner Rover befindet sich der Quellcode für den Rover. Das Projekt kann mit dem Programm Visual Studio Code geöffnet werden, zusätzlich wird die Erweiterung PlatformIO benötigt. Das Selbe gilt für den Ordner RemoteControl, in welchem sich der Quellcode für die Fernbedienung befindet.
|
||||
\par
|
||||
Der Ordner mit dem Namen 3D enthält alle gedruckten Formteile in dem stl-Format.
|
||||
\par
|
||||
In weiteren Ordnern befinden sich die Datei für die erstellte Platine und Datenblätter.
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
\chapter{Programmcode und Dokumentation}
|
||||
\label{cha:cd}
|
||||
|
||||
Auf der beiliegenden CD befindet sich im Ordner Doxygen die generierte Dokumentation des Rovers. Diese ist für die Ansicht in einem Webbrowser optimiert, dafür die Datei \flqq index.html\frqq{} öffnen.
|
||||
\par
|
||||
In dem Ordner Rover befindet sich der Quellcode für den Rover. Das Projekt kann mit dem Programm Visual Studio Code geöffnet werden, zusätzlich wird die Erweiterung PlatformIO benötigt. Das Selbe gilt für den Ordner RemoteControl, in welchem sich der Quellcode für die Fernbedienung befindet.
|
||||
\par
|
||||
Der Ordner mit dem Namen 3D enthält alle gedruckten Formteile in dem stl-Format.
|
||||
\par
|
||||
In weiteren Ordnern befinden sich die Datei für die erstellte Platine und Datenblätter.
|
||||
Reference in New Issue
Block a user