Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Robotik ====== * {{lehrkraefte:blc:informatik:glf20:robotik:intro-robotik.pdf}} ===== Begriffe, Definitionen ===== * https://de.wikipedia.org/wiki/Roboter * https://de.wikipedia.org/wiki/Aktor * https://de.wikipedia.org/wiki/Sensor ===== Robotik im Simulationsmodus ===== ==== 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. ^ 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 0 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 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:23by Ivo Blöchliger