Indoor Lokalisierung auf Basis von Ultra Wideband Modulen zur Emulation von GPS Positionen Chemnitzer Informatik-Berichte - Fakult at f ur ...

 
WEITER LESEN
Indoor Lokalisierung auf Basis von Ultra Wideband Modulen zur Emulation von GPS Positionen Chemnitzer Informatik-Berichte - Fakult at f ur ...
Fakultät für Informatik

                   CSR-20-03

  Indoor Lokalisierung auf Basis
von Ultra Wideband Modulen zur
 Emulation von GPS Positionen

    Jörn Roth · Reda Harradi · Wolfram Hardt

                  Februar 2020

Chemnitzer Informatik-Berichte
Indoor Lokalisierung auf Basis von Ultra Wideband Modulen zur Emulation von GPS Positionen Chemnitzer Informatik-Berichte - Fakult at f ur ...
Indoor Lokalisierung auf Basis von Ultra
 Wideband Modulen zur Emulation von
            GPS Positionen

                            Bachelorarbeit

                                zur
                Erlangung des akademischen Grades
                         B.Sc. Informatik

                       Fakultät für Informatik
                   Professur Technische Informatik

Eingereicht von: Jörn Roth
Matrikel Nr.: 443179
Einreichungsdatum: 26.11.2019

Betreuer: Prof. Dr. Dr. h. c. Wolfram Hardt, Reda Harradi, M.Sc.
Indoor Lokalisierung auf Basis von Ultra Wideband Modulen zur Emulation von GPS Positionen Chemnitzer Informatik-Berichte - Fakult at f ur ...
Abstrakt
Ziel dieser Arbeit ist es, ein System zur Lokalisierung für die Testumgebung des
APOLI Projekts zu implementieren und zu validieren. Dabei soll mit Hilfe von
Ultrabreitbandtechnologie ein lokales Echtzeitpositionsbestimmungssystem imple-
mentiert werden, welches die Funktionalität eines GPS-Empfängers emuliert. Dabei
sollen die Positionsdaten an einen Copter übermittelt werden.

Keywords: RTLS, UWB, Copter

                                                                                iii
Inhaltsverzeichnis

Inhaltsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                            v

Abbildungsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii

Tabellenverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                            ix

Abkürzungsliste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .                                                           xi

1 Einleitung . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1
  1.1 APOLI . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   1
  1.2 IndoorFlightCenter       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   2
  1.3 Struktur . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   3

2 Stand der Technik . . . . . . . . . . . . . . . . . . .                                      .   .   .   .   .   .   .   .   .   .   .   .    5
  2.1 Positionsbestimmung . . . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .    5
      2.1.1 Funkbasierte Systeme . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .    6
      2.1.2 Satellitenbasierte Positionsbestimmung .                                           .   .   .   .   .   .   .   .   .   .   .   .    8
      2.1.3 Bildbasierte Positionsbestimmung . . . .                                           .   .   .   .   .   .   .   .   .   .   .   .   10
      2.1.4 Bewegungsbasierte Positionsbestimmung                                              .   .   .   .   .   .   .   .   .   .   .   .   10
      2.1.5 Lokales Funknetz . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   10
  2.2 Lateration . . . . . . . . . . . . . . . . . . . . .                                     .   .   .   .   .   .   .   .   .   .   .   .   11
  2.3 Koordinatenformate . . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   11
  2.4 Koordinatenübertragung . . . . . . . . . . . . .                                        .   .   .   .   .   .   .   .   .   .   .   .   12
      2.4.1 UART . . . . . . . . . . . . . . . . . . .                                         .   .   .   .   .   .   .   .   .   .   .   .   12
      2.4.2 NMEA 0183 . . . . . . . . . . . . . . . .                                          .   .   .   .   .   .   .   .   .   .   .   .   12

3 Grundlagen . . . . . . . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
  3.1 Mathematischer Hintergrund                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
      3.1.1 TOF . . . . . . . . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   17
      3.1.2 TDOA . . . . . . . .                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
      3.1.3 Fehlerbetrachtung . .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   18
  3.2 Platzierung von Ankern . .                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   19

4 Konzept . . . . . . . . . . .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
  4.1 Systemanforderungen .            .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
  4.2 Systemdesign . . . . .           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   23
      4.2.1 Softwaredesign             .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   24

                                                                                                                                                v
INHALTSVERZEICHNIS

           4.2.2 Ankerpositionierung . . .                   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
     4.3   Hardwareauswahl . . . . . . . . .                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   27
           4.3.1 Decawafe 1000 Module . .                    .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   28
           4.3.2 nucleo64 . . . . . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   29
     4.4   Verwendete Programmiersprache                     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   31

5 Implementierung . . . . . . . . .              .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
  5.1 Laterationsimplementierung                 .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
  5.2 GPS Positionsberechnung .                  .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   33
  5.3 GPS Positionsübertragung .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   34
  5.4 Begleitprogramm . . . . . .                .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   34
  5.5 Systemaufbau . . . . . . . .               .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   34

6 Ergebnisse . . . . . . . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37
  6.1 Validierung . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37
      6.1.1 Kriterien . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37
      6.1.2 Unittests . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   37
      6.1.3 Hardwaretest         .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   38
      6.1.4 Systemtest . .       .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
  6.2 Erwartete Resultate .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   41
  6.3 Erzielte Resultate . .     .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   42
  6.4 Limitierungen . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43
  6.5 Vergleich mit GPS .        .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   43

7 Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  7.1 Einordnung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
  7.2 Weitere Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

vi
Abbildungsverzeichnis
 1.1   Flugplan der APOLI Copter . . . . . . . . . . . . . . . . . . . . . . .                     2

 2.1   Vergleich TOA und TDOA in der Ebene [1] . . . . . . . . . . . . . .                         7
 2.2   Schema des TOF-Verfahren . . . . . . . . . . . . . . . . . . . . . . .                      8

 3.1   Mittlere Schnittwinkel der Kreise [1] . . . . . . . . . . . . . . . . . . 20
 3.2   Genauigkeit der Positionsbestimmung [1] . . . . . . . . . . . . . . . . 21

 4.1   Systemaufbau . . . . . . . . . . . . . . . . . . . . . . . .   .   .   .   .   .   .   .   25
 4.2   Lateration mit 4 Ankern . . . . . . . . . . . . . . . . . .    .   .   .   .   .   .   .   28
 4.3   Decawave DWM1000 Modul . . . . . . . . . . . . . . . .         .   .   .   .   .   .   .   29
 4.4   Einfluss der Azimutrotation auf die Sendeleistung . . . .      .   .   .   .   .   .   .   29
 4.5   Einfluss der Elevationsrotation auf die Sendeleistung (1)      .   .   .   .   .   .   .   30
 4.6   Einfluss der Elevationsrotation auf die Sendeleistung (2)      .   .   .   .   .   .   .   30

 5.1   Platzierung der Anker im Raum IndoorFlightCenter . . . . . . . . . . 35

 6.1   Abweichung der Entfernungsbestimmung an Anker 4 [n=200] . . . . . 40
 6.2   Benutzeroberfläche des Begleitprogramms . . . . . . . . . . . . . . . 42

                                                                                                  vii
Tabellenverzeichnis
 2.1   Vergleich der Verfahren . . . . . . . .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 9
 2.2   Aufbau des NMEA 0813 RMC Satzes           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 13
 2.3   Aufbau des NMEA 0813 GGA Satzes           .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 14
 2.5   NMEA Geräte-IDs . . . . . . . . . .      .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   .   . 15

 4.1   Headerfelder der UWB Pakete . . . . . . . . . . . . . . . . . . . . . . 26
 4.2   Unterstützte Pakettypen . . . . . . . . . . . . . . . . . . . . . . . . . 27

                                                                                                                       ix
Abkürzungsliste
AOA           Angle of Arriaval

APOLI         Automated Power Line Inspection

DOP           Dilution of Precision

GGA           Global Positioning System Fix Data (NMEA 0813)

GLONASS       Global Navigation Satellite System

GPS           Global Positioning System

IFC           Indoor Flight Center

IMU           Inertial measurement unit

NAVSTAR-GPS   Navigational Satellite Timing and Ranging Global
              Positioning System

NMEA          National Marine Electronics Association

UART          Universal Asynchronous Receiver Transmitter

UWB           Ultra-wideband

RMC           Recommended Minimum Sentence Typ C (NMEA 0813)

RSSI          Received Signal Strength Indicator

RTLS          Real-time locating system

SPI           Serial Peripheral Interface

TDOA          Time diffrence of ariaval

TOA           Time of arrival

TOF           Time of flight

                                                                 xi
