Voraussetzung ist eine erfolgreich durchgeführte und getestete Installation der Expertenvariante unserers Projektes anhand der Installationsanleitungen:
Der "Einzelspielmodus" ist für Oberstufe empfohlen, und kann optional mit der Expertenvariante (Orange) erweitert werden. Dies hier ist die Anleitung für die Expertenvariante.
Die Nutzeranleitung für die Basisvariante ist hier zu finden:
Im "Einzelspielmodus" kann jeder Schüler seine eigene künstliche Intelligenz trainieren.
Mit der Expertenversion ist es möglich, verschiedene Algorithmen der künstlichen Intelligenz / des maschinellen Lernens auszuprobieren und gegeneinander zu vergleichen.
Im bereitgestellten Orange Workflow sind beispielsweise drei Varianten vorkonfiguriert, es können jedoch jederzeit weitere Algorithmen hinzugefügt werden:
- Neuronales Netzwerk
- k-Nearest Neighbor
- AdaBoost
Pro Schüler wird 1 "Rennspiel-Calliope" benötigt, der direkt per USB an den Rechner des Schülers angeschlossen wird.
Diesen Schritt muss jeder Schüler durchführen.
Hierzu muss ein Calliope mini per USB an den Schülerrechner anschließen
MakeCode-Variante
- Die Datei
/ki-in-schulen-master/Calliope-Rennspiel/Makecode/rennspiel-funkgruppe1-makecode.hex
auf den per USB angeschlossenen Calliope mini kopieren. (Die Funkgruppe ist im Einzelspielmodus egal)
OpenRoberta-Variante
- Die Datei
/ki-in-schulen-master/Calliope-Rennspiel/OpenRoberta/rennspiel-openroberta.hex
auf den per USB angeschlossenen Calliope mini kopieren. (Die Funkgruppe muss beim Start auf 0 gewählt bleiben, damit das USB-Logging aktiv ist)
-
Windows: via Gerätemanager, wird als "USB Serial Device" angezeigt
-
Linux:
ls -al /dev/ttyACM*
ggf. Nutzer zur
dialout
Nutzergruppe hinzufügen, damit dieser auf den Calliope mini auch zugreifen darf.sudo usermod -aG <username> dialout
sudo adduser <username> dialout
-
Auf jedem Schülerrechner ausführen:
python ki-datenlogger.py <COM-Port>
(COM-Port in Schritt 2 herausgefunden) -
Startschuss für das Rennspiel auf dem "Rennspiel"-Calliope jedes Schülers. Die Schüler spielen das Rennspiel, so lange vorgegeben; dabei werden die Rohdaten per USB an den Schülerrechner übertragen. Am Ende ist eine beliebige Taste am Schülerrechner zu drücken, um das Datensammeln zu beenden und die Rohdaten in eine Datei zu speichern.
-
Im Unterverzeichnis
csv-rohdaten
werden die Rohdaten abgelegt unter dem angezeigten Dateinamen, bspw.ki-rennspiel-log-20210303111213.csv
-
Auf jedem Schülerrechner ausführen:
orange-canvas
(CSV-Datei in Schritt 3 gespeichert). Es startet das Programm Orange. -
Beim Start mit Open/Öffnen die Projektdatei
ki-trainieren-orange.ows
laden. (Diese liegt im Verzeichniski-in-schulen-master/Calliope-Rennspiel/Python/
)
-
In der grafischen Darstellung von links nach rechts sind die Schritte des Trainings dargestellt und können durch Doppelklicken auf die jeweiligen Knoten untersucht werden.
-
Bei dem Knoten "Rohdaten" (links oben) kann die im vorigen Schritt 3 erzeugte CSV-Datei geladen werden.
-
Danach läuft der Trainingszyklus automatisch, was durch ein Durchlaufen der roten Punkte durch den Graphen beobachtet werden kann.
-
Standardmäßig trainiert das Orange Projekt ein AdaBoost basiertes Modell. Das Projekt enthält auch Knoten für ein neuronales netzwerk und ein k nearest Neighbors (kNN) basiertes Modell. Weitere Algorithmen sind im Baukastensystem auf der linken Seite der Orange Nutzeroberfläche im Bereich "Models/Modelle" zu finden - fröhliches Experimentieren ist hier möglich!
-
Am Ende des Trainings - egal welcher Algorithmus - wird im Verzeichnis
modelle
eine Datei namensorange3-model.pkcls
erstellt.
Optionale Teilschritte
-
Das Orange Projekt enthält im Knoten "Trainieren und Speichern pures sklearn-Modell" auch das Python-Script der Basisvariante, sodass für entsprechend fortgeschrittene SuS auch entsprechender Einstieg in den Python-Code ermöglicht ist.
-
Diese Python-Skripte erstellen im Verzeichnis
modelle
ebenfalls Modelldateien, die bereits aus der Basisvariante des Projektes bekannt sind.- Pickle-Modelldatei (Beispiel-Dateiname)
sklearn-ows-modell-20210302221649.pkcls
- JSON-Modelldatei (Beispiel-Dateiname)
sklearn-ows-modell-20210302221649.json
- Pickle-Modelldatei (Beispiel-Dateiname)
Variante A: IQ-Test auf Schülergruppenrechner
-
Auf jedem Schülerrechner ausführen:
python ki-rennspiel.py orange3 <PKCLS-Datei>
(PKCLS-Datei in Schritt 4 gespeichert) -
Um zu sehen, wie gut oder schlecht die angelernte KI steuert:
- Turbo ausgeschaltet lassen (Standard)
- KI spielen lassen durch Drücken von Taste 2
-
Da es sich um ein zufallsgesteuertes Rennspiel handelt, wird für eine Auswertung der KI-Leistung das Rennspiel 50-mal durch die KI gespielt und dann der Medianwert der erreichten Punktzahl angezeigt:
- Turbo anschalten durch Drücken Taste T
- KI spielen lassen durch Drücken von Taste 2
- 50 Episoden werden durch die KI gespielt
- Medianwert der erreichten Punktzahl wird angezeigt.
Variante B: IQ-Test auf Calliope mini
Das trainierte neuronale Netzwerk kann auch direkt auf dem Calliope mini getestet werden. Dies erfordert jedoch die Durchführung der optionalen letzten Teilschritte im Schritt 4, die Nutzung des Python-Skript-Knotens. Ein Nutzung der weiteren KI-Algorithmen, die mit Orange möglich sind (beispielsweise kNN, AdaBoost etc.) ist auf dem Calliope mini nicht umgesetzt.
Projektziel ist es, die "Hirntransplantation" des trainierten KI-Modells für die SuS über die Oberfläche auf https://makecode.calliope.cc nachvollziehbar zu machen; Stand März 2021 verhinderte jedoch ein Bug in Makecode diese Variante.
Daher wurde im Projekt ein temporärer Behelfsmechanismus implementiert:
- Auf dem Schülergruppenrechner ins Verzeichnis wechseln:
ki-in-schulen-master/Calliope-Rennspiel/Python/iq-test-calliope/
- Auf dem Schülergruppenrechner ausführen:
python iq-test-erstellen.py -r <JSON-Modelldatei>
(Die JSON-Modelldatei ist eine in Schritt 4 erzeugte Modelldatei, bspw.sklearn-ows-modell-20210302221649.json
) - Die erzeugte Calliope Hex-Datei
iq-test-calliope.hex
kann auf einen Calliope mini kopiert werden - Die trainierte KI übernimmt die Steuerung im Rennspiel (manuelle Steuerung ist zusätzlich möglich)