Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektewise21:fliegenderroboter:start

Zeppelin

Projektplanung

Unsere Projektdokumentation befindet sich hier.

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 unterscheiden kann.

2. Ziele und Prioritäten

Unser Roboter muss können:

  • Aufbau einer funktionierenden Bluetooth-Verbindung zu einem im Netzwerk befindlichen Endgerät (Laptop/Handy etc.) und beidseitige Kommunikation
  • Echtzeit Steuerung durch Computer („Gehirn“ des Roboters)
  • Kurskollisionsdetektion und Ausweichmanöver
  • Umstellung auf manuelle Steuerung

Unser Roboter sollte können:

  • Fliegen
  • selbstständiges Erkennen von (IR-)Lichtquellen und Folgen selbiger

Das wäre nice to have:

  • Anweisungen per Sprachbefehl über Computer/Handy umsetzen
  • Orientierung innerhalb des Raums

Das lassen wir bewusst weg:

  • Ladestation finden, ansteuern, Verbindung herstellen und Akku laden
  • Bildverarbeitung zur 3D-Modellierung des Raums

3. Szenario-Skizze

Szenario-Skizze des Zeppelin-Roboters Abb. 1

4. Teilaufgaben und Arbeitspakete

0. Vorbereitung

Die Umsetzung eines fliegenden Roboters ist kompliziert und das Gelingen hängt von vielen Faktoren ab. Zuerst müssen wir berechnen, ob wir mit den benötigten Materialien innerhalb des Budgets liegen und zweitens, ob der Ballon des Zeppelins das Gewicht der benötigten Elektronik tragen kann. Passt einer dieser Aspekte nicht, müssen wir auf einen fahrenden Roboter umsteigen. Sind weder Preis noch Gewicht ein Problem, müssen die Bauteile bestellt und Werkzeuge sowie ein 3D-Drucker organisiert werden.

Das Risiko ist hier, dass die benötigten Materialien über dem Preisbudget liegen, oder insgesamt das Traggewicht des Zeppelins übersteigen könnten.

0.1 Planung

3D-Modell des Zeppelin (Totalansicht) Abb. 2

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 silent_runner zum Vorbild für die Konstruktion genommen. Von diesem unterscheidet sich unser Projekt nicht nur hinsichtlich der Sensorik und Steuerung (Abbildung 4), 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 (Abbildung 2) zu erstellen, um unsere eigenen Maße besser berechnen und entsprechende Bauteile 3d-drucken oder zuschneiden zu können.

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. Abbildung 2, Abbildung 3, Abbildung 5, Abbildung 4).

3D-Modell des Zeppelin (Motoraufhängung) Abb. 3

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.

Materialien:

  • Ballon (250cm Länge)
  • Ballonverschluss
  • Schrumpfschlauch
  • Helium
  • Motor
  • Servo 8g
  • Battery Plug
  • CFK Stäbe (4×40, 45, 2×20) = 245 → 3
  • CFK (2mm Durchmesser)
  • Depron 3,0x0,5m²
  • 10A ESC
  • Lipo 500mAh
  • Lipo 1000mAh
  • Lipo Charger
  • 4 Wire Cable
  • 5″ Propeller
  • Arduino Nano
  • evtl. Gewichte zum Austarieren

2.1 Steuerung (Bluetooth)

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.

Schaltplanskizze Abb. 4

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.

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.

Materialien:

  • Computer/Smartphone (Processing IDE)
  • 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)
  • Mikrophon (evtl. das in den Computer integrierte)

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, 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.

Es muss außerdem festgelegt werden, ob die automatische Steuerung zur Kollisionsvermeidung manuelle Befehle beim Unterschreiten des Mindestabstands zu einem Objekt überschreiben können soll, oder ob man der steuernden Person die Verantwortung überlässt, den Zeppelin nicht gegen eine Wand zu fliegen zu lassen.

Materialien:

  • Ultraschallsensoren

2.3 Steuerung (mechanisch)

3D-Modell des Zeppelin (Finnen) Abb. 5

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.

3. Licht folgen