1 Einleitung
Positionsbestimmungssysteme sind wichtig in einer Vielzahl von technischen Syste-
men. So verwenden Navigationssysteme in Autos, Schiffen und Flugzeugen globale
satellitenbasierte Positionsbestimmung. Das amerikanischen Global Positioning Sys-
tem (GPS), das russischen Global Navigation Satellite System (GLONASS) und das
europäischen Galileo System sind solche Systeme. Aufgrund der Herkunft vieler tech-
nischer Geräte aus den USA, ist GPS das am weit verbreitetste dieser Systeme. Viele
Anwendungen auf mobilen Endgeräten nutzen Positionsdaten, um besser angepass-
te Ergebnisse zu liefern. Autonome Fahrzeuge und Fluggeräte benötigen ebenfalls
genaue Positionsbestimmungssystem. Diese ist erforderlich, da sie im Gegensatz zu
von Personen gelenkten Systemen keine andere Quelle für Bewegungsbefehle haben.
Lokale Systeme werden dabei in Logistikzentren verwendet, um genau Positionen
von Gütern und Transportern zu verfolgen und zu optimieren. Die dabei verwende-
ten System basieren jedoch häufig auf Funksystemen die nicht in Gebäuden genutzt
werden können.

1.1 APOLI
Das Automated Power Line Inspection (APOLI) Projekt [2][3][4] hat zum Ziel,
Schäden an Hochspannungsleitungen automatisch zu erkennen. Dabei sollen insbe-
sondere Schäden durch Kurzschlüsse an den Isolatoren, Risse im Glas der Isolatoren
sowie Schäden an den Stromleitungen erkannt werden. Dazu umfliegen mit Kame-
ras ausgestattete Copter automatisch die Hochspannungsmasten und nehmen Bilder
auf. Abbildung 1.1 zeigt dabei den Flugplan der Copter, dieser soll an den Strom-
masten aufsteigen und diese unter und über den Leitungen umrunden. Dabei muss
sichergestellt werden, das der Copter weder den Leitungen noch dem Masten zu nah
kommt. Dies ist notwendig, da die Kameras kein scharfes Bild aufnehmen können,
wenn sie zu nah sind und um Interferenzen durch die Stromleitungen zu vermeiden.
Außerdem wird das Risiko eines Zusammenstoßes des Copters so verringert. Durch
Bilderkennungssoftware sollen anschließend automatisiert Schäden erkannt werden.
Der Copter verwenden dabei einen GPS-Empfänger mit Kompass zur Navigation
und zur Zuordnung der erfassten Schäden zu deren Position. Die starken Wech-
selströme in den Stromleitungen können Interferenzen hervorrufen, die Funkwellen
und somit GPS blockieren [5]. Der Copter kommt jedoch nicht so nah an die Hoch-
spannungsleitungen, das diese Interferenzen alle Funksignale blockieren, weshalb die
Verwendung von GPS möglich ist.

                                                                                  1
1 Einleitung

                    Abbildung 1.1: Flugplan der APOLI Copter

1.2 IndoorFlightCenter
Die im APOLI Projekt verwendete Hard- und Software, wird im IndoorFlightCen-
ter (IFC) der Professur Technische Informatik entwickelt. Dabei wird der Copter in
einem abgeschlossenen Käfig getestet. Der hat etwas 2x2m Grundfläche und ist 3m
hoch. Um die Sicherheit zu erhöhen und die Position des Copters besser kontrollie-
ren zu können, fliegt dieser nicht frei sondern wird an einem Seil geführt. Zusätzlich
wurden die Rotorblätter entfernt. Für die verwendeten Copter wurde die AREIOM
Plattform entwickelt. Diese bietet die erforderliche Rechenleistung zur Bildverarbei-
tung bei geringem Stromverbrauch und Gesamtgewicht [6]. Der Copter wird dabei
von einem Pixhawk flight controller gesteuert. Dieser wertet die Sensordaten des Co-
pters aus und kontrolliert die Rotoren. Der Pixhawk kann mit einem PC kommuni-
zieren um Daten und Kommandos zu übertragen. Diese Übertragung geschieht über
eine externe Telemetrie Antenne. Da der Empfang von GPS-Signalen in Gebäuden
eingeschränkt ist, kann man sich bei der Entwicklung nicht auf ein zuverlässige und
genaue Positionsbestimmung mit GPS verlassen. Daher wird ein alternatives System
benötigt. Um eine realistische Testumgebung zu gewährleisten, soll dabei ein Signal,
welches sich nicht von dem eines GPS-Empfängers unterscheidet, an den Copter ge-
sendet werden. Dies geschieht über einen serieller GPS Anschluss. Dabei soll auch
der Anschluss, der vom GPS-Empfänger genutzt wird verwendet werden. Zusätz-
lich sind an dem Copter weitere Komponenten angeschlossen, welche verschiedene

2
1.3 Struktur

Berechnungen ausführen. Da der Copter für viele Testzwecke nicht bewegt werden
muss, verfügt die Testumgebung neben Akkus auch über eine externe Stromversor-
gung für den Copter.

1.3 Struktur
Im Rahmen dieser Arbeit sollen zunächst verschiedene Ansätze zur Bestimmung
von Positionen betrachtet werden. Dies soll auch verschiedenen Arten der Lateration
einbeziehen. Weiter soll die Übertragung von Positionsdaten an den Copter bearbei-
tet werden. Die mathematischen Grundlagen der verwendeten Verfahren werden im
Anschluss betrachtet. Basierend auf den Ergebnissen der Betrachtung des Stands
der Technik und der mathematischen Grundlagen wird anschließend ein Konzept
entwickelt. Dieses enthält das System- und Softwaredesign. Zusätzlich erfolgt eine
Betrachtung der verwendete Hardware werden.

                                                                                  3
2 Stand der Technik

Aufgrund der vielen Anwendungen und Technologien gibt es viele Möglichkeiten
zur Bestimmung von Positionen. Nachstehend werden die wichtigsten betrachtet.
Die betrachteten Verfahren wurden dabei nach der Häufigkeit ihrer Verwendung in
allen Bereichen sowie speziell im Bereich der unbemannten Flugobjekte ausgewählt.
Anschließend sollen insbesondere die Vor- und Nachteile der einzelnen Verfahren
erläutert werden.

2.1 Positionsbestimmung

Positionsbestimmungssysteme werden in aktive und passive eingeteilt. Bei aktive
Systemen hilft das Objekt, dessen Position bestimmt wird, bei der Positionsbestim-
mung mit, indem es Signale empfängt oder sendet. Diese Signale sind meist Funk-
signale (2.1.1), es können aber auch beispielsweise Lichtsignale verwendet werden
(2.1.3). Das aktive Gerät, dessen Position bestimmt wird, wird als Tag bezeichnet.
Bei passiven Systemen wird die Position ohne Mithilfe des zu lokalisierenden Ob-
jekts, teilweise ohne dessen Wissen, bestimmt. Passive System sind oft ungenauer
und anfälliger für Fehler, als aktive. Der Grund dafür ist, dass die Daten, welche
mit durch die Mithilfe des Tags erfasst werden genauer sind und die Identifizierung
des Tags entfällt [7]. Da der Copter bereits ein elektronisches Gerät benötigt, um
die Positionen, welche das System ermittelt, zu empfangen, wird ein aktives System
verwendet. Daher werden weiterhin nur aktive Verfahren betrachtet.

                                                                                   5
2 Stand der Technik

2.1.1 Funkbasierte Systeme
In funkbasierten Systemen wird ein sich bewegender Funkempfänger, Funksender
oder Funktransceiver (Tag) lokalisiert. Funkbasierte Systeme bestehen neben dem
Tag aus mehreren Anker. Dies sind Funkkomponenten, mit bekannter, fester Po-
sition. Die Position, des Tags, wird basierend auf seiner relativen Postion von den
Ankern bestimmt. Abhängig davon, welche Informationen über die relative Position
vorhanden sind, sowie wie diese Informationen ermittelt werden, gibt es verschie-
dene Verfahren. Die am weitesten verbreiterten Verfahren sollen nach Genauigkeit,
Hardwareaufwand, Dauer der Positionsbestimmung und Rechenaufwand verglichen
werden. Dies sind das Time of arrival (TOA) Verfahren und das Time diffrence of
arrival (TDOA) Verfahren. Weitere mögliche Verfahren sind die Bestimmung der
Signalstärke Received Signal Strength Indication (RSSI) und die Bestimmung der
Empfangswinkels Angle of arrival (AOA). RSSI ist sehr ungenau, da der Zusam-
menhang zwischen Entfernung und Signalstärke, aufgrund von Abschwächung durch
Wände und Reflexionen an Oberflächen, nicht konstant ist. AOA ist aufwendiger als
die anderen hier genanten Verfahren, da die Bestimmung der Einfallswinkels zusätz-
liche spezielle Hardware erfordert.
In den TOA-Verfahren werden die Übertragungszeiten der Funksignale von den An-
kern bestimmt. Die Entfernungen lassen sich mit der Formel

                                      d=c∗t                                     (2.1)

