190 likes | 492 Views
Asuro. von Patrick Deuster Nicole Meuser Alexander Piel. GLIEDERUNG. Tools Schnittstelle Regelung Demo Part 1 Zeichnung der Strecke Zeichenalgorithmus Schwierigkeiten Demo Part 2 Ausblick. TOOLS. Flash-Tool Verwendet um Programm auf Asuro zu flashen. Programmers Notepad 2
E N D
Asuro von Patrick Deuster Nicole Meuser Alexander Piel
GLIEDERUNG Tools Schnittstelle Regelung Demo Part 1 Zeichnung der Strecke Zeichenalgorithmus Schwierigkeiten Demo Part 2 Ausblick
TOOLS • Flash-Tool • Verwendet um Programm auf Asuro zu flashen • Programmers Notepad 2 • zur Entwicklung des Asuro - Programms verwendet • Asuro Programm in C geschrieben • mit speziellen Sonderfunktionen • Ruby, Gtk2, Serial Port Extension • für das Aufzeichnen der Linie auf dem PC verwendet
SCHNITTSTELLE • Infrarot RS232 - Transceiver • serielle Schnittstelle • für USB auch vorhanden • verwendet für: • Flashen des Programms auf den Asuro • Senden der Daten für Lineinzeichnung an den PC • zunächst viele CRC und Timeout Fehler • in Version 1.5.1 des Flash - Tools behoben
06/17/07 REGELUNG - FUNKTIONSWEISE • Kurvenfahrt: • Annahme: linker Sensor erreicht dunkle Linie • Folge: • linkes Rad wird abgebremst • um festgesetzten delta - Wert dekrementiert • rechtes Rad wird auf MAX_SPEED gesetzt • Unterscheidung zwischen drei Zuständen: • Gerausfahrt • Linkskurve • Rechtskurve • Dreipunktregler
06/17/07 REGELUNG - PSEUDOCODE #define BREMS_DELTA 25 // um wieviel er abbremst #define GERADEAUS_DELTA 20 // welcher Wert geradeaus entspricht LineData(); // Wert der Fototransistoren auslesen if ((photoLinks – photoRechts) < GERADEAUS_DELTA) { speedLinks = speedRechts = 150;// fahre geradeaus } else if (photoLinks > photoRechts) { speedRechts -= BREMS_DELTA; // rechts langsamer fahren speed Links = MAX; } else { speedLinks -= BREMS_DELTA; // links langsamer fahren speedRechts = MAX; }
06/17/07 STRECKENZEICHNUNG • Unser hochgestecktes Ziel: • Daten während dem Regelprozess an den PC senden • PC soll die Strecke in Echtzeit nachzeichnen • Zwei verschiedene Verfahren zur Auswahl: • Zeichnen mit Odometrie - Daten • Zeichnen mit Werten der Motoransteuerung
STRECKENZEICHNUNG - ODOMETRIE • 12 SW - Übergänge • 5 Scheibenumdrehungen = 1 Radumdrehung • 60 SW - Übergänge = 1 Radumdrehung • Problem: • extrem ungenaue Odometriedaten • Scheiben nicht fest aufgeklebt • Von Lichtverhältnissen abhängig • Schlechte Odometriesensoren • nicht brauchbar
06/17/07 STRECKENZEICHNUNG - MOTORWERTE • MotorSpeed(int leftSpeed, int rightSpeed) • leftSpeed und rightSpeed im Bereich 0..255 • Werte von leftSpeed und rightSpeed an PC senden • diese dann auswerten • zuverlässigeres Verfahren • keine Ungenauigkeiten wie bei der Odometrie • von äußeren Einflüssen (z.B. Licht) unabhängig • weniger Rechenaufwand für CPU des Asuro
STRECKENZEICHNUNG - MOTORWERTE (2) • leftSpeed, rightSpeed und timestamp an PC schicken • im Format leftSpeed:rightSpeed:timestamp • timestamp zum Ermitteln, wie weit Asuro seit dem letzten Senden gekommen ist • Daten werden auseinander geparst • komplette Rechenarbeit findet auf dem Rechner statt
06/17/07 ZEICHENALGORITHMUS ausrichtung = 0 position = Vektor 0, 0 start_zeit = 0 /* Geschwindigkeitsdifferenz gibt Winkel an! * 150 = 90° (PI/2) bis 0 = 0° */ alpha = (v_rechts - v_links) * (PI / 300) /* Asuro darf nicht von 0° auf 90° springen, * er braucht dafür Zeit! */aplha_mit_zeit = (alpha/0.7) * ((zeit-start_zeit)/1000)
06/17/07 ZEICHENALGORITHMUS (2) /* Ausrichtung aktualisieren und Zeit merken */ausrichtung += alpha_mit_zeitstart_zeit = zeit /* Geschwindigkeitsvektor erstellen */geschwindigkeit = Vektor (v_links + v_rechts) / 2 , 0 /* Geschwindigkeitsvektor um Ausrichtung rotieren * und auf Position addieren */position += geschwindigkeit.rotate(ausrichtung)
SCHWIERIGKEITEN • Zeichnung in Echtzeit beeinflusst Regelung • Asuro darf Werte nicht zu oft an PC senden • alle 100ms senden • Odometriedaten ungenau • Motorwerte verwenden
Ausblick Algorithmen weiter verbessern Odometriedaten so korrigieren, dass sie benutzbar werden Weiße Linie auf dunklem Hintergrund rGrapher Hinzufügen von Bildern zu Replays Hinzufügen von sonstigen Daten zu Replays Aktuelle Werte ausgeben Dem Asuro das Fliegen beibringen