This is an old revision of the document!
Robotik
Begriffe, Definitionen
Roboter bewegen
Wichtigste Gear-Funktionen
- Voraussetzung ist, dass die Variable
gear
auch einGear
-Objekt ist. - Nicht-blockierend heisst, das Programm läuft sofort weiter. Die Einstellung der Motoren bleibt dann so, bis eine Änderung vorgenommen wird.
- Blockierend heisst, das Programm wartet an dieser Stelle die gegebene Anzahl Millisekunden und kann während dieser Zeit nicht auf Sensoreingaben reagieren.
nicht-blockierend | blockierend | Beschreibung |
---|---|---|
gear.backward() | gear.backward(ms) | fährt rückwärts |
gear.forward() | gear.forward(ms) | fährt forwärts |
gear.left() | gear.left(ms) | dreht links |
gear.right() | gear.right(ms) | dreht rechts |
gear.leftArc(radius) | gear.leftArc(radius , ms) | fährt auf einem Linksbogen |
gear.rightArc(radius) | gear.rightArc(radius , ms) | Rechtsbogen |
gear.setSpeed(speed) | setzt die Geschwindigkeit (Werte zwischen 0 und ungefähr 70 sind überhaupt sinnvoll.) | |
gear.stop() | stoppt das Fahrwerk |
Vollständige Dokumentation der Funktionen: http://tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=robotik/robotikdoc.html
Aufgaben
Aufgabe 1
Verwenden Sie for- oder while-Schleife, um einen Weg, der aus drei Bogen besteht, zu programmieren. Mit dem Befehl “RobotContext.enableTrace(True)” können Sie die Spuren des Roboters Grafikfenster anzeigen lassen. (Diese Zeile muss im Programm gerade nach der Importzeile stehen).
Aufgabe 2
Der Roboter soll sich auf einer Spiralbahn bewegen. Verwenden Sie eine while-Schleife und Vergrössern Sie nach jedem Schleifendurchlauf den Radius im Befehl rightArc(radius). Das Programm soll mit der <ESC> Taste abgebrochen werden. Beginnen Sie mit radius 0.05.
Lichtsensor
Es ist auch möglich, im Simulator einen Lichtsensor zu verwenden. Der Lichtsensor misst die Helligkeit, die Werte liegen zwischen 0 und 1023 (je grösser der Wert, umso heller). Der Lichtsensor muss auch zum Roboter hinzugefügt werden und zwar mit folgenden Zeilen
ls = LightSensor(SensorPort.S3) robot.addPart(ls) ls.activate(True)
Ausgelesen wird der Sensor mit
v = ls.getValue()