d Entfernung
c Lichtgeschwindigkeit im Übertragungsmedium
t Flugzeit
berechnen. Dies erfordert genaue, synchronisierte Uhren am Tag und an allen An-
kern. Die Position wird dann durch das Schneiden von Kugeloberflächen mit der
Entfernung als Radius und den Positionen der Anker als Mittelpunkt bestimmt.
Mit drei Ankern ergeben sich zwei mögliche Positionen, die sich an der Ebene, die
durch die drei Anker gebildet wird, spiegeln. Durch die Verwendung von mindes-
tens vier Ankern, die nicht auf einer Ebene liegen lässt sich die Position eindeutig
bestimmen. Die Genauigkeit des Verfahrens ist dabei von der Genauigkeit der Ent-
fernungsbestimmung und der Positionen der Anker abhängig. Die einzige Quelle, für
diese Ungenauigkeit ist die Synchronisierung der Uhren untereinander und mit dem
Sendeprozess.
Das TDOA-Verfahren wird verwendet, um ohne Synchronisierung der Zeit des Tags
die Position bestimmen zu können. Dabei senden alle Anker in fest definierten
Zeitabständen Nachrichten an den Tag. Die Position des Tags kann, basierend auf
den Zeitabständen zwischen dem Empfangen der Nachrichten bestimmt werden.
Dafür müssen hyperbolische Oberflächen im Raum geschnitten werden. Wie auch
im TOA-Verfahren sind die Quellen für Fehler hier ungenaue Synchronisierung und
ungenau Positionen der Anker. Abbildung 2.1 zeigt die Schnitte der verschiedenen
Kurven von TOA und TDOA in der Ebene. Die Synchronisation der Uhren im
TOA-Verfahren ist nicht notwendig, wenn zwei Nachrichten verwendet werden. Wie

6
2.1 Positionsbestimmung

Abbildung 2.1: Vergleich TOA und TDOA in der Ebene [1]

                                                              7
2 Stand der Technik

                    Abbildung 2.2: Schema des TOF-Verfahren

in Abbildung 2.2 gezeigt wird dabei eine Nachricht vom Tag gesendet, auf welche
die Anker mit Nachrichten, welche die Verzögerung zwischen Senden und Empfan-
gen treply enthalten, antworten. Diese Modifikation des Verfahrens heißt Time of
Flight (TOF). Dabei gilt dann T OF = 12 (troundtrip − treply ). So kann das TOA Ver-
fahren angepasst werden, ohne die eigentliche Ankunftszeit zu berücksichtigen ist.
Das erfordert jedoch beidseitige Sende- und Empfangshardware. Dieses Verfahren
erfordert eine genaue Bestimmung der Sende- und Empfangsverzögerung. Die Emp-
fangsverzögerung ist die Zeit, die vom Eingehen einer Nachricht bis zum gemessenen
Empfangszeitpunk vergeht. Analog ist die Sendeverzögerung die Zeitdifferenz zwi-
schen der in der Berechnung verwendeten und tatsächlichen Sendezeit. Wenn diese
nicht ausreichend genau bestimmt werden können, können zwei TOF Messungen,
von denen eine vom Tag und eine vom Anker ausgeht ausgeführt werden. Die Ta-
belle 2.1 zeigt die Vor- und Nachteile der einzelnen Verfahren, eine mathematische
Betrachtung wird dabei in 3.1 betrieben.

2.1.2 Satellitenbasierte Positionsbestimmung
Satellitenbasierte Systeme zur Positionsbestimmung [8][9] sind weit verbreitet. Auf-
grund ihrer weltweiten Verfügbarkeit und der Bestimmung einer globalen Position
werden sie unter anderen in Navigationssystemen und mobilen Endgeräten verwen-
det. Dabei senden geostationäre Satelliten kontinuierlich ihre genaue Uhrzeit. Ein
Empfänger kann basierend auf den Differenzen der empfangenen Zeiten mit der
TDOA-Methode seine eigene Position bestimmen. Alternativ kann der Empfänger
auch eine genaue Uhr benutzen, um die Distanzen und zu berechnen und dann die
TOA-Methode verwenden. Die TOF-Methode wird nicht verwendet, da die Satel-

8
2.1 Positionsbestimmung

 Verfahren TOA                 TOF            TDOA          RSSI           AOA
 Anforderung synchroni-        genau Uhr      genaue,       keine          Funkempfän-
 an Harware sierte,                           synchroni-                   ger,   der
             genaue                           sierte (nur                  Richtung
             Uhr                              Anker)                       bestimmen
                                              Uhr                          kann
 Position       Kreisen        Kreisen        Hyperbo-      Kreisen        Geraden
 im Schnitt-                                  loiden
 punkt von
 Anzahl und     O(n2 )         O(n2 )         O(n)       O(n2 ) linea-     O(n)    li-
 Art der zu     lineare        lineare        nichtline- re Gleichun-      neare
 lösenden      Gleichun-      Gleichun-      are Glei- gen                Gleichun-
 Gleichun-      gen            gen            chungen                      gen
 gen
 Sende-         einseitig      zweiseitig,    einseitig     einseitig      einseitig
 richtung                      eventuell
                               zweimal
 Fehler-        Synchroni-     Bestimmung     Synchroni-    Signalstärken- Genauigkeit
 ursache        sierung        der Sende-     sierung       Entfernungs- der Win-
                               /Empfangs-                   Korrelation     kelbestim-
                               verzögerun-                                 mung
                               gen
 Genauigkeit    hoch           hoch           hoch          gering         hoch

                          Tabelle 2.1: Vergleich der Verfahren

liten, die von mehrere Millionen Endgeräten verwendet werden technisch nicht in
der Lage sind von allen diesen Endgeräten eine Anfrage zu empfangen und dar-
auf zu antworten. Durch die Verwendung von Satelliten sind solche Systeme sehr
zuverlässig und ermöglichen es, die genaue Position auf der Erde zu bestimmen.
Während die Nutzung von satellitenbasierten Systemen keine hohen Kosten ver-
ursacht, ist die Inbetriebnahme und Wartung solcher Systeme aufgrund der hohen
Kosten von Raketen und Weltraumkomponenten sehr hoch, so soll das Europäische
Galileo System, welches 2021 fertiggestellt werden soll, 7 Milliarden Euro kosten [10].
Weitere satellitenbasierte Positionsbestimmung sind unter anderen das amerikani-
schen NAVSTAR-GPS [11], das russische GLONASS und das chinesische Beidou.
GPS besitzt bis zu 32 Satelliten, von denen mindestens 4 erreichbar sein müssen
um die Position bestimmen zu können. Galileo hat 22 aktive Satelliten, und soll
bis 2021 30 haben. Für zivile Anwendungen hat GPS eine Genauigkeit von bis zu
7,8m. Das europäische Galileo System soll eine Genauigkeit von bis zu einem Meter
erreichen. GLONASS wurde 2011 wieder als voll funktionsfähig erklärt, seine Ge-
nauigkeit betragt 5 bis 10 Meter [12]. Das Baidou System befindet sich ebenfalls
noch im Aufbau und ist nur daher nur in Ostasien und im Westpazifik erreichbar.

                                                                                       9
2 Stand der Technik

Es soll eine Genauigkeit von 10 Metern erreichen.

2.1.3 Bildbasierte Positionsbestimmung
Die Copter benötigen eine Kamera, um die Schäden an den Stromleitungen aufzu-
nehmen, diese kann auch zur Positionsbestimmung zu verwenden werden. Mit der
Bilderkennung an Kanten ist es möglich, die Veränderung der Position zu bestimmt.
Dies würden jedoch eine erhebliche Rechenleistung erfordern insbesondere, da die
Position in Echtzeit aktualisiert werden soll, und nur begrenzte Genauigkeit liefern.
Zudem ist eine solche Positionsbestimmung insbesondere bei Flugobjekten ungenau,
da die Bewegungserkennung sich in der Regel an großen starren Objekten orientiert.
Wolken werden einfach als solche Objekte klassifiziert und ihre Bewegungen führen
zu weiteren Ungenauigkeiten. Da die Kamera zur Erkennung von Schäden mit einem
Gimbal bewegt wird, wird diese Methode zusätzlich komplizierter. [13][14]

2.1.4 Bewegungsbasierte Positionsbestimmung
Die einfachste Möglichkeit die Position zu bestimmen, ist basierend auf den Steue-
rungsbefehlen der Rotoren die Bewegung des Copters und somit seine relative Posi-
tion zu berechnen. Dieser Ansatz hat den Vorteil, dass keine zusätzliche Hardware
benötigt wird und die erforderlichen Berechnungen wenig Rechenleistung benötigen.
Eine solche Position ist jedoch sehr ungenau und Fehler häufen sich. So werden äuße-
re Einflüsse wie Wind, Temperatur oder Luftdruck nicht mit einbezogen, aber auch
interne Faktoren wie Faktoren, welche nicht präzise gemessen werden können. Diese
Ungenauigkeiten können bei fahrenden Systemen durch eine Karte der Umgebung
und einen Stoßsensor umgangen werden, dies ist jedoch bei fliegenden Coptern nicht
möglich. Eine bewegungsbasierte Positionsbestimmung bietet sich aufgrund des ge-
ringen Aufwands als Unterstützung eines anderen Systems an. [15]

