drivebasetest
an.main.py
, fügen Sie folgende Zeilen hinzu:links = Motor(Port.A) rechts = Motor(Port.B) # Ersetzen Sie folgende Werte durch die Werte in mm, die Sie in der letzten Stunde gemessen/kalibriert haben. fahrwerk = DriveBase(links, rechts, 55, 125) # Motor links, Motor rechts, Raddurchmesser (in mm), Radabstand (in mm) # Parameter setzen fahrwerk.settings(50, 200, 45, 100) # Bewegen fahrwerk.straight(200) fahrwerk.turn(90) fahrwerk.straight(-200) # Etwas mehr fahrwerk.drive(50, 10) wait(3000) fahrwerk.stop()
fahrwerk
-Funktionen im obigen Code (eigentlich DriveBase
-Methoden genannt).
Die drive
Methode erlaubt es, einen Kreis zu fahren. Die Zeit abzuschätzen und mit wait
zu warten ist ungenau, weil die Geschwindigkeit nicht konstant ist, sondern am Anfang und am Ende beschleunigt bzw. verzögert wird. Genauer ist es, den Winkel oder die Distanz zu messen.
fahrwerk
initialisiert wurde. Die restlichen Bewegungen können Sie löschen.def kreisbogen(fahrwerk, geschwindigkeit, radius, winkel): """Mit dem fahrwerk soll auf einem Kreis mit Radius radius (in mm) ein bestimmter Winkel (in Grad) mit Geschwindigkeit geschwindigkeit (mm/s) gefahren werden. Ist geschwindigkeit<0, fährt der Roboter rückwärts. Der winkel gibt an, um wieviele Grad sich der Roboter insgesamt um die eigene Achse im Uhrzeigersinn dreht und kann ebenfalls negativ sein.""" if winkel>=0: richtung=1 else: richtung=-1 dist = 2*radius*pi*winkel*richtung/360 zeit = dist/abs(geschwindigkeit) winkelgeschwindigkeit = winkel/zeit print("v=%f, va=%f" % (geschwindigkeit, winkelgeschwindigkeit)) winkelziel = fahrwerk.angle()+winkel fahrwerk.drive(geschwindigkeit, winkelgeschwindigkeit) while fahrwerk.angle()*richtung<winkelziel*richtung: wait(1) # 1 ms pausieren fahrwerk.stop() # Aufrufen z.B. mit kreisbogen(fahrwerk, 100, 250, 360)