/wro-2022_23

Repository für die WRO-Saison 2022/23

Primary LanguageMakefileGNU General Public License v3.0GPL-3.0

wro-2022_23

Repository für die WRO-Saison 2022/23 Dokumentation Im folgenden Text haben wir unsere Umsetzung des Projekts niedergeschrieben.

Antrieb Für die Beschleunigung nach vorne nutzen wir einen Lego XL-Motor Dieser Motor wird mit 12V von dem Step-Up Converter versorgt. Die Drehbewegung des Motors führen wir in ein Differenzialgetriebe, welches auf unserer Motorwelle liegt. Das Fahrzeug besitzt einen Hinterrad-Antrieb, dagegen lenkt es Allrad.

Lenkung Die Lenkung besteht aus dem Lego Servomotor welcher mit seine Drehbewegung die gesamte fordere Radaufhängung bewegt. Über eine weitere Welle wird die Bewegung nach hinten Transportiert so dass die hintere Achse ebenfalls einlenkt. Fahrzeug-Chassis Das Fahrzeuggerüst besteht komplett aus Lego Teilen, genauso wie Räder und Getriebeteile. Teilweise wurden für spezifische Teile eigene 3D-Drucke angefertigt z.B für die Aufhängung des LIDAR oder des Farbsensors. Eine Karosserie besitzt unser Fahrzeug bis jetzt nicht. Die Befestigung von Nicht-Lego Teilen wie dem Arduino Mega wurde momentan mit Gummi-Bändern, Kabelbindern und 3D-Druckteilen gelöst.

Stromversorgung Die Stromversorgung für das gesamte Fahrzeug besteht aus einer Power Bank. Sie gibt 5V über USB-Outputs ab, bei einer maximalen Belastung von 3 Ampere. Sie hat eine Kapazität von 10000mAh. Im Fahrzeug benötigen wir zwei Spannungsebenen. Einmal 5V mit denen wir die Arduinos zusammen mit ihren Sensoren betreiben, ebenfalls werden die LEDs in der Front mit den 5V (welche mit Widerständen auf 2,9V herunter gesetzt worden) versorgt. Die zweite Spannungsebene die wir benötigen sind 12V welche von dem obengenannten Step-Up
Converter bereitgestellt wird. Diese gehen in den Motortreiber der schließlich den Motor und Servo betreibt. Die 5V werden über eine kleine Platine auf verschieden USB-Varianten verteilt, die zu den einzelnen Komponenten gehen.

Sensorik Der LIDAR Sensor wird genutzt um unsere Position im Verhältnis zu den Fahrbahnbegrenzungen zu ermitteln. Sowie ob wir gegen Wände, frontal oder schräg, zu stoßen drohen. Dazu nehmen wir 7 Messwerte aus 7 verschiedenen Winkeln auf. Zwei Winkel werden Links und Rechts des Fahrzeuges aufgenommen und dienen der Spurhaltung, die restlichen Fünf sind zur Annäherungswarnung eingesetzt. Die Pixy 2.1 benutzen wir um die Farbe, Größe in Pixeln und Position der Gegenstände zu ermitteln, die umfahren werden sollen. Aus der Farbe entnehmen wir die zu umfahrende Lenkrichtung, aus der Größe ermittelt der Roboter die nähe zum Objekt um somit zu entscheiden wann es mit einlenken beginnt.
Mit der Position des Objektes lässt sich der nötige Lenkeinschlag ermitteln um das Objekt effektiv zu umfahren. Zuletzt benutzen wir noch den Farbsensor. Der Farbsensor ermittelt die Farbe der Oberfläche unter ihm. Er misst die Rot, Grün und Blau Anteile aus der Aufnahme heraus und kann somit die Orangenen und Blauen Linien auf dem Boden voneinander Unterscheiden. Wir zählen die Linien auf dem Boden und geben dem Arduino einen Stopp Befehl wenn diese zwölf erreichen.

Der Code vom Mega Zeile 0 bis Zeile 32: Definierung aller Variablen, sowie I/O Pins Zeile 35 bis Zeile 52: Initiieren aller I/O Pins mit der gewünschten Funktion sowie Festlegung der Baudrate für den LIDAR Sensor Zeile 55 bis Zeile 55: Messung der Abstände mit dem LIDAR, Funktion Zeile: 200-266 Zeile 64 bis Zeile 65: Erhalten von möglichen Objektdaten über Rote oder Grüne Objekte vom Arduino Nano, Funktion Zeile: 165-199 Zeile 66 bis Zeile 67: Geradeausfahren Zeile 79 bis Zeile 114:Case 0 Normales Fahren mit Spurhalten, und Automatischen Regulieren der Position abhängig von den Fahrbahnbegrenzungen Zeile 115 bis Zeile 126: Case 1, Rotes Objekt wurde erkannt, jetzt wird das umfahren des Objektes durchgeführt Zeile 127 bis Zeile 138: Grünes Objekt wurde erkannt, das umfahren des Objektes wird durchgeführt Zeile 139 bis Zeile 142: Case 3, der Farbsensor Arduino gibt den Befehl für das Stoppen der Motoren was dann ausgeführt wird. Zeile 145 bis 266: Definieren der einzelnen Funktionen bis 148: Funktion für das links Lenken bis 153: Funktion für das rechts Lenken bis 158: Funktion für das Geradeausfahren bis 164: Funktion für den Motor bis 181: Funktion für das ausweichen von Grünen Gegenständen bis 199: Funktion für das ausweichen von Roten Gegenständen bis 205: Initiieren des LIDAR Sensors bis 250: Messen der Werte bei 90°, 105°, 120°, 180°, 240°, 255° und 270° . bis 266: bei versagen erneut scannen nach Verbindung zum LIDAR

Code für den Nano verantwortlich für die Pixy Zeile 0 bis 9: Definieren der Variablen für Fläche und Importieren der Pixy Bibliothek Zeile 21 bis 27: Definierung der I/O Pins und Initiieren der Pixy Zeile 40 bis 55: Berechnung des Lenkwertes anhand der Größe und X-Achse der Gegenstände, für jeweils Grün und Rot Zeile 60 bis 65: Ausgabe der Werte auf den Seriellen Monitor Zeile 65 bis 110: Entscheidung anhand der Werte welcher Lenkeinschlag gewählt werden soll

Code für den Farbsensor Arduino Zeile 0 bis 14: Einbinden von der Farbsensor und LCD Bibliothek sowie das definieren von wenigen Variablen und DI Zeile 15 bis 29: initialisieren des LCD sowie der Digitalen Ausgänge für den Sensor Zeile 29 bis 42: Messen der Farbe Zeile 42 bis 63: Unterscheidung zwischen Blau und Orange Zeile 64 bis 95: Stopp Befehl an den Mega Videos für die Dokumentation: https://www.youtube.com/watch?v=TLISy-KuzOg https://www.youtube.com/watch?v=UPXMmqQ8Z00