2.1.5 Lokales Funknetz
Die Nutzung eines lokalen Funknetzes ist eine naheliegende Lösung. Es gibt jedoch
verschiedene Funkarten. Am naheliegendsten wäre es, den Frequenzbereich des GPS
zu verwenden, dies ist jedoch verboten.

Wireless local area networks
Wireless local area network (WLAN) ist einer der am weitesten verbreiteten lo-
kalen Funkstandards. Dies bringt eine Vielzahl an existierender Implementation,
Forschungsprojekte und Dokumentation mit diesem Standard mit sich. Eine weitere
Folge der Verbreitung von WLAN ist jedoch, dass die Frequenzbereiche, in denen
WLAN verwendet wird, insbesondere der lizenzfreie 2,5 GHz Bereich, mit vielen
störenden Signalen gefüllt sind.

10
2.2 Lateration

Ultrabreitband IEEE 802.15.4
Die Verwendung von Ultrabreitband (UWB) nach IEEE 802.15.4 [16] ist eine neue-
re Entwicklung, da die Erweiterung 802.15.4a erst 2007 standardisiert wurde und
die erforderlichen Frequenzen erst 2008 freigegeben wurden. Die Besonderheit von
Ultrabreitband ist, das ein breiter Frequenzbereich von mindestens 500 MHz verwen-
det wird, und es keine Trägerfrequenz gibt. Dieser Frequenzbereich liegt zwischen
3,1 und 10,6 GHz. UWB erlaubt es hohe Datenraten von bis zu 1,289Gbit/s über
kurze Entfernungen übermitteln zu können. Da dabei eine breiter, aufgrund der neu-
en Entwicklung freier Frequenzbereich verwendet wird, ist diese Übertragung nicht
durch andere Funkübertragungen gestört. UWB zur Positionsbestimmung bietet
sich besonders an, da es eine höhere Verträglichkeit gegenüber Überlagerung von
Nachrichten hat und da die Sendeleistung mit 0,5 mW sehr gering ist, wodurch der
Stromverbrauch gering ist. [17]

2.2 Lateration
Die Lateration bei TOF mit drei Ankern kann durch die Lösung von zwei linearen
Gleichungen implementiert werden, da man die Koordinaten direkt aus den Ent-
fernungen berechnen kann ohne ein Gleichungssystem zu lösen. Sie liefert jedoch
stets zwei Ergebnisse, welche keine gute Fehlerfortsetzung haben, da Abweichun-
gen senkrecht zur Ebene der drei Anker nicht überprüft werden. Man kann eins der
Ergebnisse oft ausschließen, etwa weil sich die zweite Position unter dem Boden be-
findet, da sie gespiegelt auf der anderen Seite der Ebene der drei Anker liegt. Die
Genauigkeit ist aber auch senkrecht zur Ebene, welche die drei Anker bilden, gering.

Entfernungsbestimmung
Die Entfernung lässt sich durch die bekannte Lichtgeschwindigkeit sowie die ge-
messene Flugzeit der Funksignale bestimmen. Um dabei Ungenauigkeiten zwischen
den Uhren der Sender und Empfänger zu überbrücken wird das Signal vom Tag
an die Anker und dann zurück an den Tag gesendet und die Gesamtzeit für die
Zweiwegübertragung verwendet, so dass d = t/2 ∗ c. Um die Empfangs- und Sen-
deverzögerung auszugleichen kann die zweiseitigen Zweiwegübertragung verwendet
werden, bei der je eine Entfernungsbestimmung vom Tag und vom Anker ausgeht.

2.3 Koordinatenformate
Für Positionsbestimmungssysteme werden im wesentlichen zwei Koordinatenforma-
te verwendet. Ein lokales kartesisches und ein globales Kugelkoordinatensystem. Das
lokale System wird zur Positionsbestimmung verwendet und hat Meter als Einheit.
Das globale Koordinatensystem verwendet Längengrade und Breitengrade, wobei zu
beachten ist, das generell bei Grad Minuten und Sekunden verwendet werden. Dabei

                                                                                 11
2 Stand der Technik

ist der Umrechnungsfaktor 60. Die Höhe setzt sich aus zwei Werten zusammen. Die
Höhe gibt die Höhe über dem Meeresspiegel beziehungsweise dem Geoid in Metern
an. Die Geoidabweichung gibt die Abweichung des Geoids von einem optimalem
Ellipsoid an. Diese Abweichung ist in Deutschland etwa +45m.

2.4 Koordinatenübertragung
Zur Koordinatenübertragung müssen Formate, die vom Pixhawk unterstützt sind
verwendet werden. Der Pixhawk hat einen seriellen Universal Asynchronous Receiver
Transmitter (UART) GPS-Port, welcher Positionsdaten im NMEA 0183 Format
erwartet.

2.4.1 UART
UART ist ein Hardwarebaustein, der serielle Datenübertragung implementiert. Da-
bei werden beliebige Bitraten unterstützt, die jedoch zwischen Sender und Empfänger
übereinstimmen müssen. Üblich sind zwischen 110bit/s und 500kbit/s. Außerdem
werden optional Paritätsbits unterstützt.

2.4.2 NMEA 0183
Das NMEA 0183 Protokoll ist ein textbasiertes Übertragungsformat und Speicher-
format für Navigationsgeräte [18][19]. Das NMEA Protokoll verwendet dafür Sätze.
Jeder Satz ist bis zu 82 Byte groß. Ein NMEA Satz beginnt immer mit $ gefolgt
von 2 Buchstaben, welche den Typ des Navigationsgeräts bestimmen. Tabelle 2.5
zeigt dabei die wichtigsten Typen.Danach folgen 3 Buchstaben, welche die Art des
NMEA Satzes bestimmen. Wichtige NMEA Satztypen sind RMC für Koordinaten,
GGA für Satellitennavigation (GPS fix data), sowie DTM für Datumsangaben. Da-
nach folgen je nach Satztyp eine Anzahl von kommaseparierten Werten. Dann folgt
ein ∗ und eine hexadezimale zweistellige XOR Prüfsumme, welche jedoch lediglich
empfohlen ist. Jeder NMEA Satz endet mit einem Windowszeilenumbruch \r\n. Die
meisten NMEA Sätze beinhalten eine Uhrzeit im hhmmss.ss Format sowie Längen-
und Breitendaten. Längen- und Breitendaten sind stets positv, wobei ein separates
Datenfeld durch N oder S für Breite und E oder W für Länge angibt, in welchem
Quadranten sich die Position befindet. Für die Breite sind in der Regel sechs Stellen
reserviert, von denen zwei den Breitengrad angeben und vier mit zwei Vorkom-
mastellen und zwei Nachkommastellen die Breitenminuten. Analog wird die Länge
angegeben, wobei hier drei Stellen für den Längengrad bereitstehen, da dieser mehr
als 100 betragen kann. Die Anzahl der Nachkommastellen der Minuten kann bei
einigen Sätzen variieren.

12
2.4 Koordinatenübertragung

RMC
Der RMC Satz ist der einfachste Satz, um Koordinaten zu übertragen. Dieser muss
bei satellitenbasierten Systemen mindestens alle 2 Sekunden gesendet werden. Ein
RMC Satz hat dabei folgendes Format:
$GPRMC,hhmmss.sss,v,BBbb.bbbb,B,LLLll.llll,W,VV.V,31.66,280511,A*XX
Tabelle 2.2 zeigt die Bedeutung der einzelnen Bestandteile.

 Daten      Bedeutung                                        Beispiel
 GPRMC      Beschreibung des Satztyps                        GPRMC
 hhmmss.ss  Zeit in Stunden, Minuten und Sekunden            092751.000
 v          Validität der Daten, A für valid, V bei Feh-   A
            lern
 BBbb.bbbb  Breitengrad                                      5321.6802
 B          Vorzeichen des Breitengrads, valid sind N und    N
            S
 LLLll.llll Längengrad                                      00630.3371
 L          Vorzeichen des Längengrads, valid sind W und    W
            E
 VV.V       Geschwindigkeit, in Knoten                       0.06
 AA.A       Bewegungsrichtung in Grad                        31.66
 DDMMYY     Datum                                            280511
 M.M        Magnetische Abweichung, Winkel zwischen          A
            magnetischem und geographischem Nordpol
            von der aktuellen Position aus
 m          Vorzeichen der magnetischen Abweichung,          E
            valid sind W und E
 XX         Prüfsumme, hexadezimal                          E5

               Tabelle 2.2: Aufbau des NMEA 0813 RMC Satzes

