Jython HomeDruckenJava-Online

Roboter bewegen


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(2000) bewegt siche der Roboter 2000 ms vorwärts.
robot.exit() beendet das Programm
 
gear.forward(2000)
robot.exit()

Das Programm kann auch mit einem virtuellen Roboter (im Simulationsmodus) ausgeführt werden. Die Roboterbewegungen werden dabei in einem Grafikfenster dargestellt. Für die Simulation muss das Modul simrobot importiert werden.

from simrobot import *

In den Musterbeispielen werden jeweils alle drei Imports aufgeführt, wobei immer zwei davon auskommentiert (deaktiviert) sind..

   


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.

 

Bei den Programmen für den NXT-Roboter erscheint zu Beginn eine Dialogbox, in den man den Bluetoothname eingeben muss. Danach wird die Verbindung zum Roboter aufgebaut.
 

Auf dem EV3 muss das BrickGate Programm gestartet sein (siehe BrickGate installieren). In einer Dialogbox wird nach der IP-Adresse des EV3-Bricks gefragt. Diese ist default auf 10.0.1.1 gesetzt. Danach wird die Verbindung zum Roboter aufgebaut.
 
 

# Ro1a.py

from ev3robot import *
# from simrobot import *
# from nxtrobot import *
  
robot = LegoRobot()
gear = Gear()
robot.addPart(gear)
gear.forward()
Tools.delay(2000)
gear.left()
Tools.delay(600)
gear.forward();
Tools.delay(2000)
robot.exit()
Programmcode markieren (Ctrl+C kopieren)
 

Erklärungen zum Programmcode:

from ev3robot import *: importiert das Modul ev3robot, welches die Befehle für den EV3-Roboter enthält
from simrobot import *: importiert das Modul simrobot, welches die Befehle für die- Simulation enthält
from nxtrobot import *: importiert das Modul nxtrobot, welches die Befehle für den Nxt-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 (kommt sofort zurück und der Roboter kann auf weitere Befehle reagieren)
Tools.delay(2000): der Roboter bleibt 2000 Millisekunden lang im vorgegebenen Zustand
robot.exit(): das Programm wird beendet

 

Beispiel: Fahren und Richtung ändern mit blockierenden Methoden

# Ro1b.py

from ev3robot import *
# from simrobot import *
# from nxtrobot import *
  
robot = LegoRobot()
gear = Gear()
robot.addPart(gear)
gear.forward(2000)
gear.left(550)
gear.forward(2000);
robot.exit()
Programmcode markieren (Ctrl+C kopieren)
 

Erklärungen zum Programmcode:

gear.forward(2000): das Fahrwerk bewegt sich 2000 Millisekunden vorwärts - blockierende Methode, kommt erst nach 2000 Millisekunden zurück. Währen dieser Zeit kann der Roboter nicht auf weitere Befehle reagieren.
gear.left(550): blockierende Methode. Das Fahrwerk dreht 550 Millisekunden 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.

# Ro1c.py

from ev3robot import *
# from simrobot import *
# from nxtrobot import *

robot = TurtleRobot()

robot.forward(100)
robot.left(90)
robot.forward(100)
robot.exit()
   
Programmcode markieren (Ctrl+C kopieren)
   

Erklärungen zum Programmcode:

robot = TurtleRobot(): erzeugt ein TurtleRobot-Objekt

 


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:

from simrobot import *

RobotContext.setStartPosition(320, 480)
RobotContext.useBackground("sprites/bg.gif")
  
robot = LegoRobot()
gear = Gear()
robot.addPart(gear)

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.