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
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:23] (current)
Ivo Blöchliger
Line 1: Line 1:
 ====== Robotik ====== ====== Robotik ======
 +
 +  * {{lehrkraefte:blc:informatik:glf20:robotik:intro-robotik.pdf}}
  
 ===== Begriffe, Definitionen ===== ===== Begriffe, Definitionen =====
Line 9: Line 11:
 ===== 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.1616681653.txt.gz
  • Last modified: 2021/03/25 15:14
  • by Ivo Blöchliger