TigerJython4Kids
HomeTurtlegrafikRobotikDatenbanken
bewegen

2. ROBOTER BEWEGEN

 

 

DU LERNST HIER...

 

die wichtigsten Befehle, mit welchen du deinen Roboter steuern kannst.

 

 

MUSTERBEISPIELE

  Beispiel 1: Fahren und abbiegen
Der Roboter soll zuerst vorwärts fahren, dann links abbiegen und danach wieder ein kurzes Stück vorwärts fahren.

Die Zeilen deines Programms werden der Reihe nach ausgeführt. Mit dem Befehl forward() wird der Roboter in den Zustand "forward" versetzt. delay(2000) gibt die Zeit im Millisekunden an, bis der Mikroprozessor den nächsten Befehl left() erteilt. Dieser versetzt den Roboter in den Zustand "linksdrehen". Während der 550 Millisekunden dreht sich der Roboter ca. um 90° links. Danach fährt er wieder 2000 Millisekunden vorwärts, eher er den Befehl stop() erhält.

 

from callibot import *

forward()
delay(2000)
left()
delay(550)
forward()
delay(2000)
stop()
► In Zwischenablage kopieren

Der Drehwinkel, welchen der Roboter in 550 Millisekunden zurücklegt ist von der Unterlage und insbesondere auch vom Ladezustand der Batterien abhängig. Wenn sich der Roboter zu lansam bewegt und nur um einen kleinen Winkel dreht, muss du die Batterien wechseln. Teste das Programm auch im Simulationsmodus. Hier dreht der Roboter imme genau um 90°.


 

Beispiel 2: Mehreres gleichzeitig tun
Obwohl das nachfolgende Programm aus einer Sequenz von Anweisungen besteht, die der Reihe nach ausgeführt werden, kann der Roboter mehreres gleichzeitig tun. Der Roboter fährt während 4 s vorwärts und anschliessend 4 s rückwärts. Während des Rückwärtsfahrens schaltet er die LEDs ein und aus.

Die Motoren und die LEDs werden durch den Mikroprozessor gesteuert, wobei der Mikroprozessor auch mehrere Aktoren gleichzeitig bedienen kann. Während sich die Motoren nach dem Erhalt des Befehls backward() im Zustand backward befinden, werden mit dem Befehl

setLED(1) die LEDs einschaltet und nach 3000 ms mit setLED(0) auschaltet. Nach weiteren 1000 ms erhalten die Motoren den Befehl stop() und der Roboter hält an.  
from callibot import *

forward()
delay(4000)
backward()
setLED(1)
delay(3000)
setLED(0)
delay(1000)
stop()
► In Zwischenablage kopieren

 

Beispiel 3: Auf Kreisbogen fahren
Der Roboter soll zuerst 5 s auf einem Linksbogen, dann 5 s auf einem Rechtsbogen und anhalten. Für das Bogenfahren verwendest du die Befehle leftArc(r) bzw. rightArc(r), wobei der Radius r in Meter ist.

Mit setSpeed(speed) kannst du die Geschwindigkeit ändern. Als speed kannst du Werte zwischen 0 und 100 wählen. Default speed ist 50.

 


from callibot import *

setSpeed(30)
leftArc(0.2)
delay(5000)
rightArc(0.2)
delay(5000)
stop()
► In Zwischenablage kopieren

 

 

MERKE DIR...

 

Für die Steuerung des Roboters stehen die folgende Befehle zur Verfügung:

 forward()  fährt vorwärts
 backward()  fährt rückwärts
 left()  dreht links
 right()  dreht rechts
 leftArc(r)  fährt auf Linksbogen mit Radius r
 rightArc(r)  fährt auf Rechtsbogen mit Radius r
 stop()  hält an
 setSpeed(speed)  setzt die Geschwindigkeit (default 50)
 delay(ms)  bleibt ms Millisekunden im gleichen Zustand
 setLED(1)  LEDs einschalten
 setLED(0)  LEDs ausschalten
 setAlarm(1)  Schaltet einen Pipton ein
 setAlarm(0)  Schaltet den Pipton aus

Bei der Roboterprogrammierung musst du in Zuständen denken. Der Befehl forward() versetzt den Roboter in eine Vorwärtsbewegung. Während die Motoren in diesem Zustand sind, kann der Microprozessor Befehle an andere Aktoren erteilen.

