Ziel ist es, den Roboter so zu programmieren, dass er der äusseren, dicken Linie auf der Plane einmal links herum auf der Aussenkurve folgen kann (ohne Abkürzungen). Fastest wins
Pseudo-Code
Übersetzen Sie dann obigen Pseudocode in Python und Testen Sie den Roboter. Eine Endlosschleife kann wie folgt programmier werden:
while True: hell = licht.reflection() # fahrwerk.drive(Geschwindigkeit vorwärts in mm/s, Drehgeschwindigkeit in Grad/s) if hell<40: # Wert anpassen fahrwerk.drive(100,20) elif hell>60: # Wert anpassen! fahrwerk.drive(100,-20) else: fahrwerk.drive(100,0)
Das Programm kann dann entweder über den Computer oder durch Drücken der Escape-Taste auf dem Roboter (Taste oben links) gestoppt werden.
Mit der Variante 1 wackelt der Roboter, weil immer entweder eine Links- oder Rechtskurve gefahren wird.
Mit der Variante 2 fährt der Roboter in einer Kurve immer neben der Kante zwischen weiss und schwarz (sonst würde er ja keine Kurve fahren). Idealerweise sollte der Roboter auch in Kurven genau auf der Kante fahren. Das kann mit folgender Idee realisiert werden:
Programmieren Sie die Variante 3.
i=0
und eine Variable ci=0.1
(Wert durch Experimentieren bestimmen).i
hinzu undci*i
der aktuellen Helligkeitsdifferenz dazu, bevor Sie damit die Geschwindigkeiten berechnen.Die letzte Idee ist folgende:
letzer = 50
(oder welcher Wert auch immer der Kante entspricht) und eine Variable cd=0.1
(Vorzeichen und geeigneter Wert durch überlegen und Experimentieren bestimmen).d
zwischen aktuellem und dem letzten Wert letzter
.cd * d
zur aktuellen Helligkeitsdifferenz hinzu, bevor Sie damit die Geschwindigkeiten berechnen.