Kurven fahren

Legen Sie ein neues Projekt an. z.B. mit dem Namen kurvenfahren.

Kopieren Sie den Code, den Sie für das Geradeausfahren geschrieben haben, ins neue Projekt

Die Parameter raddurchmesser und radabstand reichen aus, um mit dem Roboter navigieren zu können.

Berechnen Sie die Konstante gradProCM aus dem Parameter raddurchmesser und fügen Sie die entsprechende Code-Zeilen in Ihrem Programm ein.

Erste Messung, Überprüfen, Korrekturfaktor errechnen, dann anpassen.

  • Messen Sie den Radabstand in cm mit dem Geo-Dreieck oder Lineal
  • Definieren Sie damit die Variable radAbstand.
  • Ihr Programm soll daraus eine weitere Variable gradProDrehwinkel berechnen, die angibt, um wieviele Grad sich ein Rad um sich selbst drehen muss, damit sich der Roboter um 1° um die vertikale Achse dreht.
  • Schreiben Sie mit den obigen Variablen ein Programm, so dass nur das rechte Rad dreht. Der Roboter soll eine volle 360° Drehung machen.
  • Messen Sie, um wie viele Grad sich der Roboter zu weit oder zu wenig weit gedreht hat. Berechnen Sie draus einen korrigierten Radbastand und tragen Sie diesen im Programm ein.
  • Testen nochmals.

Ziel: Eine Funktion, mit der Kurven von beliebigen Kurvenradien und Winkeln gefahren werden können.

# Fahre eine Kurve mit Radius radius (in cm), 
# Kurven-Winkel winkel
# linkskurve ist True, wenn eine Linkskurve gefahren werden soll, sonst False
# und Geschwindigkeit v (in cm/s), wobei sich die Geschwindigkeit auf den Mittelpunkt des Roboters bezieht.
def kurve(radius, winkel, linkskurve, v):  
  # Berechnen Sie folgende Grössen:
  speedAussen = ....   # Geschwindigkeit in cm/s für das äussere Rad
  speedInnen = ....    # Geschwindigkeit in cm/s für das innere Rad
  streckeAussen = .... # Strecke in cm des Äusseren Rads
 
  s = 0
  # Korrekte Motoren starten:
  if linkskurve:
     rechts.run(....)
     links.run(....)
  else:
     rechts.run(....)
     links.run(....)
  # Warten bis Strecke zurückgelegt
  while s<streckeAussen:
     if linksurve:
        s = ....       # Zurückgelegte strecke vom Aussenrad
     else:
        s = ....
  rechts.stop()
  links.stop()
 
 
# Funktion testen:
kurve(50, 90, True, 20)  # Radius 50cm, 90-Grad Kurve, Linkskurve, 20 cm/s Geschwindigkeit
kurve(10, 90, False, 20) # Radius 10cm, 90-Grad Kurve, Rechtskurve, 20 cm/s

Challenge

Parcours:

  • Startposition: Der rechte Helligkeitssensor liegt über dem Startpunkt. Die Ausrichtung vom Roboter darf frei gewählt werden.
  • Der Roboter macht einen Pieps, bevor die Motoren sich bewegen. Ab diesem Zeitpunkt wird die Zeit gemessen.
  • Der Roboter muss einen fünffüssigen Stuhl umrunden, dessen Zentrum sich 1m vom Startpunkt entfernt befindet.
  • Der Roboter hält wieder mit dem rechten Helligkeitssensor über dem Startpunkt.
  • Der Roboter macht einen Pieps. Die Zeit wird gestoppt.

Wertung:

  • $t+2d$, wobei $t$ die Zeit in Sekunden und $d$ die Distanz in cm vom Startpunkt sind.
  • lehrkraefte/blc/informatik/glf25/robotik/kurvenfahren.txt
  • Last modified: 2025/11/24 14:45
  • by Ivo Blöchliger