This is an old revision of the document!
Line Follower
Ziel: Der Roboter folgt einer Linie.
Vorbereitung
- Laptop und Roboter starten.
- TigerJython starten.
- IP von Roboter ablesen und in TigerJython wie folgt eintragen:
- Datei → Einstellungen → Bibliotheken → zuunterst die IP eintragen. Bestätigen.
- Auf dem Roboter Enter drücken (mittlere Taste), Run default.
- Beispiel-Code kopieren, testen und studieren.
from ev3robot import * # Roboter initialisieren robot = LegoRobot() # Linker und rechter Motor hinzufuegen right = Motor(MotorPort.A) robot.addPart(left) left = Motor(MotorPort.B) robot.addPart(right) # Lichtsensor hinzufuegen und starten ls = LightSensor(SensorPort.S3) robot.addPart(ls) ls.activate(True) ########################################### ## B E G I N D E S P R O G R A M M S ## ########################################### left.setSpeed(20) # Sinnvolle Werte zwischen 0 und 100 left.forward() # Erst jetzt wird setSpeed wirksam! right.setSpeed(10) # Links schneller als rechts, d.h. eine Rechtskurve right.forward() # Mit backward() könnte eine Drehung auf Platz erreicht werden. Tools.delay(2000) # 2 Sekunden warten left.stop() right.stop()
Challenge 1
Der Roboter soll auf weissem Untergrund starten. Er soll so lange geradeaus fahren, bis der Helligkeitssensor auf auf dem Teppich ist. Bonuspunkte, wer den Roboter noch so manövrieren kann, dass der Lichtkegel des Helligkeitssensors am Schluss genau von der hell-dunkel Kante halbiert wird.
Pseudo-Code:
Motoren an Wiederholen: Lichtsensor auslesen Schleife verlassen (mit ''break''), wenn die Helligkeit klein genug Motoren aus
Lichtsensor auslesen und anzeigen:
while True: l = ls.getValue() print("Helligkeit=%d" % l) # Ausgabe auf dem Computer if True: # Hier die Bedingung mit der Helligkeit einbauen. break
Challenge 2
Ziel ist es, dass der Roboter mit dem Helligkeitssensor einer hell-dunkel Kante folgt, z.B. entlang einer weissen Fläche auf dem Teppich, oder entlang der Bahn auf der Blache.
Um die beiden Motoren etwas konfortabler steuern zu können, dürfen Sie gerne folgende Funktion verwenden:
def steuern(links, rechts): left.setSpeed(int(abs(links))) if (links>0): left.forward() elif (links<0): left.backward() else: left.stop() right.setSpeed(int(abs(rechts))) if (rechts>0): right.forward() elif (rechts<0): right.backward() else: right.stop()