This is an old revision of the document!
Ausmessen des Fahrwerks
Die Position der Motoren kann als Winkel in Grad ausgelesen und auch angesteuert werden. Geschwindigkeiten werden in Grad/s angegeben. Ist daher wichtig, den Umfang der Räder zu messen, um Winkel in Distanz umzurechnen.
Radumfang und Umrechnungskonstanten
- Bestimmen Sie den Radumfang durch Messen und Rechnen.
- Errechnen Sie daraus die Konstanten
cm_pro_grad
undgrad_pro_cm
, mit denen dann zwischen cm und Grad umgerechnet werden kann. Dabei soll nur eine der beiden Konstanten im Code festgelegt werden, die andere wird daraus berechnet. - Lassen Sie dann den Roboter genau 1m geradeaus fahren. Messen Sie die Distanz und berechnen Sie genau, wie der Wert der festegelegten Konstante anzupassen ist. Sie können dazu den folgende Code anpassen.
- Verpacken Sie danach den Code zum Geradeausfahren in eine Funktion
def geradeAus(distanz):
.
# imports fehlen hier, siehe https://fginfo.ksbg.ch/dokuwiki/doku.php?id=lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:programm-struktur from math import pi # Wert pi importieren # Initialisierungen fehlen hier 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 distanz = 100 # 100 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. links.stop() rechts.stop()
Wenn der Radumfang einmal korrekt kalibriert ist, muss der Radabstand kalibriert werden, damit korrekt um die eigene Achse gedreht werden kann. Wo genau der Drehpunkt der Räder ist, hängt vom Untergrund und der genauen Geometrie der Radaufhängung ab (die Achsen sind nämlich nicht exakt auf derselben Geraden, sondern vom Eigengewicht des Roboters leicht nach oben geneigt).
- Messen Sie den Radabstand in cm (von Radmitte zu Radmitte).
- Fügen Sie den Radabstand als Variable
radabstand
ihrem Code hinzu. - Berechnen Sie daraus, wie viele cm das linke Rad zurücklegen muss (während das rechte stillsteht), damit sich der Roboter um genau 360° dreht.
- Schreiben Sie eine Funktion
drehen(motor, grad):
, die bewirkt, dass sich der Roboter mit dem gegebenen Motor um die eigene Achse um ebensoviele Grad ausführt. Aufgerufen wird die Funktion dann mitdrehen(links, 360)
. - Schätzen Sie möglichst genau den Fehler in der Drehung ab, und passen die den Radabstand entsprechend an und testen erneut.