Table of Contents

Line Follower

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 ;-)

Grundideen

Variante 1

Pseudo-Code

  • Wiederhole:
    • Meldet der Sensor zu hell, fahre eine Linkskurve
    • Meldet der Sensor zu dunkel, fahre eine Rechtskurve

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

  • Experimentieren Sie mit verschiedenen Fahr- und Drehgeschwindigkeiten. Stellen Sie die so ein, dass der Roboter den Parcours fahren kann (links herum, Aussenkurve).

Variante 2: Fahren statt wackeln

Mit der Variante 1 wackelt der Roboter, weil immer entweder eine Links- oder Rechtskurve gefahren wird.

  • Programmieren Sie die Variante 2.
  • Bestimmen Sie eine geeignete Funktion, die aus der Helligkeitsdifferenz die Drehgeschwindigkeit berechnet (und evtl. eine Funktion für die Fahrgeschwindigkeit)

Variante 3: Kurve ermitteln

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.

  • Dazu initialisieren Sie vor der while-Schleife eine Variable i=0 und eine Variable ci=0.1 (Wert durch Experimentieren bestimmen).
  • In der while-Schleife
    • zählen Sie die aktuelle Hellikeitsdifferenz zu i hinzu und
    • zählen Sie ci*i der aktuellen Helligkeitsdifferenz dazu, bevor Sie damit die Geschwindigkeiten berechnen.

Variante 4

Die letzte Idee ist folgende:

  • Initialisieren Sie vor der while-Schleife eine Variable 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).
  • In der while Schleife
    • Bestimmen Sie die Differenz d zwischen aktuellem und dem letzten Wert letzter.
    • Addieren Sie cd * d zur aktuellen Helligkeitsdifferenz hinzu, bevor Sie damit die Geschwindigkeiten berechnen.