GGA
Der GGA Satz überträgt Informationen über satellitenbasierte Systeme.
$GPGGA,hhmmss.ss,BBbb.bbb,B,LLLll.llll,L,Q,nn,r.r,h.h,H,g.g,G,a.a,DDDD*XX
Tabelle 2.3 zeigt die Bedeutung der einzelnen Bestandteile. Die Dilution of Precisi-
on (DOP) ist dabei die Ungenauigkeit der Position basierend auf dem Schnittwinkel
der Kreise oder Hyperboloiden, die aus der TOF oder TDOA Positionsbestimmung
hervorgehen. Dieser Wert ist dabei zwischen 0 und 10. Dabei repräsentiert 1,0 die
maximale Genauigkeit und Werte unter 1,0 bringen keine zusätzlichen Genauigkeits-
verbesserungen. Je größer der Wert ist desto ungenauer die Positionsbestimmung.
Der Wert 10,0 repräsentiert dabei die Grenze, an der das Gleichungssystem noch
nicht unterbestimmt ist und Positionsbestimmung möglich ist. Bei Werten größer

                                                                             13
2 Stand der Technik

 Daten      Bedeutung                                           Beispiel
 GPGGA      Beschreibung des Satztyps                           GPGGA
 hhmmss.ss  Zeit in Stunden, Minuten und Sekunden               092751.000
 BBbb.bbbb  Breitengrad,                                        5321.6802
 B          Vorzeichen des Breitengrads, valid sind N und       N
            S
 LLLll.llll Längengrad                                         00630.3371
 L          Vorzeichen des Längengrads, valid sind W und       W
            E
 Q          Qualität der Daten, 0 für ungültig, 1 füp GPS   1
            fix, 2 für DGPS fix
 nn         Anzahl der Satelliten, die verwendet wurden         04
 r.r        Genauigkeit (horizontale DOP)                       1.2
 h.h        Höhe über dem Geoid                               331.2
 H          Einheit der Höhe                                   M
 g.g        Geoidabweichung                                     21.3
 G          Einheit der Geoidabweichung                         M
 a.a        bei DGPS: Alter des Datensatzes, sonst leer
 DDDD       bei DGPS: Referenzstation (0 bis 1023),
            sonst leer
 XX         Prüfsumme, hexadezimal                             8F

                Tabelle 2.3: Aufbau des NMEA 0813 GGA Satzes

als 10 ist keine Positionsbestimmung möglich, daher wird dieser nicht gesendet, da
der GGA Satz lediglich mit validen Koordinaten gesendet wird.

14
2.4 Koordinatenübertragung

Gerätetypen
Tabelle 2.5 zeigt unterstützte NMEA Gerätetypen [19]. Zwar passen die Typen CX
oder SN auf eine lokale Anwendung, um jedoch einen GPS Sender zu simulieren sollte
GP für GPS verwendet werden.

                ID   Bedeutung
               CS    Communications - Satellite
               CX    Communications - Scanning Receiver
               GA    Galileo
               GL    GLONASS
               GN    kombinierte Positionslösung mehrerer GNSS
               GP    Global Positioning System (GPS)
               SN    Electronic Positioning System, other/general

                         Tabelle 2.5: NMEA Geräte-IDs

                                                                               15
3 Grundlagen
Es werden hier die theoretischen Grundlagen der zu verwendenden Algorithmen und
Verfahren betrachtet werden.

3.1 Mathematischer Hintergrund
Die mathematischen Grundlagen der Laterationsalgorithmen für TOF und TDOA
werden hier hergeleitet. Und eine Betrachtung der Fehlerfortpflanzung wird betrie-
ben.

3.1.1 TOF
Beim TOF-Verfahren [20], wie auch bei den TOA- und RSSI-Verfahren, wird die
Position basierend auch Entfernungen von Ankern bestimmt. Dazu müssen Kugeln
um die Anker geschnitten werden. Die Position des Tags ist im Schnittpunk der
Kugeln.                                          
                                              xi
Dabei seine mit n Ankerpositionen p~i =     yi 
                                                  

                                               zi
i = 1, . . . , n und dazugehörigen
                                   Entfernungen
                                                 vom Tag di , sowie der zu bestimmen-
                                  x
den Position des Tags p =  y  bekannt. Es ergibt sich das Gleichungssystem
                                   

                                  z

                           kp − pi k = di ∀i = 1, . . . , n.                    (3.1)
                          √
Dabei sei kvk = kvk2 := v T v. Dieses Gleichungssystem ist für weniger als drei
Anker unterbestimmt, für drei gibt es bis zu zwei Lösungen und für vier oder mehr
Anker ist es überbestimmt. Es gilt für alle Anker i

                         kpk2 − 2pT pi + kpi k2 = kpi − pk2 .                    (3.2)
Subtrahiert man dies nun für einen anderen Anker j so gilt:

              2(pT pi − pT pj ) = kpi k2 − kpj k2 − kpi − pk2 + kpj − pk2        (3.3)

Verwenden wir 3.1 ist also

                                          kpi k − kpj k − di + dj
                        pT (pi − pj ) =                           .              (3.4)
                                                     2

                                                                                   17
3 Grundlagen

Sei nun
                                                                                       n·(n−1)
                                                                                                 ×3
A=        p1 − p2 , p1 − p2 , · · · , p1 − pn , p2 − p3 , · · · , pn−1 − pn       ∈ IR      2

                                                                                             (3.5)
und analog
      1                                                                    n·(n−1)
     b=    kp1 k − kp2 k − d1 + d2 , · · · , kpn−1 k − kpn k − dn−1 + dn ∈ IR 2
      2
                                                                                  (3.6)
dann gilt nach 3.4
                                           Ap = b                                 (3.7)
was ein allgemeines lineares Gleichungssystem mit bekanntem A, b ist, welches mit
einem geeigneten Verfahren nach p gelöst werden kann. Zu beachten ist jedoch, dass
die Anzahl der Spalten in A und b quadratisch wächst, was bei einer hohen Zahl von
Ankern die Rechenzeit beeinflusst. Mögliche Verfahren sind beispielsweise Varianten
des Gaußverfahrens. Dieses hat eine Laufzeitkomplexität von O(pq 2 ) für eine Matrix
A ∈ IRp×q , p ≥ q. Somit ist die Gesamtlaufzeit O(n2 ).

3.1.2 TDOA
                                                                                                     
                                                                                      xi
Bei der TDOA Entfernungsbestimmung sind ebenfalls n Ankerpositionen p~i =  yi 
                                                                                         

                                                                                      zi
i = 1, . . . , n bekannt. Zusätzlich sind Entfernungsdifferenzen tij = kp − pi k−kp − pj k
bekannt. Dieses Gleichungssystem lässt sich im Gegensatz zu dem des TOF-Verfahren
nicht leicht linearisieren, daher muss es mit einer numerischen Methoden gelösten
werden. Die Methode der kleinsten Quadrate (englisch least squares) ist beispiels-
weise möglich, da diese den Gesamtfehler minimiert. Da dim p = 3 sind mindestens
drei Entfernungsdifferenzen erforderlich. Bei drei Entfernungsdifferenzen ergibt das
Gleichungssystem jedoch mehrere Lösungen, daher sollten stets vier Entfernungs-
differenzen gegeben sein. Dabei ist zu beachten, dass die Entfernungsdifferenzen tij ,
die linear abhängig sind, nicht gleichzeitig verwendet werden dürfen. So dürfen nicht
tij , tjk und tik = tij + tjk gleichzeitig verwendet werden. Sonst ist das Gleichungssys-
tem unterbestimmt und ergibt in den unendliche Lösungen. Dies schließt Systeme
mit drei Ankern aus, da es in diesen unmöglich ist 3 nicht linear unabhängige Ent-
fernungsdifferenzen zu bilden.

3.1.3 Fehlerbetrachtung
Wenn man nun in die Positionsberechnung einbezieht, dass die Messungen der Ent-
fernungen zwischen den Ankern und dem Tag ungenau mit den absoluten normalver-
teilten Eingabefehlern ri = (d0i − di ) ∼ N (0, σi2 ) sind, erhält man einem Ausgabefeh-
ler r = kp − p0 k. Dabei sind d0i die gemessenen Distanzen zwischen Ankern und dem
Tag und di die tatsächlichen Distanzen sowie p0 die errechnete Ankerposition. Zur

18
3.2 Platzierung von Ankern

Minimierung des Ausgabefehlers ist die Wahrscheinlichkeitsverteilung der Messung
benötigt [1]:
                             1          1 0
                                                              
                   0                             T −1 0
               P (d |p) = q       exp − (d − d) R (d − d)                   (3.8)
                           |2πR|        2
                                     2
                                     σ      0   ···   0
                                                        
                                        1
                                                ...   .. 
                                           0  σ22     . 
                                    
wobei d0 := (d01 , · · · , d0n )T und R = 
                                           .. .. ..
                                                           sowie |·| die Determinante.
                                                  .  . 0 
                                                          
                                           .
                                            0 · · · 0 σn2
Sei nun die Standardabweichung aller Sensoren gleich σ = σ1 = · · · = σn . Dann gilt
                                   1         1
                                                               
                                                            2
                      P (d|p) = √       exp − σ −2 kd0 − dk                       (3.9)
                                  2πσ n      2
Dies ist die Likelihood Funktion, welche maximiert werden kann, um die optimale
Lösung zu finden. Man erkennt daran, dass für den Ausgabefehler gilt

                                   r ∼ N (0, σ 2n )                             (3.10)

