-
bruegli an.main.py fügen Sie folgenden Code ein:# Helligkeitssensor licht = ColorSensor(Port.S3) # Bitte Anschluss-Nummer überprüfen. # Distanzsensor ultraschall = UltrasonicSensor(Port.S2) # Bitte Anschluss überprüfen # Motoren links = Motor(Port.A) rechts = Motor(Port.B) fahrwerk = DriveBase(links, rechts, 55, 135) # Motor links, Motor rechts, Raddurchmesser (in mm), Radabstand (in mm) heber = Motor(Port.C) # Parameter fürs das Folgen von Linien: hellMin = 10 # Helligkeit auf dunkler Seite hellMax = 80 # Helligkeit auf heller Seite omegaMax = 30 # Maximal Drehgeschwindigkeit beim Linienfolgen speed = 100 # Vorwärtsgeschwindigkeit beim Linienfolgen. ######## # TODO # ######## def heberAb(): heber.run_target(20, -42) # Hier den Winkel anpassen. Auf jeden Fall negativ. def heberAuf(): heber.run_target(20, 0) # Zurück auf Startposition heberAb() wait(2000) # 2s warten heberAuf()
Der Roboter soll mit dem Heber oben starten. Finden Sie dann eine geeignete Winkelposition für den Heber, um das Brügeli aufladen zu können.
Wenn das funktioniert, löschen Sie die letzten drei Zeilen (die nur zum Testen da sind) und fügen Sie folgenden Code hinzu:
# Folgt der Linie auf der einen (seite=1) oder anderen Seite (seite=-1) # testBis ist eine Funktion, die True (weiter folgen) oder False (anhalten und nicht mehr folgen) zurückgibt def folgen(seite, testBis): while testBis(): hell = licht.reflection() omega = ((hellMax-hell)/(hellMax-hellMin)*2-1)*omegaMax*seite fahrwerk.drive(speed, omega) fahrwerk.stop() def fahren(testBis): while testBis(): pass fahrwerk.stop() def ultraschallGroesser(limit): def testBis(): d = ultraschall.distance() return d==0 or d>limit return testBis def tachometerKleiner(limit): fahrwerk.reset() # Tachometer auf Null setzen def testBis(): d = fahrwerk.distance() return abs(d)<abs(limit) return testBis def helligkeitGroesser(limit): def testBis(): hell = licht.reflection() return hell>limit return testBis # Während 10cm einer Linie folgen, dann stoppen # folgen(1, ultraschallGroesser(100)) # Der Linie folgen, bis der Roboter 20 cm vor einer Wand steht. # folgen(1, tachometerKleiner(200)) # Weiterfahren, bis Helligkeit kleiner als 20 # fahrwerk.drive(150,0) # fahren(helligkeitGroesser(20))
Lösen Sie die Challenge mit folgenden Elementen:
fahrwerk.straight(-200) (20cm rückwärts fahren)fahrwerk.turn(90) (90° drehen)fahren(helligkeitGroesser(20)) weiter fahren (nach drive-Kommando), bis Helligkeit kleiner als 20folgen(1, tachometerKleiner(100)) 10cm der Linie folgenfolgen(1, ultraschallGroesser(100)) Der Linie folgen, bis 10cm vor die Wand