Erste Schritte in der Roboterprogrammierung mit leJOS
Tipps vor der ersten Fahrt
Programm beenden: Ist der EV3 nicht abgestürzt, sondern z.B. in einer Endlosschleife tätig, kann man das laufende Programm durch Drücken von "ENTER" und "DOWN" auf dem Brick beendet werden.
Neustart EV3: Ist der EV3 abgestürzt, kann man ihn mit "ESCAPE", "ENTER" und "DOWN" manuell neu starten.
Probefahrt
Das erste Programm wirkt auf den ersten Blick etwas komplex. Dank der leJOS-Bibliothek sind viele Klassen, Methoden und die zugrundeliegenden Programmierparadigmen sehr intuitiv, so dass man sehr schnell durch einfache Aufrufe bereits Programme mit spannendem Output erzeugen kann.
import lejos.robotics.RegulatedMotor;
import lejos.hardware.motor.EV3LargeRegulatedMotor;
import lejos.hardware.port.MotorPort;
public class EV3Probefahrt
{
static RegulatedMotor reMo = new EV3LargeRegulatedMotor(MotorPort.A);
static RegulatedMotor liMo = new EV3LargeRegulatedMotor(MotorPort.D);
public static void main(String[] args)
{
liMo.setSpeed(500);
reMo.setSpeed(500);
liMo.rotate(1080,true);
reMo.rotate(1080);
}
}
import lejos.nxt.Motor;
import lejos.nxt.NXTRegulatedMotor;
public class Probefahrt
{
static NXTRegulatedMotor reMo = Motor.A;
static NXTRegulatedMotor liMo = Motor.B;
public static void main(String[] args)
{
liMo.setSpeed(500);
reMo.setSpeed(500);
liMo.rotate(1080,true);
reMo.rotate(1080);
}
}
Probefahrt.java bewirkt, dass der Roboter ein Stück geradeaus fährt. Durch die import-Zeilen wird die Verfügbarkeit der leJos-Bibliothek hergestellt. reMo
und liMo
sind die beiden Motoren, die den Roboter in der Fahrt antreiben. Mit setSpeed
stellt man beide auf eine Geschwindigkeit (Grad pro Sekunde) ein, welche auf ~100*Batteriespannung limitiert ist [900 mit Batterien, 740 bei Akku). Der Befehl rotate
bewirkt die Drehung der Motoren um eine angegebene Gradzahl (hier drei Umdrehungen). Durch den Parameter true
wird der nachstehende rotate-Befehl gleichzeitig, und nicht erst nach Beendigung des ersten Aufrufs, ausgeführt. Somit fährt der Roboter geradeaus. Befehle zur Messung und Steuerung des Roboters müssen grundsätzlich innerhalb der main-Methode
stehen (der Startpunkt eines jeden Java-Programms). Eine Auslagerung an andere Stelle wird durch Methoden möglich.
Aufgaben - Modifikation der Probefahrt
- Erprobe die Veränderung der Parameter Geschwindigkeit und Distanz. Setze auch mal in beiden Motoren voneinander verschiedene Werte ein.
- Verwende für einen der beiden Motoren bei
rotate
den gleichen Betrag, jedoch mit negativem Vorzeichen. - Durch Wiederholung der Befehle
rotate
kann ein Programm "mehrere Fahrten" in einem Programmdurchlauf ausführen. Probier es aus! - Stecke z.B. mit Kisten einen Parcours ab, den der Roboter bewältigen muss.
Anmerkungen und Hilfen zu den Aufgaben
- Durch die Erprobung wird man ein Gefühl für die Auswirkungen und Grenzen der Parameter entwickeln. Bei verschiedenartigen Werten fährt der Roboter eine Kurve, die in dieser Form noch ruckelnd und (insbesondere am Ende der Fahrt) unschön sein wird.
- Der Roboter dreht auf der Stelle aufgrund entgegengesetzt laufender Ketten. Experimentell könnte man an dieser Stelle eine Drehung um 90 oder 180 Grad bestimmen.
- Beispiel: Geradeausfahrt > Drehung > Geradeausfahrt
liMo.rotate(1080,true);
reMo.rotate(1080);
liMo.rotate(-1080,true);
reMo.rotate(1080);
liMo.rotate(540,true);
reMo.rotate(540);