sofern die Likelihoodfunktion einen globalen Extrempunkt hat, was auftritt, wenn
das Gleichungssystem Ap = b nicht unterbestimmt ist.

3.2 Platzierung von Ankern
Für eine eindeutige Lösung werden mindestens 4 Anker benötigt. Um die Fehlerfort-
pflanzung aus Messfehlern der Anker-Tag Entfernungen möglichst gering zu halten,
müssen diese 4 Anker speziell platziert werden. Für die Auswahl der Platzierung der
Anker ist der resultierende Winkel zwischen den Ankern am Tag entscheidend. Die-
ser sollte optimalerweise 90◦ für jedes Ankerpaar sein. Es ist zu beachten, wenn die
vier Anker eine Ebene bilden, die Genauigkeit mit der einer Positionsbestimmung
mit drei Ankern äquivalent ist und es zwei Lösungen gibt. Abbildung 3.1 zeigt die
mittleren Schnittwinkel der Kreise K(pi , d0i ) in Abhängigkeit von der Tagposition
in der Ebene. Im Raum sind die Anforderungen ähnlich, so dass die optimalen Po-
sitionen der Anker auf den Ecken eines gleichseitigen Tetraeders liegen, in dessen
Inneren sich alle Tags befinden. Solange alle Tags diese Anforderungen an die Po-
sition erfüllen ist ihre Anzahl aus mathematischer Sicht irrelevant. Abbildung 3.2
zeigt die Genauigkeit der Positionsbestimmungen im TDOA und TOF Verfahren
abhängig von der Position des Tags relativ zu den Ankern. Die Genauigkeit ist in
beiden Verfahren sehr ähnlich, sie ist dabei insbesondere zwischen den Ankern be-
sonders groß. Daher sollten die Anker so platziert werden, das der Tag sich immer
zwischen ihnen befindet.

                                                                                    19
3 Grundlagen

               Abbildung 3.1: Mittlere Schnittwinkel der Kreise [1]

20
3.2 Platzierung von Ankern

Abbildung 3.2: Genauigkeit der Positionsbestimmung [1]

                                                              21
4 Konzept
Nachdem verschieden Möglichkeiten zur Positionsbestimmung betrachtet wurden,
wird basierend auf der besten Möglichkeit für diesen Anwendungsfall ein Konzept
zur Implementierung eines solchen Systems dargestellt.

4.1 Systemanforderungen
Das zu entwickelnde System soll die Merkmale eines GPS Empfängers zu übertreffen.
So soll die Genauigkeit der Positionsbestimmung weniger als 7 Meter betragen. Da
UWB eine höhere Genauigkeit ermöglicht (2.1.5) wird hier aber ein höhere Anspruch
gestellt und die Genauigkeit soll 20 cm betragen. Es sollen zwei mal pro Sekunde, was
doppelt so schnell wie bei einem GPS Empfänger ist, neue Positionsdaten übertragen
werden. Die Rechenzeit zwischen Messung der zur Positionierung notwendigen Daten
und der Ausgabe der Position soll weniger als 100ms betragen, um sicherzustellen
das die Positionsdaten aktuell sind. Der Stromverbrauch soll keinen wesentlichen
Einfluss auf den Coper haben und unter 2 Watt liegen. Das Gewicht der zusätzlich
am Copter erforderlichen Hardware soll den Flug nicht übermäßig beeinflussen und
100g nicht überschreiten.

4.2 Systemdesign
Da satellitenbasierten System, aufgrund der fehlenden Indoorverfügbarkeit, bewe-
gungsbasierte System aufgrund der hohen Fehleranfälligkeit und bildbasierende Sys-
teme aufgrund der hohen Rechenzeit nicht möglich sind, wird ein lokales Funksystem
verwendet. Da UWB eine höhere Zuverlässigkeit als WLAN liefert, wird dies werden.
Dabei gibt es genau einen Tag (den Copter) und vier Anker. Eine höhere Ankeran-
zahl würde keine Vorteile bringen, aber aufwendiger sein und drei Anker liefern keine
eindeutige Position. Zur Lateration wird das TOF-Verfahren verwendet, da es kei-
ne Uhrensynchronisation erfordert. Um die Reaktionszeit klein zu halten wird das
TOF-Verfahren nur einmal vom Tag aus ausgeführt. Um dabei keine Genauigkeit
zu verlieren, werden Sende- und Empfangsverzögerungen genau kalibriert. Die vier
Anker kommunizieren dabei über UWB mit dem TAG, der dann seine Position be-
rechnet. Nachdem er die Position in einen NMEA Satz umgewandelt hat, sendet er
diesen über das UART GPS-Interface an den Copter. Um die Funktion des Systems
zu überwachen kann eine Debug Node über UWB vom TAG den Status des Systems
empfangen. Diese Daten werden anschließend über USB an einen PC übertragen,

                                                                                   23
4 Konzept

wo sie im Begleitprogramm angesehen werden können. Abbildung 4.1 zeigt diesen
den Systemaufbau.
Der Tag, die Anker und die Debugnode sind dabei nucleo64, an denen über die
Ardurino DIO-Pins ein DWM1000 angebracht ist. Der Tag ist über UART an den
Pixhawk Flight Controller angeschlossen und sendet GPS Koordinaten an diesen.
Über die GND und +5V Leitungen des UART Anschlusses wird er mit Strom ver-
sorgt. Die Anker werden über den USB-Port mit Strom versorgt. Dafür werden
sie in der Nähe von Steckdosen platziert und ein einfacher 230V Wechselstrom zu
5V Gleichstrom Transformator wird verwendet. Die Debugnode wird über USB des
verbundenen PCs mit Strom versorgt. TOF wird implementiert, indem der Tag
zweimal pro Sekunde eine Nachricht an alle Anker sendet, welche von diesen sofort
beantwortet wird. Da der GPS-Empfänger, welcher außerhalb des IndoorFlightCen-
ters verwendet wird, nur einmal pro Sekunde Positionsdaten liefert, erreicht das
System damit eine Verdopplung der Positionsdaten. Aus dem Zeitunterschied zwi-
schen dem Senden der Nachrichten an die Anker und dem Empfangen der Ant-
worten werden die Distanzen berechnet. Die Positionen der Anker werden mit den
Antworten mitgesendet, so dass der Tag seine Position berechnen kann. Wenn die
Position berechnet ist, bildet der Tag zwei NMEA Sätze und sendet diese an den
Pixhawk. Der erste Satz ist vom Typ GGA und enthält neben der Position und Zeit
auch Metadaten wie die Positionsgenauigkeit und die Anzahl der GPS-Satelliten
sowie die Höhe. Dabei werden immer 4 Satelliten und die höchste Genauigkeit
gesendet. Der zweite Satz ist vom Typ RMC und enthält die Position, Zeit, so-
wie Geschwindigkeit. Eine Übertragung enthält damit beispielsweise diese Daten:
$GPGGA,105751.00,5053.5703,N,01258.3372,E,1,4,1.0,95.7,M,55.2,M,,*A6
\r\n$GPRMC,105751.00,A,5053.5703,N,01258.3372,E,0.0,0.0,291218,A*45\r
\n
Dabei wird als Geschwindigkeit stets 0 gesendet. Die beiden Fällen wird keine ak-
tuelle Zeit angegeben sondern nur die Zeit seit dem Start des nucleo-64, da dieses
keine persistente Uhr hat. Die Zeit bestimmt der nucleo-64 dabei durch die interne
CPU-Clock, welche keine gute Genauigkeit über eine Lange Zeit liefert, da der pix-
hawk nur einen ungefähren Wert zur Berechnung von Zeitdifferenzen benötigt, ist
dies ausreichend.

4.2.1 Softwaredesign
Die Software, die auf die nucleo-64 Boards geschrieben wird, soll robust sein, da
ein Absturz dieser nicht direkt auffällt und die Wiederinbetriebnahme stets einen
Neustart erfordert. Außerdem soll möglichst viel Code wiederverwendet werden,
dass im Fehlerfall nur eine Software und nicht drei verschiedene bearbeitet werden
müssen.
Daher ist die Software, welche auf die nucleo-64 Boards geschrieben wird ist auf
sehr ähnlich zwischen den Ankern, dem Tag und der Debug-node. Sie enthält stets
die Bibliotheken für Hardwarezugriff, welche unter andrem das Senden von UWB
Nachrichten ermöglicht. Die allgemeine Konfigurationsdatei, die UWB und UART

24
4.2 Systemdesign

                           Abbildung 4.1: Systemaufbau

Parameter festlegt ist ebenfalls auf allen Geräten. Der einzige Unterschied zwischen
den boards besteht die main.c und die init.c. Dabei werden auf allen Boards in
der init.c verschiedene Interrupthandler gesetzt und Tasks gestartet. Die main.c
führt dann diese Tasks aus. Dabei erhält jeder Task stets einen festen Anteil der
Prozessorzeit.

