Wiederholte Bewegung

Es liegt im Wesen von Robotern, gleiche Anweisungsblöcke mehrmals zu wiederholen. Dazu kann man die while- oder for-Schleifen verwenden. Diese wurden bereits im Kapitel Turtlegrafik eingeführt.


Beispiel 1: while-Schleife

Um auf einer quadratförmigen Bahn zu fahren, muss der Roboter die Befehle "eine Strecke vorwärtsfahren" und "rechtwinklig abbiegen" viermal wiederholen.

# Repeat1.py

from raspisim import *
# from raspibrick import *

robot = Robot()
gear = Gear()
i = 0
while i < 4:
    gear.forward(2000)
    gear.left(550)
    i = i + 1
robot.exit()
Programmcode markieren (Ctrl+C kopieren)
 

Erklärungen zum Programmcode:

while i < 4: So lange i kleiner als 4 ist, werden die eingerückten Zeilen erneut ausgeführt


Beispiel 2: for-Schleife

Der Roboter bewegt sich zuerst auf einem Viertelkreis und fährt danach eine kurze Strecke zurück. Nach 4 derartigen Manövern sollte er wieder in der Ausgangsstellung sein.

# Repeat2.py

from raspisim import *
# from raspibrick import *

robot = Robot()
gear = Gear()
for i in range(4):
    gear.leftArc(0.1, 1800)
    gear.backward(1000)    
robot.exit()
Programmcode markieren (Ctrl+C kopieren)
 

Erklärungen zum Programmcode:

for i in range(4): Die Anweisungen im Schleifenblock werden viermal wiederholt

 

Beispiel 3: Endlose while-Schleife

Die sogenannte "endlose while-Schleife" wird in der Robotik sehr häufig verwendet, zum Beispiel, wenn man über längere Zeit Sensorwerte registrieren will. Man muss aber jederzeit, das laufende Programm abbrechen können, ohne dden Roboter ausschalten zu müssen. Es ist daher nicht sinnvoll, eine unabbrechbare while-Schleife mit while True zu verwenden.

Die Schleife while not isEscapeHit() läuft so lange, bis Escape gedrückt wird. Im Remote-Modus handelt es sich um die Tastaturtaste Esc, im autonomen Modus ist es die Drucktaste.

In diesem Beispiel bewegt sich der Roboter auf einem Linksbogen so lange, bis das Programm mir Escape beendet wird.

# Repeat3.py

from raspisim import *
# from raspibrick import *

robot = Robot()
gear = Gear()
gear.setSpeed(70)
while not isEscapeHit():
    gear.leftArc(0.1)
robot.exit()
Programmcode markieren (Ctrl+C kopieren)
 

 


Escape Remote-Modus

 


Escape autonomer-Modus

 


Erklärungen zum Programmcode:

while not isEscapeHit(): Quasi-endlose Wiederholschleife, die aber mit der Esc-Taste (remote) bzw. dem Push-Button (autonom) beendet werden kann.

 


Aufgaben Serie 3:

1)

Ein Roboter soll nacheinander 4 Orte erreichen, indem er zuerst vorwärts bis zum ersten Ort fährt, umkehrt und zum Ausgangspunkt zurück kehrt. Danach fährt er auf gleiche Weise zu den übrigen drei Stellen, die vom Ausgangspunkt gleich weit entfernt sind.

 

 

 

2)
Verwende for- oder while-Schleife, um einen Weg, der aus drei Halbkreis-Bogen besteht, zu erhalten.

 

3)
Verwende eine "endlose" while-Schleife und lasse den Roboter auf einer 8-Bahn fahren.