Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
projektewise21:fliegenderroboter:start [2021/12/13 18:24] Davidvonseyfried |
projektewise21:fliegenderroboter:start [2022/03/17 14:45] (aktuell) JelenaM [Projektplanung] |
||
---|---|---|---|
Zeile 4: | Zeile 4: | ||
===== Projektplanung ===== | ===== Projektplanung ===== | ||
+ | Unsere Projektdokumentation befindet sich [[doku|hier]]. | ||
==== 1. Einführung ==== | ==== 1. Einführung ==== | ||
- | Unser Plan ist es, den ersten funktionierenden fliegenden Roboter des Robotik Projektlabors zu bauen. Es soll sich um einen Zeppelin handeln, welcher via Bluetooth-Verbindung in Kontakt mit einem Computer oder Smartphone steht und Befehle durch Texteingabe oder Sprache empfangen kann. Dabei sollte er eigenständig in der Lage sein, bei der Fortbewegung nicht mit Wänden oder Gegenständen zu kollidieren und auf Befehl automatisch einer Lichtquelle zu folgen. Bei ausreichender Zeit wollen wir außerdem hinzufügen, dass der Zeppelin sich mit Hilfe einer im Raum platzierten Kamera orientieren, bzw. nicht nur Licht folgen, sondern auch Signale mit unterschiedlich getaktetem Blinken verstehen kann. | + | Unser Plan ist es, den ersten funktionierenden fliegenden Roboter des Robotik Projektlabors zu bauen. Es soll sich um einen Zeppelin handeln, welcher via Bluetooth-Verbindung in Kontakt mit einem Computer oder Smartphone steht und Befehle durch Texteingabe oder Sprache empfangen kann. Dabei sollte er eigenständig in der Lage sein, bei der Fortbewegung nicht mit Wänden oder Gegenständen zu kollidieren und auf Befehl automatisch einer Lichtquelle zu folgen. Bei ausreichender Zeit wollen wir außerdem hinzufügen, dass der Zeppelin sich mit Hilfe einer im Raum platzierten Kamera orientieren, bzw. nicht nur Licht folgen, sondern auch Signale mit unterschiedlich getaktetem Blinken unterscheiden kann. |
Zeile 24: | Zeile 25: | ||
* Anweisungen per Sprachbefehl über Computer/Handy umsetzen | * Anweisungen per Sprachbefehl über Computer/Handy umsetzen | ||
* Orientierung innerhalb des Raums | * Orientierung innerhalb des Raums | ||
- | * Ladestation finden, ansteuern, Verbindung herstellen und Akku laden | ||
Das lassen wir bewusst **weg:** | Das lassen wir bewusst **weg:** | ||
+ | * Ladestation finden, ansteuern, Verbindung herstellen und Akku laden | ||
* Bildverarbeitung zur 3D-Modellierung des Raums | * Bildverarbeitung zur 3D-Modellierung des Raums | ||
Zeile 32: | Zeile 33: | ||
==== 3. Szenario-Skizze ==== | ==== 3. Szenario-Skizze ==== | ||
- | <imgcaption image1|> | + | <imgcaption image1|>{{ :projektewise21:fliegenderroboter:szenario_skizze_zeppelin.png?direct&650 |Szenario-Skizze des Zeppelin-Roboters}}</imgcaption> |
- | {{ :projektewise21:fliegenderroboter:szenario_skizze_zeppelin.png?direct | Szenario-Skizze des Zeppelin-Roboters}}</imgcaption> | + | |
- | + | ||
- | <imgcaption image2|> | + | |
- | {{ :projektewise21:fliegenderroboter:zeppelin-3d_model-vollansicht.png | 3D-Modell des Zeppelin}}</imgcaption> | + | |
==== 4. Teilaufgaben und Arbeitspakete ==== | ==== 4. Teilaufgaben und Arbeitspakete ==== | ||
Zeile 48: | Zeile 44: | ||
- | === 1. Bau === | + | === 0.1 Planung === |
- | Sind die Bauteile angekommen, die benötigten Teile gedruckt und stehen alle Werkzeuge zur Verfügung, müssen wir mit dem Bau beginnen. Hierauf basieren auch die folgenden Teilschritte, die eine Bewegung des Zeppelins benötigen. Sollte das Fliegen jedoch fehlschlagen, können die folgenden Funktionen auch auf einen fahrenden Roboter übertragen werden, der jedoch andere Materialien für den Bau benötigen würde. | + | <imgcaption image2|>{{ :projektewise21:fliegenderroboter:zeppelin-3d_model-vollansicht.png?direct&650 |3D-Modell des Zeppelin (Totalansicht)}}</imgcaption> |
- | Im Mittelpunkt dieses Schrittes steht der Ballon, an welchem Motor, Servo, Batterie, Propeller, Steuerflossen, Sensoren, Bluetooth-Modul und Arduino angebracht werden, wie es in folgender Abbildung zu erkennen ist: | + | Da die Entwicklung eines Zeppelins von null auf einen ziemlich großen Zeitaufwand, viele Berechnungen und Tests benötigen würden, haben wir uns das bereits existierende Projekt //[[http://silent-runner.net/index.php?title=Main_Page|silent_runner]]// zum Vorbild für die Konstruktion genommen. Von diesem unterscheidet sich unser Projekt nicht nur hinsichtlich der Sensorik und Steuerung (<imgref image5>), sondern auch darin, dass wir teils ähnliche Bauteile in andern Ausführungen und mit anderen Abmessungen verwenden. Es schien uns daher sinnvoll ein 3D-Modell (<imgref image2>) zu erstellen, um unsere eigenen Maße besser berechnen und entsprechende Bauteile 3d-drucken oder zuschneiden zu können. |
- | <note important> | ||
- | Macht bitte eine Zeichnung (muss nicht schön sein, ihr könnt z.B. etwas auf einem Zettel zeichnen und dann fotographieren, Hauptsache verständlich) zur geplanten Konstruktion des Roboters. | ||
- | </note> | ||
- | <imgcaption image2|>{{ :projektewise21:fliegenderroboter:zeppelin_schaltung.png?direct | Schaltplanskizze}} | + | === 1. Bau === |
+ | |||
+ | Sind die Bauteile angekommen, die benötigten Teile gedruckt und stehen alle Werkzeuge zur Verfügung, müssen wir mit dem Bau beginnen. Hierauf basieren auch die folgenden Teilschritte, die eine Bewegung des Zeppelins benötigen. Sollte das Fliegen jedoch fehlschlagen, können die folgenden Funktionen auch auf einen fahrenden Roboter übertragen werden, der jedoch andere Materialien für den Bau benötigen würde. | ||
+ | |||
+ | Im Mittelpunkt dieses Schrittes steht der Ballon, an welchem Motor, Servo, Batterie, Propeller, Steuerflossen, Sensoren, Bluetooth-Modul und Arduino angebracht werden (vgl. <imgref image2>, <imgref image3>, <imgref image4>, <imgref image5>). | ||
+ | <imgcaption image3|>{{:projektewise21:fliegenderroboter:3d_modell_motoraufnahme.png?direct&500|3D-Modell des Zeppelin (Motoraufhängung)}}</imgcaption> | ||
Hier besteht das Risiko, dass sich bei der Umsetzung herausstellt, dass etwas nicht so funktioniert, wie wir es uns vorgestellt haben und der Zeppelin dementsprechend nicht fliegt. Auch könnte es passieren, dass Teile zu spät ankommen oder das Drucken mit dem 3D-Drucker fehlschlägt. Oft kommt es vor, dass gedruckte Teile nicht genau den gegebenen Maßen entsprechen und man verschiedene Versionen testen muss, was Zeit in Anspruch nimmt. | Hier besteht das Risiko, dass sich bei der Umsetzung herausstellt, dass etwas nicht so funktioniert, wie wir es uns vorgestellt haben und der Zeppelin dementsprechend nicht fliegt. Auch könnte es passieren, dass Teile zu spät ankommen oder das Drucken mit dem 3D-Drucker fehlschlägt. Oft kommt es vor, dass gedruckte Teile nicht genau den gegebenen Maßen entsprechen und man verschiedene Versionen testen muss, was Zeit in Anspruch nimmt. | ||
Zeile 79: | Zeile 77: | ||
* Lipo Charger | * Lipo Charger | ||
* 4 Wire Cable | * 4 Wire Cable | ||
- | * 5'' Propeller | + | * 5″ Propeller |
* Arduino Nano | * Arduino Nano | ||
* evtl. Gewichte zum Austarieren | * evtl. Gewichte zum Austarieren | ||
Zeile 88: | Zeile 86: | ||
Unser Plan ist, den Zeppelin per Bluetooth mit einem Computer oder einem Smartphone zu verbinden. Idealerweise sollte es sich so auch über Sprachsteuerung kontrollieren lassen (das Feature werden wir nur bei ausreichend Zeit hinzufügen). Dieser Teilschritt soll gleichzeitig mit dem Bau begonnen werden, damit wir im Falle eines Scheiterns des Zeppelins nicht von Null anfangen und die Steuerung nur noch an einen fahrenden Roboter anpassen müssen. | Unser Plan ist, den Zeppelin per Bluetooth mit einem Computer oder einem Smartphone zu verbinden. Idealerweise sollte es sich so auch über Sprachsteuerung kontrollieren lassen (das Feature werden wir nur bei ausreichend Zeit hinzufügen). Dieser Teilschritt soll gleichzeitig mit dem Bau begonnen werden, damit wir im Falle eines Scheiterns des Zeppelins nicht von Null anfangen und die Steuerung nur noch an einen fahrenden Roboter anpassen müssen. | ||
- | Bei dem uns zur Verfügung stehenden Bluetooth-Modul handelt es sich um ein HC-05-Modul, welches via serieller Kommunikation Nachrichten austauschen kann. Wir haben es uns so vorgestellt, dass man auf dem Computer (mit Processing) einen Befehl eingibt, woraufhin über die Bluetooth-Verbindung Winkel und Motordaten an den am Zeppelin befestigten Arduino übertragen werden. Dieser leitet die Daten nun an den Motor, der den Propeller dreht, oder an den Servo weiter, der den Winkel der Steuerflossen einstellt. Der Arduino selbst soll also nur Daten vom Processing auf dem Computer empfangen und an Motor und Servos weiterleiten, sowie Sensordaten empfangen und dann den Computer senden; die Verarbeitung der Daten erfolgt durch Processing. Das hat den Vorteil, dass wenn Steuerung des Zeppelins und Datenübertragung funktionieren und wir komplexe Funktionen wie Licht folgen umsetzen, wir nicht mehr auf den Arduino Code zugreifen müssen. Um Winkel, Sensor- und Motordaten auseinander halten zu können, soll jeder Wert mit einem key vom Typ integer versehen werden, in der Form key:value[Zeilenumbruch], wobei der Zeilenumbruch das Ende des key-value-Pair anzeigt. | + | <imgcaption image5|>{{ :projektewise21:fliegenderroboter:zeppelin_schaltung.png?direct&500|Schaltplanskizze}} |
+ | </imgcaption> | ||
- | Sollten wir es zeitlich schaffen, die Sprachsteuerung umzusetzen, wird die Eingabe des Befehls auf dem Computer von einem verbalen Befehl ersetzt, der restliche Ablauf ist der selbe. | + | Bei dem uns zur Verfügung stehenden Bluetooth-Modul handelt es sich um ein HC-05-Modul, welches via serieller Kommunikation Nachrichten austauschen kann. Wir haben es uns so vorgestellt, dass man auf dem Computer (mit Processing) einen Befehl eingibt, woraufhin ein Prozess gestartet wird, bei welchem auf Grundlage der vom Arduino übermittelten Sensordaten, Berechnungen durchgeführt und über die Bluetooth-Verbindung Winkel und Motordaten an den am Zeppelin befestigten Arduino übertragen werden. Dieser leitet die Daten nun an den ESC/Motor, der den Propeller dreht und oder an die Servos weiter, die den Winkel der Steuerflossen einstellen. Der Arduino selbst soll also nur Daten vom Processing auf dem Computer empfangen und an Motor und Servos weiterleiten, sowie Sensordaten empfangen und dann den Computer senden; die Verarbeitung der Daten erfolgt durch Processing. Das hat den Vorteil, dass, wenn Steuerung des Zeppelins und Datenübertragung funktionieren und wir komplexe Funktionen wie //Licht folgen// umsetzen, wir nicht mehr auf den Arduino Code zugreifen müssen. |
+ | Um Winkel, Sensor- und Motordaten auseinander halten zu können, soll jeder Wert mit einem key vom Typ integer versehen werden und in der Form ''<key:value>[Zeilenumbruch]'' seriell übertragen werden, wobei der Zeilenumbruch das Ende eines key-value-Pairs anzeigt. | ||
- | Eine weitere Möglichkeit, die wir bei ausreichend Zeit umsetzen könnten, wäre das Erstellen einer App, die die Steuerung des Zeppelins auch über ein Smartphone ermöglicht. Will man diese App selbst umsetzen, kann eine Web-App entwickelt werden, in welcher das Smartphone über ein lokales WLAN-Netz, mit Processing gehostetem Webserver, mit dem Computer kommuniziert. Alternativ kann auch mit Processing eine App entwickelt werden, welche direkte Kommunikation über Bluetooth zwischen Smartphone und Roboter ermöglicht. Ebenfalls besteht die Möglichkeit, eine vorgefertigte App aus dem Google Play Store zu wählen, bspw. „Arduino Bluetooth“ von CircuitMagic oder „BT Voice Control für Arduino“ von SimpleLabsIN (bei letzterer ist die Sprachsteuerung bereits integriert). | + | Sollten wir es zeitlich schaffen, die Sprachsteuerung umzusetzen, kann die Eingabe des Befehls auf dem Computer von einem verbalen Befehl ersetzt werden, der restliche Ablauf ist der selbe. |
+ | |||
+ | Eine weitere Möglichkeit, die wir bei ausreichend Zeit umsetzen könnten, wäre das Erstellen einer App, die die Steuerung des Zeppelins auch über ein Smartphone ermöglicht. Will man diese App selbst umsetzen, kann eine Web-App entwickelt werden, in welcher das Smartphone über ein lokales WLAN-Netz, mit einem durch Processing lokal gehostetem Webserver, mit dem Computer kommuniziert. Alternativ kann auch mit Processing eine App entwickelt werden, welche direkte Kommunikation über Bluetooth zwischen Smartphone und Roboter ermöglicht. Ebenfalls besteht die Möglichkeit, eine vorgefertigte App aus dem Google Play Store zu wählen, bspw. „Arduino Bluetooth“ von CircuitMagic oder „BT Voice Control für Arduino“ von SimpleLabsIN (bei letzterer ist die Sprachsteuerung bereits integriert). | ||
Es besteht das Risiko, dass das Aufbauen der Verbindung nicht funktioniert, z.B. nicht schnell genug ist oder eine zu kurze Reichweite hat und wir benötigte Berechnungen nicht wie geplant auf dem Computer ausführen können. In dem Fall müssten wir diese auf den Arduino verlegen, bei welchem der Speicherplatz schnell knapp werden könnte. Beim eventuellen Umsetzen von Sprachbefehlen kommt außerdem hinzu, dass diese vielleicht nicht genau genug erfasst und korrekt verwertet werden können. | Es besteht das Risiko, dass das Aufbauen der Verbindung nicht funktioniert, z.B. nicht schnell genug ist oder eine zu kurze Reichweite hat und wir benötigte Berechnungen nicht wie geplant auf dem Computer ausführen können. In dem Fall müssten wir diese auf den Arduino verlegen, bei welchem der Speicherplatz schnell knapp werden könnte. Beim eventuellen Umsetzen von Sprachbefehlen kommt außerdem hinzu, dass diese vielleicht nicht genau genug erfasst und korrekt verwertet werden können. | ||
Zeile 99: | Zeile 101: | ||
* Computer/Smartphone (Processing IDE) | * Computer/Smartphone (Processing IDE) | ||
* Bluetooth-Modul (HC-05) | * Bluetooth-Modul (HC-05) | ||
+ | * 2,2 kOhm und 1,1 kOhm Widerstand für Spannungsteilerschaltung (für HC-05) | ||
* Library für die Sprachbefehle (optional) | * Library für die Sprachbefehle (optional) | ||
* Mikrophon (evtl. das in den Computer integrierte) | * Mikrophon (evtl. das in den Computer integrierte) | ||
Zeile 105: | Zeile 108: | ||
=== 2.2 Steuerung (automatisch) === | === 2.2 Steuerung (automatisch) === | ||
- | Wenn der Zeppelin nicht gerade manuell über die entsprechenden Befehle gesteuert wird, soll er dennoch nicht mit Wänden oder Gegenständen kollidieren. Um dies zu verhindern, wollen wir zwei Ultraschallsensoren auf beiden Seiten der vorderen Spitze anbringen und mit dem Arduino verbinden. Dieser soll die empfangenen Daten über Bluetooth an den Computer weiterleiten. Stellt Processing fest, dass sich der Zeppelin auf einen bestimmten Abstand einem Objekt genähert hat, soll ein Signal zurück an den Arduino gesendet werden, der ein Ausweichmanöver einleitet. | + | Wenn der Zeppelin nicht gerade manuell über die entsprechenden Befehle gesteuert wird, soll er dennoch nicht mit Wänden oder Gegenständen kollidieren. Um dies zu verhindern, wollen wir zwei Ultraschallsensoren auf beiden Seiten der vorderen Spitze anbringen und mit dem Arduino verbinden. Dieser soll die empfangenen Daten über Bluetooth an den Computer weiterleiten. Stellt Processing fest, dass sich der Zeppelin auf einen bestimmten Abstand einem Objekt genähert hat, wird ein Ausweichmanöver berechnet, Daten an den Arduino gesendet und der Effekt des Manövers mit eingehenden Sensordaten evaluiert. |
Wie groß dieser Mindestabstand sein muss, muss noch durch Berechnung der Geschwindigkeit, der Lenkkurve und durch Probieren herausgefunden werden. Die Geschwindigkeit können wir noch nicht genau bestimmen, da sie sehr von Motor, Propeller, Luftwiderstand und endgültigem Gewicht des Ballons abhängt. Die Lenkkurve basiert auf der Geschwindigkeit und kann damit auch noch nicht festgelegt werden. Es besteht die Möglichkeit, einen Beschleunigungssensor einzubauen, sollten wir sonst Schwierigkeiten haben, die momentane Geschwindigkeit und damit die nötigen Einstellungen für Motor und Servos für die gewünschte Ausweichbewegung zu errechnen. | Wie groß dieser Mindestabstand sein muss, muss noch durch Berechnung der Geschwindigkeit, der Lenkkurve und durch Probieren herausgefunden werden. Die Geschwindigkeit können wir noch nicht genau bestimmen, da sie sehr von Motor, Propeller, Luftwiderstand und endgültigem Gewicht des Ballons abhängt. Die Lenkkurve basiert auf der Geschwindigkeit und kann damit auch noch nicht festgelegt werden. Es besteht die Möglichkeit, einen Beschleunigungssensor einzubauen, sollten wir sonst Schwierigkeiten haben, die momentane Geschwindigkeit und damit die nötigen Einstellungen für Motor und Servos für die gewünschte Ausweichbewegung zu errechnen. | ||
Zeile 117: | Zeile 120: | ||
=== 2.3 Steuerung (mechanisch) === | === 2.3 Steuerung (mechanisch) === | ||
- | Ist die gewünschte Flugrichtung dank Bluetooth-Signal oder Kollisionsdetektor bekannt, muss der Arduino ein Signal an den Motor geben, welcher wiederum den Propeller dreht und den Zeppelin dadurch vorwärts fliegen lässt. Soll gelenkt werden, ist dies anders als bei einem fahrenden Roboter, denn ein Zeppelin kann nicht auf der Stelle wenden. Stattdessen muss der Servo die Position der vertikalen Steuerflosse während einer Vorwärtsbewegung verändern, damit eine Kurve geflogen werden kann. Da es sich um einen fliegenden Roboter handelt, kann dieser sich außerdem im dreidimensionalen Raum bewegen, was es auch ermöglicht, mit Hilfe zweier weiterer, horizontaler Flossen nach oben und unten zu steuern. Auch muss beachtet werden, dass es keine Bremse gibt und der Zeppelin nicht sofort stehen bleibt, wenn der Propeller aufhört sich zu drehen. Diese Verzögerung sollte gemessen werden und dann eingerechnet, wenn es darum geht den Code zu schreiben, der eine Kollision mit Gegenständen verhindern soll. | + | <imgcaption image4|>{{ :projektewise21:fliegenderroboter:3d-modell_finnen.png?direct&500|3D-Modell des Zeppelin (Finnen)}}</imgcaption> |
+ | |||
+ | Ist die gewünschte Flugrichtung dank Bluetooth-Signal oder Kollisionsdetektor bekannt, muss der Arduino ein Signal an den ESC/Motor geben, welcher wiederum den Propeller dreht und den Zeppelin dadurch vorwärts fliegen lässt. Soll gelenkt werden, ist dies anders als bei einem fahrenden Roboter, denn ein Zeppelin kann nicht auf der Stelle wenden. Stattdessen muss der Servo die Position der vertikalen Steuerflosse während einer Vorwärtsbewegung verändern, damit eine Kurve geflogen werden kann. Da es sich um einen fliegenden Roboter handelt, kann dieser sich außerdem im dreidimensionalen Raum bewegen, was es auch ermöglicht, mit Hilfe zweier weiterer, horizontaler Flossen nach oben und unten zu steuern. Auch muss beachtet werden, dass es keine Bremse gibt und der Zeppelin nicht sofort stehen bleibt, wenn der Propeller aufhört sich zu drehen. Diese Verzögerung sollte gemessen werden und dann eingerechnet, wenn es darum geht den Code zu schreiben, der eine Kollision mit Gegenständen verhindern soll. | ||
Zeile 155: | Zeile 160: | ||
==== 5. Gantt-Diagramm ==== | ==== 5. Gantt-Diagramm ==== | ||
+ | <imgcaption image6|> | ||
+ | {{ :projektewise21:fliegenderroboter:gant-planung.png |Gant-Planung}}</imgcaption> | ||
- | {{ :projektewise21:fliegenderroboter:gant_planung.png |}} | ||
<note important> | <note important> | ||
- | Dieses Diagramm sieht nicht schlecht aus, aber verstehe ich richtig, dass ein wesentlicher Teil abgeschnitten ist? Bitte über "vergrößern / zoom in" / "verkleinern" - Knöpfe den vollen Umfang exportieren. | + | Sehr gute, durchdachte Projektplanung mit anschaulichen Abbildungen. Ihr habt meine Anmerkungen berücksichtigt. 10 Punkte von 10. |
</note> | </note> | ||
- | |||
- | |||