lehrkraefte:blc:informatik:glf19:robofollow

Line Follower

Ziel: Der Roboter folgt einer Linie.

  • Laptop und Roboter (Taste in der Mitte) starten.
  • Stromversorgung vom Roboter ausstecken.
  • Bezeichnung der Roboter-Tasten verstehen:
    • ESC, Escape: Oben links
    • Enter, Bestätigen: Mitte
  • 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, speichern, testen und studieren.
from ev3robot import *
 
# Roboter initialisieren
robot = LegoRobot()
 
# Linker und rechter Motor hinzufuegen
right = Motor(MotorPort.A)
robot.addPart(right)
 
left = Motor(MotorPort.B)
robot.addPart(left)
 
 
# Lichtsensor hinzufuegen und starten
ls = LightSensor(SensorPort.S3)      # Ueberpruefen, ob der Sensor auch wirklich an Port 3 angeschlossen ist!
robot.addPart(ls)
ls.activate(True)
##################################
## Platz fuer eigene Funktionen ##
##################################
 
 
###########################################
## 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.
 
# Die Motoren drehen sich jetzt
 
Tools.delay(2000)    # 2 Sekunden warten, damit sich der Roboter auch wirklich bewegt.
 
# Motoren stoppen, Geschwindigkeit auf Null
left.setSpeed(0)    
left.forward()       
right.setSpeed(0)   
right.forward()     
 
robot.exit()         # Programm ordnungsgemäss beenden.

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.

Wichtig: Speichern Sie Ihr Programm regelmässig!

Pseudo-Code:

Motoren an
Wiederholen:
  Lichtsensor auslesen
  Schleife verlassen (mit ''break''), wenn die Helligkeit klein genug
Motoren aus

Lichtsensor auslesen und anzeigen. Diesen Code verwenden Sie anstatt der Pause.

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, die Sie unmittelbar vor dem Kommentar Beginn des Programms kopieren.

# Beispiele: 
#    steuern(0,0)    # stoppt die Motoren
#    steuern(20,-20) # rechts im Kreis drehen
#    steuern(40,40)  # gerade aus
#    steuern(10,30)  # Links-Kurve
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()

Idee 1: In einer Endlos-Schleife jeweils die Helligkeit ermitteln und je nach Helligkeit mit der Funktion steuern eher nach links oder rechts steuern.

Idee 2: Abschätzen, wie der Wert etwas später aussehen könnte und bereits darauf reagieren. Das kann ein hin- und herwackeln vermindern.

  • Roboter ausschalten (Escape, Escape, dann bestätigen).
  • Roboter an seinen Platz auf den Laptop mit gleicher Nummer.
  • Roboter an die Stromversorgung anschliessen.
  • Laptop ausschalten (Menu oben rechts)
  • Sich melden, vor dem Roboter warten, bis ich Sie verabschiede.
  • lehrkraefte/blc/informatik/glf19/robofollow.txt
  • Last modified: 2020/06/15 12:45
  • by Ivo Blöchliger