lehrkraefte:blc:informatik:glf20:robotik:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Last revision Both sides next revision
lehrkraefte:blc:informatik:glf20:robotik:start [2021/03/25 15:14]
Ivo Blöchliger [Robotik im Simulationsmodus]
lehrkraefte:blc:informatik:glf20:robotik:start [2021/03/26 21:20]
Ivo Blöchliger
Line 9: Line 9:
 ===== Robotik im Simulationsmodus ===== ===== Robotik im Simulationsmodus =====
  
-==== Wichtigste Funktionen ====+==== Wichtigste Gear-Funktionen ==== 
 +<WRAP info> 
 +  * Voraussetzung ist, dass die Variable ''gear'' auch ein ''Gear''-Objekt ist. 
 +  * **Nicht-blockierend** heisst, das Programm läuft sofort weiter. Die Motoren drehen einfach weiter in dieser Einstellung, 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. Die Motoren **stoppen nach** einen blockierenden Befehl wieder.
  
-| backward() | fährt rückwärts (nicht-blockierende Methode) | +^ nicht-blockierend ^ blockierend ^ Beschreibung ^ 
-backward(ms) | fährt während gegebener Zeit (in ms) rückwärts (blockierende Methode) +gear.backward() | gear.backward(ms) | fährt rückwärts | 
-isMoving() | gibt True zurück, wenn das Fahrwerk in Bewegung ist | +gear.forward()  gear.forward(ms) | fährt forwärts 
-forward() | fährt vorwärts (nicht blockierende Methode) +gear.left() | gear.left(ms) | dreht links  
-forward(ms) | fährt während gegebener Zeit (in ms) vorwärts (blockierende Methode) | +gear.right() | gear.right(ms) | dreht rechts  
-| left() | dreht links (nicht blockierende Methode) +gear.leftArc(radius) | gear.leftArc(radius , ms) fährt auf einem Linksbogen (negative Radien bewirken eine Rückwärtsbewegung) | 
-left(ms) | dreht während gegebener Zeit (in ms) links (blockierende Methode) | +gear.rightArc(radius) | gear.rightArc(radius , ms) | Rechtsbogen | 
-| leftArc(radius) | fährt auf einem Linksbogen mit gegRadius (nicht- blockierende Methode) | +gear.setSpeed(speed) | setzt die Geschwindigkeit (Werte zwischen 0 und ungefähr 70 sind überhaupt sinnvoll.) 
-leftArc(radius, ms) fährt während gegebener Zeit (in ms) auf einem Linksbogen (blockierende Methode) | +gear.stop() | | stoppt das Fahrwerk (nötig nach nicht-blockierenden Befehlen |
-| right() | dreht rechts (nicht-blockierende Methode) | +
-| right(ms) | dreht während gegebener Zeit (in ms) rechts (blockierende Methode) | +
-| rightArc(radius) | fährt auf einem Rechtsbogen mit gegRadius (nicht blockierende Methode) | +
-rightArc(radius , ms) | fährt während gegebener Zeit (in ms) auf einem Rechtsbogen (blockierende Methode) +
-| setSpeed(speed) | setzt die Geschwindigkeit | +
-| stop() | stoppt das Fahrwerk |+
  
 Vollständige Dokumentation der Funktionen: http://tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=robotik/robotikdoc.html Vollständige Dokumentation der Funktionen: http://tigerjython.ch/index.php?inhalt_links=navigation.inc.php&inhalt_mitte=robotik/robotikdoc.html
 +</WRAP>
 +==== Aufwärm-Aufgaben ====
 +<WRAP todo>
 +Zeichnen Sie mit dem Roboter folgende Figur:
 +
 +{{:lehrkraefte:blc:informatik:glf20:robotik:mgr:pasted:20210325-220909.png}}
 +
 +Benutzen Sie dazu geeignete ''Gear''-Funktionen von oben und eine for-Schleife für die 3-fache Wiederholung, z.B.
 +<code python>
 +for i in range(3):
 +  # Tu was
 +</code>
 +</WRAP>
 +
 +<WRAP todo>
 +Zeichnen Sie in etwa folgende Spirale:
 +
 +{{:lehrkraefte:blc:informatik:glf20:robotik:mgr:pasted:20210325-223207.png}}
 +
 +Definieren Sie eine Variable für den Kurvenradius und erhöhen Sie diese Variable in einer Wiederholungs-Schleife.
 +</WRAP>
 +
 +==== Lichtsensor ====
 +<WRAP info>
 +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
 +<code python>
 +# Initialisierung
 +ls = LightSensor(SensorPort.S3)
 +robot.addPart(ls)
 +ls.activate(True)
 +
 +
 +# Ausgelesen wird der Sensor im Programm mit 
 +v = ls.getValue()
 +# v enthält nun einen Wert zwischen 0 (schwarz) und 1023 (weiss)
 +</code>  
 +</WRAP>
 +
 +<WRAP todo>
 +Die Initialisierung (aller erste Zeilen) soll nun wie folgt aussehen:
 +<code python>
 +from simrobot import *
 +from random import randrange
 +
 +RobotContext.useBackground("sprites/border.gif")
 +RobotContext.setStartPosition(350 + randrange(50), 250)
 +RobotContext.setStartDirection(135+randrange(90))
 +</code>
 +Dabei wird ein Hintergrund geladen und die Startposition zufällig gewählt.
 +
 +Lassen Sie den Roboter so lange vorwärts fahren, bis der Roboter auf weissem Grund steht. Dann soll der Roboter anhalten.
 +</WRAP>
 +
 +
 +===== Challenges =====
 +  * {{lehrkraefte:blc:informatik:glf20:robotik:robochallenge.zip}}
 +  * Challenge 1: Roboter bleibt auf dem roten Punkt unten rechts stehen
 +  * Challenge 2: Roboter bleibt auf dem roten Punkt oben stehen.
 +
  • lehrkraefte/blc/informatik/glf20/robotik/start.txt
  • Last modified: 2021/03/26 21:23
  • by Ivo Blöchliger