UWB Packetaufbau
Das Protokoll, welches für die UWB Übertragungen genutzt wird, soll aus Packten
bestehen, welche abhängig von ihrem Typ verschiedene Funktionen erfüllen. So sind
mit einem allgemeinen Packtaufbau alle Verwendungen einbegriffen. Um die Übert-
ragungen effizient zu gestlten sind diese Pakete binär. Die verwendet UWB Packete
haben stets einen 12 Byte Header, siehe Tabelle 4.1 sowie einen Inhalt variabler
Länge. Diese Länge wird im Header übermittelt. Die ID der Boards wird dabei aus
der HardwareID der Nucleo-64 boards bestimmt und ist aufsteigend, wobei die ID

                                                                                  25
4 Konzept

0 für das Debugboard reserviert ist.
Die Paketheader beginnen mit 2 Byte frameContol, diese Feld ist konstant und
signalisiert die Verwendung dieses Paketaufbaus. Danach folgt eine aufsteigende Pa-
ketnummer, welche das doppelte Empfangen des gleichen Pakets verhindert. Die
sourceId und destinationId Felder enthalten die Board ID des Senders und des Ziels.
Dann folgt der Pakettype, welcher weiter in Tabelle 4.2 beschrieben wird und die
Paketlänge in Byte. Unterstützte Packettypen zwischen Tag und Ankern sind An-
frage und Antwort einer einseitigen TOF Entfernungsbestimmung, die vier Packete
einer zweiseitigen TOF Entfernungsbestimmung, Anfrage und Antwort eines Dis-
cover Paket, welches es dem Tag ermöglicht Anker zu entdecken. Zwischen Debug
Node und Tag werden Statusanfragen, Statusantworten und die Entfernungen von
allen Ankern zum Tag mit oder ohne Position des Tags. Alle Verbindungen erlau-
ben zusätzlich das Senden eines KeepAlive-Packtes um zu verhindern, das es einen
Timeout gibt.

 Headerfeld         Datetyp Beschreibung
 frameControl       UInt16
 sequenceNumber     UInt8   Aufsteigende Paketnummer
 destinationId      UInt16  ID des Empfängerboards, Broadcast wird un-
                            terstützt
 sourceId           UInt16  ID des Senderboards
 packetType         UInt8   Pakettyp, gibt Struktur des Nachrichtenkörpers
                            an, siehe Tabelle 4.2
 packetLength       UInt16  Paketlänge in Bytes inklusive Header

                    Tabelle 4.1: Headerfelder der UWB Pakete

26
4.3 Hardwareauswahl

 Packettyp                Hex    Beschreibung
 RANGING INIT SS          0x10   Anfrage einer einseitigen Entfernungsbestimmung
 RANGING INIT             0x11   Antwort einer einseitigen Entfernungsbestimmung
 RESPONSE
 RANGING INIT DS          0x20   Anfrage einer zweiseitigen Entfernungsbestim-
                                 mung
 RANGING WAY A            0x21   2. Paket einer zweiseitigen Entfernungsbestim-
                                 mung
 RANGING WAY B            0x22   3. Paket einer zweiseitigen Entfernungsbestim-
                                 mung
 RANGING RESULT           0x23   Ergebnis einer zweiseitigen Entfernungsbestim-
                                 mung
 DISCOVER                 0x30   Packet zum entdecken von Ankern und Tags, for-
                                 dert auf mit DISCOVER RESPONSE zu antwor-
                                 ten
 DISCOVER                 0x31   Antwort auf DISCOVER Paket
  RESPONSE
 STATUS                   0x40   Packet fordert zum senden des Status auf
 STATUS RESPONSE          0x41   Antwort auf STATUS Paket, enthält Position, so-
                                 wie erfasste Anker
 DEBUG RANGING            0x60   Enthält alle Anker und Entfernungen, die Tag er-
 RESULTS                         fasst hat, an Debugnode
 DEBUG MESSAGE            0x61   Nachricht an debugnode zur Ausgabe im Begleit-
                                 programm
 DEBUG RANGING   0x62            Enthält alle Anker und Entfernungen, die Tag er-
 RESULTS AND POS                 fasst hat sowie Ergebnis der Positionsbestimmung,
                                 an Debugnode
 KEEP ALIVE               0x80   Paket zum Aufrechterhalten der Verbindung

                       Tabelle 4.2: Unterstützte Pakettypen

4.2.2 Ankerpositionierung
Die Positionierung der Anker sollte einen gleichseitigen Tetraeder um den zulässigen
Bereich des Tag bilden, sodass die Schnittwinkel zwischen den Anker-Tag-Vektoren
möglichst hoch sind (2.).

4.3 Hardwareauswahl
Da die verwendete Hardware mit dem Copter mitfliegt, und von diesem Strom er-
halten los, ist wichtig, das sie einen geringen Stromverbrauch hat und leicht ist.
Außerdem ist es erforderlich, um die entwickelte Software einfach und schnell testen
zu können, das verwendete Board schnell beschrieben werden kann und ein Debugger

                                                                                  27
4 Konzept

                      Abbildung 4.2: Lateration mit 4 Ankern

angeschlossen werden kann.

4.3.1 Decawafe 1000 Module
Das Decawave 1000 Module (DWM1000) (Abbildung 4.3) ist ein UWB Modul,
welches auf dem DW1000 Chip basiert. Er unterstützt gemäß IEEE802.15.4-2011
Datenraten bis zu 6,8Mbit/s im Frequenzbereich von 3,5-6,5GHz. Bei maximaler
Sendestärke wird eine Reichweite von bis zu 300m erreicht. Dabei verbraucht der
DWM1000 maximal 0,2 Watt beim Senden und 0,1 Watt beim empfangen. Zusätz-
lich unterstützt er TOF und TDOA basierte Positionsbestimmung auf Hardwareebe-
ne, was zu eine Genauigkeit im Bereich von 10cm führt. Das DWM1000 Modul wird
via Serial Peripheral Interface (SPI) an den Hostprozessor angeschlossen. Um ma-
ximale Sende- und Empfangsleistung zu ermöglichen, muss das Modul in Richtung
des Empfängers oder Senders ausgerichtet werden. Die Abbildungen 4.4, 4.5 und
4.6 zeigen die Abhängigkeit der Empfangsstärke von der Rotation des Chips entlang
der 3 kardinalen Achsen. Dabei hat die Rotation des Moduls an der Längsachse
keinen Einfluss, das heißt von oben, unten und den Seiten ist die Signalstärke gleich
(Abbildung 4.4). Der Empfang an den, der Antenne entgegen gerichteten Seiten

28
4.3 Hardwareauswahl

                   Abbildung 4.3: Decawave DWM1000 Modul

        Abbildung 4.4: Einfluss der Azimutrotation auf die Sendeleistung

ist nicht nur schlecht, da dort der Chip und daran angeschlossen das Board ist,
sondern auch generell entlang der Längsachse bei etwa -10dB. Auch die kardinale
Richtung ausgehend von der Antenne hat eine geringfügig schlechtere Sendeleistung
von -10dB, dafür haben Richtungen, die geringfügig von dieser Achse abweichen den
besten Empfang mit +5dB. Ober- und Unterseite des Chips weisen eine gute Sen-
deleistung auf, jedoch ist zu beachten, dass die Unterseite teilweise vom nucleo-64
Board abgeschirmt wird (Abbildungen 4.5, 4.6).

4.3.2 nucleo64
Das NUCLEO-L476RG ist ein STM32 Nucleo-64 Board. Es besitzt einen ARM
basierten STM32 Mikrocontroller. Es kann sowohl über USB als auch über Pins
5V Strom erhalten und an ein weiteres Board weitergeben. Das Board kann bis
zu 300mA Strom verbrauchen, was jedoch durch eine Jumper auf 100mA begrenzt
werden kann. Der Mikrocontroller wird programmiert, indem die Software über USB
geflasht wird. Zur Arbeit mit dem Nucleo-64 gibt es eine auf Eclipse basierende

                                                                                29
4 Konzept

     Abbildung 4.5: Einfluss der Elevationsrotation auf die Sendeleistung (1)

     Abbildung 4.6: Einfluss der Elevationsrotation auf die Sendeleistung (2)

30
4.4 Verwendete Programmiersprache

IDE. Diese ermöglicht das schnelle schreiben der Software auf die Boards sowie den
Anschluss eines Debuggers an das Board.

4.4 Verwendete Programmiersprache
Da der STM32 Prozessor ARM Binärcode ausführt, kann man ihn in jeder Spra-
che, die zu ARM kompiliert programmieren. Die begrenzten Ressourcen, Verfügbar-
keit von Bibliotheken und Hardwarefeatures schließen jedoch alle Sprachen außer
C/C++ aus. Da die Bibliothek für Hardwarezugriff auf das Board in C geschrieben
ist, wird die Software ebenfalls in C geschrieben. Die Laterationsimplementierung,
die auf eine C++ Bibliothek zum Lösen des linearen Gleichungssystems zugreifen
muss, in C++ geschrieben werden. Die Begleitanwendung, welche auf dem PC lau-
fen soll, wird in C# geschrieben, da sie nicht hardwarenah implementiert werden
muss und da C# einfache Programmierung von graphischen Benutzeroberflächen
mit .NET bietet.

                                                                                31
