Basel, den 25 - Schweizer Jugend forscht

Werbung
Autonomic drone control
Autoren: Ramon Magatti, David Peter, Sergio Schneider und Michael Wüest
Projektleiterinnen und Projektleiter: Ruslan Mavlyutov
„Kann sich eine Drohne autonom im Raum steuern“ ist unsere Forschungsfrage. Wir lernten
dazu zuerst die Programmiersprache Python. Für Python stehen viele fertige
Unterprogramme im Raum, welchen wir uns zunutze machten. Wir setzten ein Programm
zusammen, welches im Raum mit Hilfe von Triangulation einen Standort bestimmen kann.
Mit einem weiteren Programm für die Drohnensteuerung, liessen wird die Drohne den Raum
abfliegen und konnten ihre Route bestimmen, aufzeichnen und in einem Grafien sichtbar
machen. Die Antwort wäre somit: „Mit Triangulation und einem Computerprogramm kann
man eine Drohne im Raum steuern.“
1. Einführung
Als uns das Projekt vorgestellt wurde, kamen viele gute Ideen zusammen. Wir überlegten
uns was neu ist, uns interessiert und in einer Woche realisierbar wäre. Als Mittel bekamen
wir Kameras und eine Drohne. Anfänglich wurde überlegt, wie man die Position einer Drohne
bestimmen kann. Da die Drohne aber weder GPS noch sonstige weitere Sensoren hatte,
mussten wir uns andere Möglichkeiten ausdenken. Die folgende Grundidee für das Projekt
war es dann, mittels Triangulation den Standort einer Drohne im Raum zu bestimmen und
diese autonom fliegen zu lassen. Einzelne Blöcke dazu zu unsere Idee gab es schon im
Internet in Bibliotheken, wie z.B. ein sich bewegendes Objekt zu markieren.
2. Material und Methoden
2.1 Python
Eine weltweit wachsende Programmiersprache ist Python. Sie wurde 1990 erfunden und ist
ein Open-Source Project, kann also von Allen mitentwickelt werden. Python ist dabei
interaktive und objekt-, aspektorientiert höhere Programmiersprache. Dabei steht ein
lesbarer kurzer Code im Vordergrund. Dafür wird z.B. auf geschweifte Klammern verzichtet.
Python büsst dafür an Ausführgeschwindigkeit ein und wird für schnelles Prototyp
programmieren verwendet, welche dann in einer anderen Sprache optimiert programmiert
werden. Unser ganzes Projekt wurde mit Python programmiert und es wurden mehre Python
Bibliotheken verwendet.
Abbildung 1 , Pythonlogo
2.2 OpenCV
OpenCV ist ein ist eine Programmbibliothek, welche Algorithmen für die Bildverarbeitung und
das maschinelle sehen enthält. Die Vorteile von OpenCV sind ihre Geschwindigkeit und
grosse Menge von Algorithmen in welche die neusten Forschungsergebnisse einfliessen. In
der Bibliothek von OpenCV sind unterandrem Algorithmen für 3D-Funktionalitäten,
Gesichtsdetektion, Bewegungsdetektion, verschiedene Filter und maschinelles Lernen. Wir
haben um die Drohne zu erkenne das Motiontracking von dieser Bibliothek genutzt.
Abbildung 2 & 3, OpenCVlogo und Beispiele für Motiontracking
2.2 Auswahl der Drohne
Als Drohne wurde die Parrot Minidrone Travis gebraucht. Diese Drohne unterstützt BLE
(Bluetooth Low Energy) und besitzt einen integrierten Mikrocomputer, der für die
Flugstabilität der Drohne sorgt. Auf der Unterseite der Drohne befindet sich ein
Ultraschallsensor, welcher den Bodenabstand detektiert und die Mindestflughöhe garantiert.
Neben dem Ultraschallsensor befindet sich noch eine winzige Kamera, die wir aber nicht
benutzt haben für unser Projekt. Mit der Drohne kann ganz einfach über das Smartphone mit
der App Freeflight3 kommuniziert oder über einen BLE unterstützenden Computer
programmiert werden. Für die Programmierung der Drohne gab es schon einige
Datenbanken, die lediglich zu unserer Funktion umgeschrieben werden mussten.
Abblildung 4, Parrot Minidrone
2.3 Bluetooth Low Energy
Bluetooth Low Energy, Bluetooth LE (kurz BLE), Bluetooth Smart ist eine Funktechnik, mit
der sich Geräte in einer Umgebung von etwa 10 Metern vernetzen lassen. Im Vergleich zum
„klassischen“ Bluetooth soll BLE deutlich geringeren Stromverbrauch und geringere Kosten
mit einem ähnlichen Kommunikationsbereich haben. Technisch ist Bluetooth Smart nicht
rückwärtskompatibel, neuere Bluetooth Geräte müssen zusätzlich den LE Protokollstapel
unterstützen, um sich verbinden zu können. Unsere Drohne wurde mit BLE angesteuert bzw.
gesteuert.
Abbildung 5, Bluetoothlogo
2
2.4 Triangulation
Triangulation beschreibt ein Messverfahren, welches einen Punkt im Raum durch zwei
Stationen bestimmt werden kann. Wen man den Abstand der 2 Kameras und den Abstand
vom Bildsensor zur Linse weiss, kann mit ähnlichen Dreiecken die Distanz zum Objekt
berechnen. Nach dem gleichen Prinzip kann auch der Mensch mit seine 2 Augen Distanzen
einschätzen.
Abbildung 6, Traingulation mit Kameras
3. Resultate
Mit Python wurden zwei Programme geschrieben. Das erste Programm steuert die Drohne
mit Bluetooth. Wir haben dazu ein fertiges Unterprogramm genutzt, welches aber noch
angepasst werden musste. Das zweite Programm hat mit Motiontracking von OpenCV die
Drohne im Raum erkennt, ihr Standort mit einem Selbstgeschrieben Programm und zwei
Kameras berechnet. Ein anderes Unterprogramm aus eine Bibliothek hat eine Grafik der
Flugbahn im Raum erstellt. Unserer Fragestellung kann beantwortet werde mit: „Mit
Triangulation und einem Computerprogramm kann man eine Drohne im Raum steuern.“
Abbildung 7, Koordinatendiagramm der Flugbahn
Abbildung 8, Drohnensteuerung in Python Programmauszug
3
4. Diskussion
Kann sich eine Drohne autonom im Raum steuern? Ja, mit Hilfe von Triangulation und einem
Computerprogramm ist das möglich. Der Weg zu dieser Antwort war aber sehr nerv zehrend.
Es gab viel zu lernen und oftmals funktioniert unser Python Programm nicht wie erwartet und
wir standen ratlos davor. Die vielen Rückschläge nagten an unserer Motivation was sich auf
die Produktivität auswirkte. Eine grössere Ausdauer von unserer Seite wäre dabei
wünschenswärt gewesen. Die mangelnde Motivation ist aber nicht nur unsere Schuld,
sondern kommt auch von der mangelnden Unterstützung unseres Betreuers.
Danksagung
Dieses Projekt wäre nie möglich gewesen ohne die Unterstützung anderer. Deshalb möchten
wir uns bei Ruslan Mavlyutov, Ulrich Ultes-Nitsche, der Uni Fribourg, bei Schweizer Jugend
forscht, bei der Haslerstiftung und allen anderen Donatoren und Mitwirkenden herzlichst für
diese Studienwoche Bedanken.
Literatur- und Quellenverzeichnis
o.V. 2016. Google Bilder.
https://www.google.ch/imghp?hl=de&tab=wi&ei=Z9LsV_G6KMWb6ASgoKwAQ&ved=0EKouCBQoAQ. (16.09.2016)
o.V. 2016. Wikipedia. https://en.wikipedia.org/wiki/Main_Page. (16.09.2016)
o.V. 2016. OpenCV. http://opencv.org/. (16.09.2016)
o.V. 2016. Python. https://www.python.org/. (16.09.2016)
4
Herunterladen