Mit einem definierten Befehl, der auf dem Computer eingegeben und per Bluetooth an den Arduino übermittelt wird, soll ein Prozess gestartet werden, bei welchem der Zeppelin eine Lichtquelle erkennt und dieser folgt, bzw. ein Lichtsignal erkennt und darauf reagiert. Dafür sollen drei Phototransistoren (für rechts-links und oben-unten), ähnlich wie die Ultraschallsensoren, in einem Dreieck an der Spitze des Zeppelins angebracht werden. Wie es in einer der Hausaufgaben das Ziel war, messen die PT die Lichtintensität, und wenn diese auf einer Seite, bzw. oben oder unten, um einen bestimmten Wert größer ist, als in der anderen Richtung, soll der Zeppelin in diese Richtung fliegen. Dieser Prozess wird wiederholt, bis kein bedeutender Unterschied der Lichtintensität zwischen den PT mehr festgestellt wird.

Die Lichtsignale sollen, wenn wir Zeit haben dieses Feature umzusetzen, unterschieden werden durch den zeitlichen Abstand von Blinksignalen. Beim Überschreiten einer bestimmten Lichtintensität wird ein Timer gestartet, der bei einer zweiten Überschreitung gestoppt wird. Liegt die Anzahl der Sekunden, bzw. Millisekunden, in einem bestimmten Intervall, soll ein vorher für dieses Signal definierter Befehl ausgeführt werden. So könnte zum Beispiel bei einem Blinken mit ungefähr zwei Sekunden Abstand eine Flugfigur (mit vorher definiertem Bewegungsmuster) in der Luft ausgeführt werden.

Alternativ könnte das Erkennen von Lichtsignalen so ablaufen, dass die Daten der PT der letzten zehn Sekunden aufgezeichnet und in Processing auf Maxima, Minima oder bestimmte Muster untersucht werden. Dies könnte bei gelungener Umsetzung das Erkennen von komplexeren Signalen ermöglichen.

Materialien:

  • Phototransistoren
  • Widerstände (10k Ohm)

4. Orientierung im Raum (Optional)

Im Raum soll eine Kamera aufgestellt werden, mit deren Hilfe der Zeppelin (bzw. ein fahrender Roboter) sich innerhalb des Raumes orientieren kann.

Materialien:

  • Kamera

5. Plan B

Da bei einem fliegenden Roboter so viel schief gehen kann, was wahrscheinlich der Grund ist, wieso alle vorherigen Versuche einen zu bauen gescheitert sind, müssen wir uns auch schon jetzt über einen möglichen Plan B Gedanken machen. Damit wir nicht ganz von vorn beginnen müssen, sollte der Zeppelin scheitern, wollen wir in dem Fall Funktionen wie die Steuerung über Bluetooth, Kollisionsvermeidung und Licht folgen, bzw. auf Lichtsignale reagieren, auf einen fahrenden Roboter übertragen. Um diesen etwas außergewöhnlicher zu machen, könnte man auch darüber nachdenken, sich als Ziel zu setzen diesen auf jeden Fall per App steuern zu können oder andere Funktionen hinzuzufügen.

Für den Bau wären andere Materialien für das Grundgerüst erforderlich, diese sollten allerdings zumindest zum Großteil bereits im Labor vorhanden sein und keine weiteren Lieferzeiten benötigen. Teile wie den Arduino, das Bluetooth-Modul oder die Phototransistoren (in dem Fall aber nur 2, weil die zweite Dimension nicht zugänglich ist) könnten übernommen werden. Der Code soll in Funktionen, bzw. Methode aufgeteilt sein, sodass wenn sich die Fortbewegung des Roboters ändert (von fliegend zu fahrend), lediglich die Funktionen zuständig für Bewegung und Drehen verändert werden müssen, nicht jedoch die anderen Teile des Codes. Z.B. würden statt den Steuerflossen des Zeppelins die Schrittmotoren vom Arduino angesteuert werden.

Materialien:

  • Schrittmotoren
  • Räder
  • „Körper“, auf welchem die Elektronik befestigt wird
  • evtl. weiterer Ultraschallsensor zum Rückwärtsfahren

5. Gantt-Diagramm

Gant-Planung Abb. 6

Sehr gute, durchdachte Projektplanung mit anschaulichen Abbildungen. Ihr habt meine Anmerkungen berücksichtigt. 10 Punkte von 10.

projektewise21/fliegenderroboter/start.txt · Zuletzt geändert: 2022/03/17 14:45 von JelenaM