Autonomer Flug : Integration des GPS-Moduls

1. Motivation

Der Quadrocopter ist zum bisherigen Stand flugbereit, verfügt über ein Arduino Pro Mini-Board (v1.2, das mit einem ATMega328 Mikrocontroller ausgerüstet ist) und kann vom Benutzer durch eine Fernbedienung gesteuert werden. Er war aber nicht in der Lage, vorgegebene Wegpunkte autonom anzufliegen. Um dies zu ermöglichen, wird ein GPS Modul an das Mikrocontroller-Board angeschlossen und werden die elektrische Verbindung zum Quadrocopter sowie die Multiwii-Software dementsprechend angepasst.

2. Das GPS-Modul

Als GPS-Modul wird das LEA-6H-0-002 von der Firma U-Blox (vgl. Abb. 1) verwendet.

GPS-Modul

2.1. Eigenschaften

  • Eine kompakte Dimension von 37x37x9mm
  • Eine 25x25x4mm Keramik-Patch-Antenne
  • Eine Update Rate von 5Hz
  • Eine Genauigkeit von 2.5m
  • Ein verbesserter Powersave Modus
  • Ein gesamtes Gewicht von 16,5g
  • Ausgabe von Daten in UBX- oder NMEA-0183–Protokoll

2.2. GPS-Einstellungen

Zur Konfiguration des GPS Moduls stellt U-Blox ein GUI, "U-Center", sowie eine Bedienungsanleitung zur Verfügung. Es müssen hier einige Einstellungen geändert werden, um das Modul nach Bedarf verwenden zu können.

  • "Receiver --> Baudrate --> 38400 bps" auswählen.
  • "Configuration View --> MSG (Messages) --> F0-00 NMEA GxGGA".
  • "Configuration View --> PRT (Ports) --> Target: 1 – UART1".
  • "Configuration View --> PRT (Ports) --> Protocol Out: 0+1 - UBX+NMEA".

Nachdem alle diese Änderungen ausgeführt worden sind, gibt das GPS Modul UBX- und NMEA-Protokolle aus. Da die Multiwii-Software nur NMEA Output analysieren kann, werden die UBX-Daten nicht bearbeitet.

2.3. Elektrische Verbindung mit dem Arduino

Das U-Blox Modul bietet die Möglichkeit an, das GPS über zwei verschiedene Schnittstellen mit dem Quadrocopter zu verbinden: I²C oder UART.

Für die Verbindung mit dem Arduino über den I²C Port muss das GPS als Slave funktionieren aber da dieses Modul einen externen EEPROM-Speicher (electrically erasable programmable read-only memory) auf seiner Platine hat, kann es vorkommen, dass das GPS-Modul sich als Master verhält, was zu Fehlern führen kann.

Anderseits fordert die Benutzung der UART-Schnittstelle einen weiteren freien Port auf dem Mikrocontroller-Board. Da der bisher verwendete Arduino Pro Mini nur einen UART Port besitzt, der bereits für die Telemetrie benutzt wird, muss ein neuer Mikrocontroller mit zusätzlichen Schnittstellen verwendet werden, nämlich der Arduino Mega.

2.4. Anpassung der Software

Für die richtige Inbetriebnahme des Quadrocopter mit dem oben genannten Board, müssen einige Änderungen in der Multiwii-Software eingefügt werden. Der „config.h“ Sketch muss folgendermaßen angepasst werden:

  • Die serielle Verbindung muss einkommentiert werden:
#define GPS_SERIAL 2
  • Die Baudrate muss auf 38400 bps eingesetzt werden (die Baudrate des GPSs):
#define GPS_BAUD 38400
  • Die magnetische Deklination muss auf 2.43f eingesetzt werden (die magnetische Deklination von München):
#define MAG_DECLINIATION  2.43f



3. Verbindung mit dem Quadrocopter

Zur Verbindung des GPS Moduls, des Arduino Mega und des Quadrocopters werden zwei Platinen entworfen, um die Vielzahl von Kabeln zu reduzieren und den Anschluss zu vereinfachen.

3.1. Der Stecker

Die erste Platine (vgl. Abb. 2 & 3) wird direkt an den Stecker des Quadrocopters eingesteckt und besitzt dann dieselbe Pinbelegung des Steckers sowie alle benötigten Pins zur Verbindung mit dem Quadrocopter:

Stecker Stecker Eagle

Die Pinbelegung:
Pinbelegung_Stecker

Die Motoreneingänge MFL (Motor Front Left), MFR, MRL (Motor Rear Left) und MRR werden jeweils an PWM2, PWM3, PWM5 und PWM6 angeschlossen.

THROTTLE, ROLL, PITCH, YAW und AUX1 werden jeweils mit A8, A9, A10, A11 und A12 verbunden.

SCL, SDA, 5V und GND werden auch jeweils an SCL, SDA, 5V und GND des Arduino Mega angeschlossen.

3.2. Das GPS-Schield

Die zweite Platine (vgl. Abb. 4) dient zur Verbindung der ersten Platine mit dem Arduino Mega. Sie wird in derselben Größe und Pinbelegung wie das Arduino Mega gefertigt und besitzt einen passenden Stecker  zur ersten Platine.

Auf dem Arduino Mega befinden sich verschiedene Buchsenleisten mit verschiedenen Belegungen. Die Platine wird so gebaut, dass sie alle passende Stiftleisten zu den benötigten Pins besitzt. Anhand der (Computer-assisted-design) Software Eagle(10) werden dann die Verbindungen zwischen diesen Stiftleisten und dem Stecker modelliert und mit der Fräsmaschine hergestellt.

Die Pinbelegung der Platine wird wie folgt gestaltet (Abb. 4):

 GPS_Schield

Außerdem wird das GPS-Modul auf der Platine befestigt, damit der Anschluss stabiler und die Schaltung kompakter wird (vgl. Abb. 5).

komplette Schaltung

4. Multiwii V1.2 GUI

Sobald die beiden Platinen gefräst und an dem Quadrocopter angesteckt sind, bekommt man korrekte und präzise Daten aus dem GPS und den Sensoren auf der Multiwii 2.1 GUI (vgl. Abb. 6).

Multiwii GUI

5. Problemstellung und 2. Ansatz

Anhand des Arduino Mega, der mit dem GPS Modul ausgerüstet ist, und dank der dafür hergestellten Platine und Stecker ist der Quadrocopter hardwaremäßig in der Lage Wegpunkte autonom anzufliegen. Bei dieser Hardwarekonfiguration sind aber keine Pläne für Notfälle vorgesehen. Das heißt, im Falle eines Absturzes des Mikrocontrollers aus irgendeinem Grund (Softwarefehler, Hardwarestörung,…) ist der Quadrocopter komplett außer Kontrolle und kann nicht sicher zum Landen gebracht werden. Dies liegt daran, dass derselbe Mikrocontroller die Berechnungen sowohl für den manuellen als auch für den autonomen Flug ausführt. Im Falle einer Störung verliert man folglich auch jeden manuellen Zugriff auf das Luftfahrzeug.

Das Team darf solche Risiken nicht eingehen, da diese Konfiguration große Mängel aufweist und ein autonomer Flug rechtlich unzulässig ist. Um dem langfristigen Ziel näher zu kommen, muss die bisherige Hardware des Quadrocopters neu konfiguriert werden und ein Fail-Save-Modus eingefügt werden.

Eine mögliche Lösung zu diesem Problem wäre der folgende Ansatz. Daran werden wir noch arbeiten.

2. Ansatz