Ein laufendes Programm kannst du jeder Zeit abbrechen, indem du die Stromversorgung mit dem blauen Schalter hinten auf dem Roboterchassis ausschaltest.

Du kannst alle Beispiele auch im Simulationsmodus ausführen. Um ein Programm zu starten, klickst du anstelle des Robotik-Buttons auf den grünen Run-Pfeil. Willst du im Grafikfenster die Roboterspuren anzeigen lassen, fügst du nach der Importzeile folgende Zeile ein:
RobotContext.enableTrace(True)

 

 

ZUM SELBST LÖSEN

 

 

1.
Erstelle mit einigen Gegenständen einen Parcours und schreibe ein Programm so, dass der Roboter vom Start zum Ziel fährt.

 

2.
Der Roboter soll sich so lange auf einen Linksbogen bewegen, bis er einen ganzen Kreis zurückgelegt hat. Danach soll er sich gleich lange auf einem rechtsbogen bewegen.  

3.

Mit setAlarm(1) wird ein Alarm eingeschaltet (ein Pipton). setAlarm(0) schaltet den Alarm aus. Der Roboter soll zuerst 5000 ms vorwärts und danach 5000 ms rückwärts fahren. Während des Rückwärtsfahrens soll er Alarm einschalten.

Damit du den Befehl setAlarm() verwenden kannst, musst du das Modul cbalarm importiren.

Mit nebenstehendem Programm wird der Alarm während 3000 ms eingeschaltet.

 
from callibot import *
from cbalarm import *

setAlarm(1)
delay(3000)
setAlarm(0)
► In Zwischenablage kopieren

 

 

ZUSATZSTOFF: MOTOREN UND LEDs EINZELN STEUERN

 

Die Befehle forward(), left() usw. steuern das ganze Fahrwerk, das aus zwei Motoren besteht. Man kann aber auch die einzelnen Motoren einschalten und ihre Geschwindigkeit regeln. Mit motL.rotate(speed) wird der linke Motor in die Vorwärtsbewegung versetzt und rotiert mit der Geschwindigkeit speed. Für die positiven speed-Werte rotiert der Motor vorwärts, bei negativer Werten rückwärts und für speed = 0 hält der Motor an. Entsprechend funktioniert der Befehl motR.rotate(speed) für den rechten Motor.

 

Beispiel 4: Der linke Motor läuft zuerst 3 Sekunden mit der Geschwindigkeit 50 vorwärts, dann 2 Sekunden mit der Geschwindigkeit 30 rückwärts. Anschliessend hält er an. Führe das Programm zuerst im Simulationsmodus aus und beobachte die Rotationen im Grafikfenster.

from callibotmot import *

motL.rotate(50)
delay(3000)
motL.rotate(-50)
delay(2000)
motL.rotate(0)
► In Zwischenablage kopieren
 



Beispiel 5: Leds einzeln ein - und ausschalten
Mit den Befehlen setLED(1) und setLED(0) kannst du beide LEDs gleichzeitig ein- und ausschalten. Du kannst die LEDs auch einzeln ansprechen:
setLEDLeft(1) schaltet die linke LED ein
setLEDLeft(0) schaltet die linke LED aus
setLEDRight(1) schaltet die rechte LED ein
setLEDRight(0) schaltet die rechte LED aus

Dein Programm schaltet jeweils eine LED ein und die andere aus.

 


from callibot import *

setLEDLeft(1)
delay(2000)
setLEDLeft(0)
setLEDRight(1)
delay(2000)
setLEDRight(0)
► In Zwischenablage kopieren

 

 

ZUM SELBST LÖSEN

 

 

4.
Lasse die beiden Motoren mit der gleichen Geschwindigkeit 4000 Millisekunden vorwärts rotieren.

5.
Lasse während 4 Sekunden den linke Motor vorwärts und den rechten Motor rückwärts laufen.

6.

Wie musst du den linken und den rechten Motor steuern, damit sich der Roboter 4 Sekunden auf einem Linksbogen bewegt?

7.

Ergänze das Beispiel 3 so, dass wenn der Roboter auf dem linken Kreisbogen fährt die linke LED leuchtet und wenn er auf dem rechten Kreisbogen fährt die rechte LED leuchtet und die linke ausgeschaltet wird.