This is an old revision of the document!


Line Follower

Ziel: Der Roboter folgt einer Linie.

  • 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()

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

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()
  • lehrkraefte/blc/informatik/glf19/robofollow.1591641086.txt.gz
  • Last modified: 2020/06/08 20:31
  • by Ivo Blöchliger