lehrkraefte:snr:informatik:glf24:robotik

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:snr:informatik:glf24:robotik [2024/12/09 14:42] – [Aufgabe 1] Olaf Schnürerlehrkraefte:snr:informatik:glf24:robotik [2025/02/05 20:41] (current) Olaf Schnürer
Line 1: Line 1:
 +~~NOTOC~~
 +
 +====== Robotik (Micropython auf EV3 mit VSCode) ======
 +
 +  * https://www.youtube.com/watch?v=LDhJ5I89H_I
 +  * eventuell "Parkour robots" oder https://www.youtube.com/watch?v=29ECwExc-_M
 +  * eventuell medizinische Roboter (Steuerung eines Roboterarms)
 +
 +<WRAP center round important>
 +  * Die Roboter sind vorsichtig zu behandeln.
 +  * Die Roboter fahren NUR auf den Fussboden (damit sie nicht herunterfallen). Bitte vorsichtig sein beim Bewegen im Raum.
 +  * Verboten ist insbesondere das Umbauen der Roboter.
 +
 +Preis pro Roboter: ca. 500 CHF
 +</WRAP>
 +
 +<WRAP center round info>
 +  * Jeder Roboter hat eine Nummer. Am Ende der Lektion ist jeder Roboter wieder an dem Platz mit seiner Nummer.
 +  * Programmiert wird an den Stehtischen auf den eigenen Laptops.
 +  * Nur dann auf dem Fussboden sitzen, wenn man etwas am Roboter macht.
 +</WRAP>
 +
 +===== Unser Roboter (Lego Mindstorms EV3) =====
 +
 +{{:lehrkraefte:snr:informatik:glf23:robotik:roboter-rechts-vorne.jpg?400|}}
 +{{:lehrkraefte:snr:informatik:glf23:robotik:roboter-links-vorne.jpg?400|}}
 +{{:lehrkraefte:snr:informatik:glf23:robotik:roboter-hinten.jpg?400|}}
 +{{:lehrkraefte:snr:informatik:glf23:robotik:roboter-oben.jpg?400|}}
 +{{:lehrkraefte:snr:informatik:glf23:robotik:roboter-oben-display.jpg?400|}}
 +
 +
 +
 +<!--
 +===== Ein paar Vorüberlegungen =====
 +
 +  * {{:lehrkraefte:snr:informatik:glf23:robotik:robotik-sv.pdf|Robotik-Aufgaben}}
 +-->
 +===== Basics =====
 +
 +  * [[lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:einrichten-und-erstes-programm|Einrichten (Roboter, VSCode) und erstes Programm]]
 +  * [[lehrkraefte:snr:informatik:glf22:robotik:aufraeumen|Aufräumen des Roboters]]
 +<!--  * [[lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:programm-struktur|Programmstruktur und wichtige Code-Schnipsel]]-->
 +
 +<hidden Automatische Vervollständigung in Visual Studio Code beim Roboterlen>
 +  * eventuell: ''pip install pybricks''
 +  * Die Datei ''settings.json'' im ''.vscode''-Verzeichnis des Projekts sollte so aussehen: 
 +<code python>
 +// Place your settings in this file to overwrite default and user settings.
 +{
 + "files.eol": "\n",
 + "debug.openDebug": "neverOpen",
 + "python.linting.enabled": true,
 + "python.languageServer": "Default"
 +}
 +</code>
 +Bemerkung: Zuvor hatte es mit "en" statt "Default" geklappt, nun nicht mehr.
 +</hidden>
 +
 +===== 1. Woche =====
 +
 +==== Aufgabe 0 ====
 +
 +<WRAP center round todo>
 +Den folgenden Code ans Ende des Programms ''main.py'' kopieren und den Code ausführen (Ctrl+F5).
 +
 +<code python>
 +# Bitte sicherstellen, dass dein Computer im tech-lab-Netz ist und nicht in Schule SG o.ä..
 +
 +ev3.speaker.say(text="Hello I am Robby the robot")
 +
 +links = Motor(Port.A)
 +rechts = Motor(Port.B)
 +
 +# Checke die Kabelverbinungen! 
 +# Wenn du die obigen Einstellungen nutzen willst:
 +# - Der linke Motor muss mit Port A (am EV3-Brick) verbunden sein.
 +# - Der rechte Motor muss mit Port B verbunden sein.
 +
 +</code>
 +</WRAP>
 +
 +==== Aufgabe 1 ====
 +
 +<WRAP center round todo>
 +Den Roboter so programmieren, dass er genau einen Meter geradeaus fährt (auf 5 cm genau). Am Boden gibt es 1-Meter-Markierungen (oder mit Metermass abmessen).
 +
 +Verwende die folgenden Befehle:
 +<code python>
 +links.run_angle(drehgeschwindigkeit, alpha, wait=False)
 +</code>   
 +Bewegt den linken Motor, also das linke Rad, mit 
 +  - ''drehgeschwindigkeit'': Drehgeschwindigkeit in Grad/s; sinnvoll ist z. B. 120
 +  - ''alpha'': Drehwinkel in Grad
 +  - ''wait=False'': Der Roboter wartet nicht, bis die Drehung vollständig ausgeführt ist; der Roboter kann sofort einen weiteren Befehl verarbeiten.
 +
 +<code python>
 +rechts.run_angle(drehgeschwindigkeit, alpha, wait=True)   
 +</code>   
 +  * Dasselbe mit dem rechten Motor.
 +  * Wegen ''wait=True'' wird gewartet, bis die Raddrehung beendet ist.
 +
 +<code python>
 +links.stop()
 +rechts.stop()
 +</code>
 +Stoppt die Motoren (vielleicht nicht unbedingt nötig).
 +</WRAP>
 +
 +==== Aufgabe 2 ====
 +
 +<WRAP center round todo>
 +Das vorherige Programm so erweitern, dass der Roboter genau einen Meter geradeaus fährt, sich dann umdreht und zum Ausgangspunkt zurückfährt. 
 +
 +Toleranz: 10 cm Abstand bis zum Startpunkt.
 +</WRAP>
 +
 +===== 2.+3.(+Anfang 4.) Woche: Basisbewegungen durch Ausmessen und Kalibrieren =====
 +  * [[lehrkraefte:snr:informatik:glf24:robotik:einfache-bewegungen|Vorwärtsfahren, Drehen auf der Stelle, Kreisbogenfahren]]
 +
 +===== 4. Woche: Line Follower: Helligkeitssensor verwenden =====
 +  * [[lehrkraefte:snr:informatik:glf22:robotik:line-follower|Line Follower]]
 +
 +===== Mit dem Heber (Greifarm, Schaufel) etwas aufheben und woanders ablegen =====
 +  * [[lehrkraefte:snr:informatik:glf22:robotik:schaufel|Schaufel]]
 +
 +
 +===== Abstandssensor verwenden =====
 +
 +Verwende den Abstandssensor in sinnvoller Weise (zum Beispiel als "Rasenmäher": wenn der Roboter zu nah an der Wand ist, soll er etwas rückwärts fahren, drehen, und dann wieder weiterfahren).
 +
 +Hilfe: https://pybricks.com/ev3-micropython/examples/robot_educator_ultrasonic.html?highlight=ultrasonic
 +
 +<!--
 +===== Basisbewegungen durch Ausmessen und Kalibrieren =====
 +  * [[lehrkraefte:snr:informatik:glf22:robotik:einfache-bewegungen|Vorwärtsfahren, Drehen auf der Stelle, Kreisbogenfahren]]
 +-->
 +<!--  * [[lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:fahrwerk-ausmessen|Ausmessen und Kalibrieren des Fahrwerks]]-->
 +<!--
 +
 +(weiteres auskommentiert)
 +-->
 +<!--
 +Challenges (bitte mich nach Hinweisen fragen):
 +  * Prügeli-Challenge: Nutze den Hebearm des Roboters, um den Roboter einen Stift aufheben zu lassen.
 +  * Rasenmäher-Challenge: Verwende den Ultraschall-Sensor, um den Roboter wie einen "Rasenmäher-Roboter" im Raum umherfahren zu lassen.
 +  * Line follower-Challenge: Verwende den Licht- bzw. Farbsensor des Roboters, um diesen einer Klebestreifenlinie folgen zu lassen.
 +
 +Drivebase benutzen:
 +  * [[lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:drivebase|Benutzung des DriveBase-Objekts]]
 +
 +Lichtsensor:   
 +  * [[lehrkraefte:blc:informatik:glf22:robotik-mit-svcode:lichtsensor|Lichtsensor]]
 +
 +Line follower:
 +   * [[lehrkraefte:blc:informatik:glf22:linefollower|Line follower]]
 +
 +Weiter mit line follower:
 +   * [[lehrkraefte:blc:informatik:glf22:robotik-mit-vscode:kantemessen|Wie genau sieht der Roboter eine schwarz-weiss Kante?]]
 +   * [[lehrkraefte:blc:informatik:glf22:robotik-mit-vscode:gutelinefollowerfunktion|Eine gute Berechnungsfunktion für die Drehgeschwindigkeit aus der Helligkeitsdifferenz für den Linefollower]]
 +   * Weiter mit dem [[lehrkraefte:blc:informatik:glf22:linefollower|Line follower]]
 +
 +Prügeli-Challenge:
 +   * [[lehrkraefte:blc:informatik:glf22:robotik-mit-vscode:pruegli-challenge|Prügeli-Challenge]]
 +-->
 +
 +
 +