Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:glf24:robotik:fahrphysik-test-programme [2024/11/18 19:06] – Ivo Blöchliger | lehrkraefte:blc:informatik:glf24:robotik:fahrphysik-test-programme [2024/11/19 13:41] (current) – Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Testprogramme für die Fahrwerkskalibrierung ====== | ||
| + | <WRAP todo> | ||
| + | * In Visual Studio Code, legen Sie ein neues Projekt an (siehe [[https:// | ||
| + | * Bevor Sie ein Programm auf dem Roboter starten, stellen Sie diesen bitte auf den Boden, um die Fallhöhe zu minimieren. | ||
| + | </ | ||
| + | ===== Geradeausfahrt ===== | ||
| + | <WRAP todo> | ||
| + | Fügen Sie dann am Ende des Programms folgende Zeilen hinzu, um die Motoren zu initialisieren: | ||
| + | </ | ||
| + | <code python> | ||
| + | links = Motor(Port.A) | ||
| + | rechts = Motor(Port.B) | ||
| + | </ | ||
| + | <WRAP todo> | ||
| + | Fügen Sie dann weiter folgendes, unfertiges Programm hinzu und passen Sie es mit den korrekten Werten und Formeln an: | ||
| + | </ | ||
| + | <code python> | ||
| + | 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, | ||
| + | cm_pro_grad = 1.0/ | ||
| + | |||
| + | radabstand = 20 # Phantasiewert, | ||
| + | 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, | ||
| + | rechts.run_angle(120, | ||
| + | | ||
| + | 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, | ||
| + | |||
| + | links.stop() | ||
| + | rechts.stop() | ||
| + | </ | ||
| + | <WRAP todo> | ||
| + | * 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. | ||
| + | </ | ||
| + | ===== Drehung mit einem Motor ===== | ||
| + | <WRAP todo> | ||
| + | * Messen Sie den Radabstand in cm (von Radmitte zu Radmitte). | ||
| + | * Tragen Sie den Radabstand in Variable '' | ||
| + | * Berechnen Sie aus '' | ||
| + | * Berechnen Sie dann aus dem '' | ||
| + | * Ändern Sie dann die Variable '' | ||
| + | </ | ||
| + | |||
| + | ===== Unterprogramm Linkskurve ===== | ||
| + | <WRAP todo> | ||
| + | Ziel ist es, eine Funktion '' | ||
| + | * Fügen Sie folgenden, noch unvollständigen Code nach der Definition aller Fahrphysikvariablen ein: | ||
| + | </ | ||
| + | <code python> | ||
| + | def linkskurve(r, | ||
| + | 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, | ||
| + | rechts.run_angle(vrechts, | ||
| + | | ||
| + | # Test: Roboter sollte 180 Grad auf einem Kreis mit Radius 25cm fahren, mit einer Radgeschwindigkeit von durchschnittlich 200 Grad/ | ||
| + | linkskurve(25, | ||
| + | </ | ||
| + | |||
| + | ===== Challenge ===== | ||
| + | <WRAP todo> | ||
| + | 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». | ||
| + | </ | ||