TigerJython | xx für Gymnasien |
Die Programme für den EV3-Roboter und den NXT-Roboter unterscheiden sich nur in der Importzeile. Wenn Sie den NXT-Roboter haben, müssen Sie die erste Importzeile auskommentieren und die zweite aktivieren. |
from ev3robot import * #from nxtrobot import * |
|
So wie ein realer Roboter aus verschiedenen Komponenten zusammengebaut ist, wird er in einem Programm softwaremässig modelliert. Ein Basismodel wird aus einem EV3- bzw. NXT-Brick (LegoRobot()) und aus einem Fahrwerk (Gear()) mit zwei Motoren zusammengebaut (robot.addPart(gear)). |
robot = LegoRobot() gear = Gear() robot.addPart(gear) |
|
Mit gear.forward() wird der Roboter in die Vorwärtsbewegung versetzt und bleibt mit 2000 Millisekunden in dieser Bewegung. robot.exit() beendet das Programm. Das Programm kann auch im Simulationsmodus ausgeführt werden. |
gear.forward() |
Beispiel 1: Fahren und Richtung ändern Der Roboter bewegt sich eine kurze Strecke vorwärts dreht 90° nach links und bewegt sich weiter eine kurze Strecke vorwärts.
|
Erklärungen zum Programmcode:
from ev3robot import *: importiert das Modul ev3robot, welches die Befehle für den EV3-Roboter enthält | |
robot = LegoRobot: erzeugt ein Robot-Objekt | |
gear.forward(): das Fahrwerk wird in Vorwärtszustand versetzt. forward mit einer leeren Parameterklammer ist eine nicht blockierende Methode (der Roboter kann während der Vorwärtsbewegung auf weitere Befehle reagieren) | |
gear.left(): das Fahrwerk wird in den Zustand "links drehen" versetzt | |
Tools.delay(2000): der Roboter bleibt 2000 Millisekunden lang im vorgegebenen Zustand | |
robot.exit(): das Programm wird beendet |
Beispiel 2: Fahren und Richtung ändern mit blockierenden Befehlen
Der sogenannt "blockierende" Befehl forward(2000) bewegt den Roboter während 2000 ms vorwärts. Während beim nichtblockierenden Befehl forward() der Roboter in den Vorwärtszustand versetzt wird und während dessen noch etwas anderes tun (z.B. Sensorwerte zurückgeben) kann, reagiert der Robotern bei forward(2000) erst nach 2000 ms auf weitere Befehle. Je nach Situaton werden mit Vorteil blockierende Befehle eingesetzt, da die Programmcodes dadurch einfacher sind. Die Programme im Beispiel 1 und 2 bewirken ganau das Gleiche.
|
|||
|
Erklärungen zum Programmcode:
gear.forward(2000): das Fahrwerk bewegt sich 2000 Millisekunden vorwärts - blockierende Methode. Während 2000 ms kann der Roboter nicht auf weitere Befehle reagieren. | |
gear.left(550): blockierende Methode. Das Fahrwerk dreht 550 Millisekunden (ca. 90°) nach links |
Beispiel 3: Fahren und Richtung ändern mit TurtleRobot
Turtle-Robot ist ein Luxus-Modell für Programmieranfänger. Er ist bereits zusammengebaut und kann mit einfachen Befehlen forward(step), backward(step), left(angle) und right(angle) gesteuert werden, ähnlich wie Turtle in der Turtlegrafik. TurtleRobot eignet sich besonders gut für Aufgaben, bei welchen die Richtung rechtwinklig ändern muss, da mit left(90) bzw. right(90) exakt rechte Winkel gefahren werden.
|
|||
|
Erklärungen zum Programmcode:
robot = TurtleRobot(): erzeugt ein TurtleRobot-Objekt |
Beispiel 4: Einzelne Motoren 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 motA.forward(): wird der Motor am Motorport A in die Vorwärtsbewegung versetzt. Mit motB.setSpeed(20) kann man die Geschwindigkeit des Motors B ändern. Die Standardgeschwindigkeit ist 50. Wenn die Geschwindigkeiten der Beiden Motoren nicht gleich sind, bewegt sich der Roboter auf einem Kreisbogen.
|
|||
|
Erklärungen zum Programmcode:
motA.forward(): bewegt den Motor am Port A vorwärts | |
motB.setSpeed(20): ändert die Geschwindigkeit des Motors am Port B |
Aufgaben: Serie 1 |
1) |
Der Roboter soll einen Gegenstand umfahren und dann die Fahrt in der ursprünglichen Richtung fortsetzen. |
2) |
Stelle mit mehreren Gegenständen ein Parcours auf und schreibe ein Programm, mit dem der Roboter vom Start zum Ziel fährt. Für die Simulation kannst du folgende Programmvorlage verwenden:
Das Hintergrundbild bg.gif, welches im Programm als RobotContext verwendet wird, ist in der TigerJython-Distribution enthalten und kann direkt verwendet werden. Wenn du eigene Hintergrundbilder verwenden willst, muss du diese im Unterverzeichnis sprites des Verzeichnisses, in dem sich dein Programm befindet. |