5 Implementierung
Die Implementierung der notwendigen Software beruht auf möglichst wenigen ex-
ternen Abhängigkeiten beruhen. Verwendet werden nur die Bibliothek, welche den
Hardwarezugriff erleichtert und eine Bibliothek zum Lösen des mathematischen Pro-
blems.

5.1 Laterationsimplementierung
Die Position des Tags aus den Entfernungen von den Ankern wird im Tag berech-
net. Dazu muss der mathematische Laterationsalgorithmus auf diesem implementiert
werden. Zur Berechnung der Position des Tag wird die C++ Bibliothek Eigen ver-
wendet, welche Funktionen für lineare Algebra implementiert und insbesondere die
Methode der kleinsten Quadrate ermöglicht. Die Eigenbibliothek, welche in C++
geschrieben ist, erwartet als Eingabe Objekte. Da alle anderen Teile der Softwa-
re in C implementiert sind, wird ein Wrapper programmiert, welcher C structs in
die zur Lateration erforderlichen Objekte übersetzt. Da sowohl C als auch C++ in
ARM-Binärcode übersetzt werden, ist der Aufruf der Latertion einfach.

5.2 GPS Positionsberechnung
Nachdem die lokale Position mit Hilfe von Lateration bestimmt wurde, wird um
einen echten GPS-Empfänger zu simulieren, die Berechnung von globalen GPS Ko-
ordinaten benötigt. Diese umfassen die geographische Länge und Breite sowie die
Höhe. Dazu muss zunächst das lokale Koordinatensystem durch Rotation nach Nor-
den ausgerichtet werden.

                            x0 = x ∗ cos(α) + y ∗ sin(α)                        (5.1)

                           y 0 = −x ∗ sin(α) + y ∗ cos(α).                      (5.2)
Da alle Breitenkreise bis auf wenige hundert Meter gleich breit sind, lässt sich die
Breite durch
                          breite = of f setx + y 0 /111600m                     (5.3)
berechnen. Da die Breite der Längenkreise von der geographischen Breite abhängt
gilt für diese:
                  laenge = of f sety + x0 /111300m ∗ cos(breite)            (5.4)

                                                                                  33
5 Implementierung

Die Breite im IndoorFlightCenter ändert sich aber nur im Sekundenbreich, daher
wurde der Cosinus vorberechnet um Rechenzeit zu sparen. Die Offsets sind die geo-
graphischen Koordinaten des lokalen Koordinatenursprungs sind fest einprogram-
miert, kann aber nach Bedarf geändert werden. Da für die Navigation lediglich die
lokalen Koordinatenveränderungen entscheidend sind, ist diese Position irrelevant,
sie wurde jedoch mit einem GPS-Empfänger bestimmt. Da sich das IndoorFlight-
Center im nordöstlichen Koordinatenbereich befindet, ist dieser als positiv definiert.

5.3 GPS Positionsübertragung
Zur Positionsübertragung werden die NMEA Sätze nach jeder erfolgreichen Latera-
tion via UART übertragen. Sollte die Lateration fehlschlagen, da nicht ausreichend
viele, also weniger als vier, Anker erreichbar sind, oder die Anordnung der Anker
eine Positionsbestimmung unmöglich macht, werden keine Daten übertragen. Dabei
wird eine Datenrate von 88 kBit/s verwendet, diese kann jedoch angepasst werden,
wenn sie sowohl im Pixhawk als auch in der Software des Tags geändert wird. Ei-
ne höhere Datenrate senkt die Verzögerung, nach der die Daten ankommen, erhöht
aber das Risiko eines Bitfehlers der Übertragung. Da die gesendeten NMEA Sätze
insgesamt etwa 140Bytes umfassen, dauert der Sendevorgang etwa 12,7 ms.

5.4 Begleitprogramm
Das Begleitprogramm ist eine in C# geschriebene .NET Anwendung, welche die
Überwachung des Systems ermöglicht. Es zeigt die Positionen und Entfernungen der
Anker sowie die berechnete Position des Tags an und stellt dies visuell dar. Dazu
muss eine Debugnode mit spezieller Software via USB an einen PC angeschlossen
werden. Die Debugnode empfängt diese Daten vom Tag. Zusätzlich ist es möglich,
die Positionskoordinaten der Anker zu konfigurieren. Die Datentransfers zwischen
den Nodes verwenden dabei UWB.

5.5 Systemaufbau
Zur Installation des System im IndoorFlightCenter ist es nötig, geeignete Positionen
für die Anker zu bestimmen. Die Anker sind in einem Gehäuse, welches direkt in
Steckdosen gesteckt wird. Daher sind die Positionen der Steckdosen für die Positio-
nierung essenziell. Ein Problem mit Steckdosen ist, das diese oft in gleicher Höhe
auftreten und so die Anker in einer Ebene liegen. Die Verwendung der Steckdose
ist im Raumplan in Abbildung 5.1 zu sehen. Während drei Anker in gleicher Höhe
im Raum sind, ist der vierte an der Decke über dem Flugbereich des Copters an-
gebracht. Der Coper und damit der Tag befindet sich dabei stets im markierten
Rechteck und somit zwischen den vier Ankern. Zur Bestimmung der lokalen Ko-
ordinaten der Anker werden die Gebäudepläne, welche genau Maße enthalten, ver-

34
5.5 Systemaufbau

       Abbildung 5.1: Platzierung der Anker im Raum IndoorFlightCenter

wendet. Eine Abmessung ist aber auch möglich. Zusätzlich ist noch die Ausrichtung
nach Norden und ein Punkt, welcher in lokalen sowie globalen Koordinaten vorliegt
notwendig. Die Verbindung zwischen dem Pixhawk und dem Nucleo-64 konnte Pro-
blemlos hergestellt werden. Die Befestigung des Boards am Copter war schwierig, da
die Positionen, welche für derartige Hardware vorgesehen sind bereits belegt waren.
Um die Kommunikation mit dem Pixhawk zu ermöglichen wurden noch Konfigura-
tionen am Pixhawk vorgenommen. Der Kommunikationsmodus des GPS-Ports ist
auf NMEA gestellt wurden und das UART Datenformat sowie die Datenrate wurde
angepasst.

                                                                                 35
6 Ergebnisse
Das Resultat der Implementierung ist ein UWB Positionsbestimmungssystem. Des-
sen Funktion soll hier überprüft werden. Das System hat dabei folgende Kompo-
nenten: eine Tag, vier Anker, eine Debug node sowie das auf dem PC laufende
Begleitprogramm. Es ermöglicht die Positionsbestimmung eines Tags im IndoorF-
lightCenter und die Weiterleitung dieser Position an einen Pixhawk Flight Control-
ler.

6.1 Validierung
Um die Funktionalität des entwickelten System zu testen, wurden Tests auf allen
Ebenen entwickelt und durchgeführt.

6.1.1 Kriterien
Die Kriterien an Genauigkeit, Rechenzeit, Performance und Einfluss auf den Copter
aus 1.4 sollen erfüllt werden. Die die Funktionalität auf Softwareebene, insbesondere
der Algorithmen zur Berechnung der Position, zur Erzeugung der NMEA Sätze und
der Koordinatenumwandlung soll gewährleistet sein. Der Prozess des Laterations-
algorithmuss soll dabei nicht auf den Spezialfall vier Anker beschränkt sein und er
soll in Fehlerfällen NaN zurückgeben. Der Algorithmus zur Bestimmung der NMEA
Sätze soll dabei stets valide Sätze zurückgeben. Die Koordinatenumwandlung soll
im Koordinatenbereich des IndoorFlightCenters korrekte Daten ausgeben.

6.1.2 Unittests
Um die Funktionalität auf Softwareebene, insbesondere der Algorithmen zur Berech-
nung der Position, zur Erzeugung der NME Sätze und der Koordinatenumwandlung,
zu gewährleisten wurde eine Vielzahl an Unittest geschrieben. Die Validierung der
Positionsbestimmung spielt eine entscheidende Rolle, da Fehler in dieser nicht un-
verzüglich auffallen aber dennoch zu groben Fehlern im darauf beruhenden System
führen. Zusätzlich wurde der mathematische Teil des Algorithmus aus einer Biblio-
thek importiert, deren korrekte Verwendung so bestätigt wird. Der Laterationsalgo-
rithmus wurde dabei auf folgende Fälle getestet: Zunächst wurden Testdaten mit ak-
kuraten Enterungen an verschiedenen Positionen und in verschiedenen Skalierungen
getestet. Dabei wurden stets vier Anker verwendet. Dies ist zwar keine realistische
Anwendung der Software, kann aber Fehler in der Implementation des Algorithmus

                                                                                    37
Sie können auch lesen