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 07:37]
Ivo Blöchliger [Headline]
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 6: Line 8:
   * https://de.wikipedia.org/wiki/Sensor   * https://de.wikipedia.org/wiki/Sensor
  
-===== Mathematik, Software und physikalische Realität ===== + 
-  * Mathematik: Exaktz.Bist $2+2=4$+===== Robotik im Simulationsmodus ===== 
-  * Software: Ziemlich deterministischd.hgleiche Eingabe führt zu gleicher AusgabeAber: z.B$0.2 \neq \frac{1}{5}$Datei nicht vorhanden, Netzwerkprobleme, unsinniger Input... + 
-  * Pysikalische Welt1m ist nur ungefähr 1m, geradeaus ist nur ungefähr geradeausJeder Motor/Sensor ist verschieden. +==== Wichtigste Gear-Funktionen ==== 
-    * Herausforderung: Programme entwickeln, die mit dieser Unsicherheit umgehen können+<WRAP info> 
-    * In Bereichen operieren, wo die Fehler klein sind (z.BMotorengeschwindigkeit nicht zu hoch setzen und nicht abrupt ändern (d.hBeschleunigung klein halten)). +  * Voraussetzung istdass die Variable ''gear'' auch ein ''Gear''-Objekt ist. 
-    * Fehler laufend feststellen und korrigieren.+  * **Nicht-blockierend** heisst, das Programm läuft sofort weiterDie Motoren drehen einfach weiter in dieser Einstellung, bis eine Änderung vorgenommen wird
 +  * **Blockierend** heisstdas Programm wartet an dieser Stelle die gegebene Anzahl **Millisekunden** und kann während dieser Zeit nicht auf Sensoreingaben reagierenDie Motoren **stoppen nach** einen blockierenden Befehl wieder. 
 + 
 +^ 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 (negative Radien bewirken eine Rückwärtsbewegung) | 
 +| gear.rightArc(radius) | gear.rightArc(radius , ms) | Rechtsbogen | 
 +| gear.setSpeed(speed) | | setzt die Geschwindigkeit (Werte zwischen und ungefähr 70 sind überhaupt sinnvoll.) | 
 +| gear.stop() | | stoppt das Fahrwerk (nötig nach nicht-blockierenden Befehlen | 
 + 
 +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 Wiederholungz.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 verwendenDer 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.1616654222.txt.gz
  • Last modified: 2021/03/25 07:37
  • by Ivo Blöchliger