Fügen Sie dann am Ende des Programms folgende Zeilen hinzu, um die Motoren zu initialisieren:
links = Motor(Port.A) # Kontrollieren Sie, ob die Motoren auch an den richtigen Ports angeschlossen sind. rechts = Motor(Port.B)
Fügen Sie dann weiter folgendes, unfertiges Programm hinzu und passen Sie es mit den korrekten Werten und Formeln an:
from math import pi # Wert pi importieren # Variablen für den Roboter raddurchmesser = 5 # Phantasiewert! Bitte ersetzen radumfang = 23 # Hier Formel mit pi einsetzen grad_pro_cm = 42.0 # Phantasiewert, bitte anpassen, am besten direkt aus dem Radumfang berechnen. cm_pro_grad = 1.0/grad_pro_cm radabstand = 20 # Phantasiewert, Abstand in cm drehung_pro_grad = 4 # um wieviele Grad dreht sich der Roboter, wenn sich ein Rad um ein Grad dreht. aufgabe = 1 if aufgabe==1: distanz = 10 # 10 cm soll der Roboter fahren links.run_angle(120, distanz*grad_pro_cm, wait=False) # 120 Grad/s Drehgeschwindigkeit, Drehwinkel, nicht warten, sondern gleich den nächsten Befehl. rechts.run_angle(120, distanz*grad_pro_cm, wait=True) # Dito, aber warten, bis fertig gedreht. elif aufgabe==2: drehwinkel = 360 radwinkel = 42 # Formel, um aus dem drehwinkel und der Konstante grad_pro_grad den Winkel zu berechnen, um den sich das linke Rad drehen muss. links.run_angle(120, radwinkel, wait=True) links.stop() rechts.stop()
radabstand in ihrem Code hinzu.radabstand und radumfang eine Variable drehung_pro_grad, die angibt, um wie viele Grad sich der Roboter um die eigene Achse dreht, pro Grad Radumdrehung eines Rads (wenn das andere stillsteht).drehwinkel die Variable radwinkel, die angibt, um wie viele Grad sich das linke Rad drehen muss (während das rechte stillsteht), damit sich der Roboter um genau drehwinkel dreht.aufgabe auf 2 und testen Sie. Passen Sie den radabstand so an, dass die Drehung möglichst genau 360° beträgt.
Ziel ist es, eine Funktion linkskurve(r, winkel, v) zu schreiben, die den Roboter veranlasst eine Linkskurve um winkel Grad mit Geschwindigkeit v zu fahren, wobei die Mitte des Roboters sich auf einem Kreis mit Radius r (in cm) bewegen soll. Dabei sollen die definierten Variablen radumfang, grad_pro_cm, radabstand, etc verwendet werden.
def linkskurve(r, winkel, v): wegmitte = 42 # Distanz für Robotermitte aus r und winkel ausrechnen zeit = 42 # zeit, die mit der Geschwindigkeit v für die Streck wegmitte benötigt wird wegrechts = 42 # Distanz ausrechnen, die das rechte Rad zurücklegen muss: Formel aus winkel, r und radabstand weglinks = 42 # linkes rad winkelrechts = 42 # wegrechts in Drehwinkel für das rechte Rad umrechnen winkellinks = 42 # Winkel für linkes Rad vrechts = 42 # Winkelgeschwindigkeit für linkes Rad ausrechnen (aus zeit und winkelrechts) vlinks = 42 # dasselbe für links # Und jetzt fahren! links.run_angle(vlinks, winkellinks, wait=False) rechts.run_angle(vrechts, winkelrechts, wait=True) # Test: Roboter sollte 180 Grad auf einem Kreis mit Radius 25cm fahren, mit einer Radgeschwindigkeit von durchschnittlich 200 Grad/s linkskurve(25, 180, 200)
Der Roboter startet mit dem rechten Rad auf einem Punkt, der 1 m von Zentrum eines Drehstuhls entfernt ist. Der Roboter muss den Stuhl umrunden und möglichst genau den Startpunkt mit dem rechten Rad wieder anfahren.
Falls die Distanz kleiner als 50cm ist, wird aus der benötigten Zeit $t$ in Sekunden und der Entfernung $d$ in cm vom Startpunkt wie folgt ein Score berechnet: $t + 2d$. Die drei Gruppen mit den kleinsten Scores gewinnen ein «Minörli».