160 likes | 263 Views
Praktikum Mobile Roboter. Abschlusswettbewerb Gruppe 5 Enrico Billich Jörn Weirauch. Die Arena. Probleme. Bojen erkennen und betätigen Befahrene Orte im Labyrinth abspeichern und effektiven Weg durch den Irrgarten finden Kollision mit Gegner erkennen und ihm ausweichen
E N D
Praktikum Mobile Roboter Abschlusswettbewerb Gruppe 5 Enrico Billich Jörn Weirauch
Probleme • Bojen erkennen und betätigen • Befahrene Orte im Labyrinth abspeichern und effektiven Weg durch den Irrgarten finden • Kollision mit Gegner erkennen und ihm ausweichen • eventuelle Fehler und Niederlagen auf Hardware oder das Pech schieben
Bojenerkennung • Im Feld vor der Boje diese erkennen • Nach der schwarzen Linie noch 85mm fahren für optimale Position zur Betätigung
Bojenbetätigung • Falls Boje bekannt, zu erst gespeicherte Seite anfahren • Wenn Boje unbekannt oder erster Punkt kein Erfolg gebracht, dann alle Seiten nacheinander probieren, bis Boje richtige Farbe oder alle Möglichkeiten versucht
Abbruchbedingungen für Drehung Bumper Bojensignal hat sich geändert Nicht mehr als 90° links/rechts Nach vorne nur bis Linie
Navigation • Vorgabe: Labyrinth spiegelsymetrisch -> kennt man die eine hälfte ist ein effizientes abfahren der anderen Hälfte möglich -> Pfadplanung • Problem: - Kollisionen mit anderen Roboter machen Karte ungültig -> Aufwand für die Implementierung eines Pfadplan-Algorithmus evtl. für die Katz - Kartensystem seit erstem Zwischenwettbewerb fertig und nicht auf Spiegelsymetrie ausgelegt
Navigation • Anderer Ansatz: „Strichliste“ • Um nicht ganz auf die Karte zu verzichten und eine intelligente Abbiegestrategie zu gewährleisten, -> inkrementieren eines Zählers für jedes Feld auf dem der Roboter gewesen ist • An Abzweigungen auswahl des Feldes mit dem geringeren Zählerstand, bzw. bei gleichem Stand einer Vorzugsrichtung • Vorteil: wenn Karte ungültig, funktioniert das System trotzdem auch ohne reseten der Karte, erst ab einer gewissen Anzahl an Positionsfehlern löschen der Karte nötig.
Die Karte (0,0) (0,7) • 8x8 Array 8 Zeilen 8 Spalten-> [y,x] Adressierung • 3 Byte pro Feld-> Feldtyp-> Boje-> Score (7,0) (7,7)
Norden Rechts Links Westen Osten Vorne Süden Probleme & Lösungen • Relative Position und Richtung des Roboters zur Karte Lösung: 2 Umgebungssysteme die ineinander umrechenbar sind. Roboterkoordinaten-system Kartenkoordinaten-system Blickrichtung: Süden Position:X,Y
Erstellen und Lesen der Karte • Karte hat nur ein Byte zum speichern der Wandinformationen-> unkomfortabel in der Programmierung-> Funktionen zum einfachen Codieren und Decodieren der Karte unsigned byte encodeSpielfeld(struct wall wand)struct wall decodeSpielfeld(unsigned byte typ) Bsp.: getfield=wall2head(decodeSpielfeld[y,x].typ); if(getfield.front==WALL) umdrehen(); …
Verschieben der Karte • Ist der Roboter am Rand der Karte, jedoch das Spielfeld ist nicht am Rand (Roboter ist nicht in einer Ecke gestartet) muss die Karte evtl. verschoben werden.
Verschieben der Karte • Lösung: • 4 Funktionen zum verschieben der Karte in alle Richtungen und1 zusätzliche Funktion zum aktualisieren der Position mit Überprüfung auf Richtigkeit und evtl. verschieben der Karte • Entwickler nutzt nur noch diese Funktion um den Roboter in der Karte zu bewegen einzig anzugebender Parameter ist die Fahrtrichtung
Gegner erkennen Gegner als Sackgasse erkannt (30 bis 50% der Fälle) Wenn Bumper nicht auslöst Durchdrehende Räder Innerhalb eines Feldes 5 Mal kollidiert Wenn 50cm innerhalb eines Feldes zurückgelegt, Durchdrehende Räder erkannt