lehrkraefte:blc:informatik:glf24:robotik:fahrphysik-test-programme

Testprogramme für die Fahrwerkskalibrierung

  • In Visual Studio Code, legen Sie ein neues Projekt an (siehe Neues Projekt anlegen).
  • Bevor Sie ein Programm auf dem Roboter starten, stellen Sie diesen bitte auf den Boden, um die Fallhöhe zu minimieren.

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()
  • Testen Sie Ihr Programm. Der Roboter sollte 10 cm vorwärts fahren.
  • Ändern Sie die Distanz auf 100 cm und messen Sie die zurückgelegte Distanz. Passen Sie dann den Raddurchmesser so an, dass die Strecke nachher genau stimmen sollte.
  • Messen Sie den Radabstand in cm (von Radmitte zu Radmitte).
  • Tragen Sie den Radabstand in Variable radabstand in ihrem Code hinzu.
  • Berechnen Sie aus 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).
  • Berechnen Sie dann aus dem 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.
  • Ändern Sie dann die Variable 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.

  • Fügen Sie folgenden, noch unvollständigen Code nach der Definition aller Fahrphysikvariablen ein:
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».

  • lehrkraefte/blc/informatik/glf24/robotik/fahrphysik-test-programme.txt
  • Last modified: 2024/11/19 13:41
  • by Ivo Blöchliger