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