Benötigte Materialien:
Mehrere programmierbare Unterrichtsroboter, die mit einem Linienfolgesensor (z. B. Farbsensor) und einem Abstandssensor (z. B. Ultraschallsensor) ausgestattet sind (z. B. Calliope mini mit Erweiterungen, LEGO Mindstorms EV3/SPIKE Prime, Ozobot mit Umgebungsinteraktion)
Eine Linie auf dem Boden (z. B. mit schwarzem Tape auf hellem Untergrund)
Eine blockbasierte Programmierumgebung für die verwendeten Roboter (z. B. MakeCode, Open Roberta Lab, Scratch-basierte Umgebungen)
Optional: Arbeitsblätter zur Planung und Dokumentation der Programmierstrategien und/oder zur Erstellung von Struktogrammen
Ablauf der Unterrichtseinheit (Beispiel):
Einführung (ca. 15 Minuten):
Besprechung des Konzepts des autonomen Fahrens und dessen Anwendungen im Alltag, evtl. Video.
Vorstellung der verwendeten Roboter, ihrer Sensoren (Linienfolgesensor und Abstandssensor) und Aktoren (Motoren). Es wäre vorteilhaft, wenn die Lernenden bereits Vorerfahrung mit der Aufgabe des Linienfolgers haben. Dann kann man in dieser Aufgabe sehr gut an das Vorwissen anknüpfen.
Erklärung der Aufgabenstellung: Die Roboter sollen in einer Gruppe autonom einer Linie folgen und dabei einen sicheren Abstand zueinander wahren.
Einzelarbeit/Partnerarbeit – Grundlagen (ca. 30-45 Minuten):
Linienverfolgung: Die Schülerinnen und Schüler entwickeln und testen Programme, mit denen ihre Roboter selbstständig der Linie folgen können. Hierbei können verschiedene Ansätze erprobt werden, z. B. reaktives Folgen basierend auf dem direkten Linienkontakt.
Abstandsmessung: Die Schülerinnen und Schüler lernen, wie der Abstandssensor funktioniert und wie sie die gemessenen Werte in ihrer Programmierumgebung auslesen können. Sie können einfache Programme schreiben, die den gemessenen Abstand anzeigen.
Gruppenarbeit – Entwicklung der Abstandsregelung (ca. 45-60 Minuten):
Die Schülerinnen und Schüler arbeiten in kleinen Gruppen zusammen (zwei bis drei Roboter pro Gruppe).
Sie entwickeln Strategien, wie der Abstand zwischen den Robotern geregelt werden kann.
Dies beinhaltet Überlegungen wie:
Welcher Abstand soll eingehalten werden?
Wie soll die Geschwindigkeit angepasst werden, wenn der Abstand zu gering oder zu groß wird? (z. B. langsamer werden, schneller werden, beibehalten)
Die Gruppen implementieren ihre Strategien in ihren Programmen, indem sie die Werte des Abstandssensors nutzen, um die Geschwindigkeit der Motoren zu steuern.
Testphase und Optimierung (ca. 30-45 Minuten):
Die Gruppen testen ihre Programme, indem sie ihre Roboter in einer Reihe entlang der Linie fahren lassen.
Sie beobachten das Verhalten der Roboter und identifizieren Probleme (z. B. zu geringer Abstand, ruckartige Bewegungen).
Anschließend optimieren sie ihre Programme, um ein flüssiges und sicheres Fahren in der Gruppe zu erreichen. Dabei kann es hilfreich sein, kleine Arbeitsgruppen zu bilden und regelmäßige individuelle Rückmeldungen zu geben.
Präsentation und Reflexion (ca. 15-20 Minuten):
Die Gruppen präsentieren ihre Lösungsansätze und die Ergebnisse ihrer Testfahrten.
Gemeinsame Reflexion und Unterrichtsgespräch über die Herausforderungen beim autonomen Fahren in der Gruppe, die Rolle der Sensoren und die Bedeutung einer präzisen Programmierung. An dieser Stelle können auch sehr gut reale Probleme und Gefahren beim autonomen Fahren thematisiert werden.
Eine Diskussion über mögliche Weiterentwicklungen und Anwendungen (z. B. in Logistik oder Verkehr) können folgen oder den Abschluss bilden.
Differenzierungsmöglichkeiten:
Vereinfachung: Für Schülerinnen und Schüler mit weniger Programmiererfahrung können einfachere Roboter und Programmierumgebungen verwendet werden. So gibt es Modelle, bei denen der Programmblock zum Linienfolgen beispielsweise als Befehl oder Verhalten auf Tastendruck abrufbar ist. Der Fokus kann zunächst auf dem reinen Linienfolgen liegen, bevor die Abstandsregelung implementiert wird.
Erweiterung: Fortgeschrittene Schülerinnen und Schüler können mit Code arbeiten, oder auch komplexere Regelalgorithmen entwickeln (z. B. proportionale Regelung), die auf genaueren Berechnungen des Abstands und der Geschwindigkeitsanpassung basieren. Möglich wäre auch, das Überholen von langsameren Robotern einzubauen oder auf unerwartete Hindernisse zu reagieren.
Blockbasierter Beispielcode für Roboter mit Farb- und Ultraschallsensor:
Dieses Beispiel verwendet eine vereinfachte Struktur, die in ähnlicher Form in vielen blockbasierten Programmierumgebungen umgesetzt werden kann. Die genauen Bezeichnungen der Blöcke können je nach verwendeter App oder Plattform variieren.
// Variablen definieren
Variable: SollAbstand = 20 (cm)
Variable: SicherheitsAbstand = 15 (cm)
Variable: BasisGeschwindigkeit = 50 (%)
Variable: AnpassenFaktor = 5 (%)
// Hauptschleife (wiederhole fortlaufend)
wiederhole fortlaufend
// 1. Linie folgen
Wenn Farbsensor erkennt Schwarz
Motor links: BasisGeschwindigkeit + AnpassenFaktor
Motor rechts: BasisGeschwindigkeit - AnpassenFaktor
Sonst Wenn Farbsensor erkennt Weiß
Motor links: BasisGeschwindigkeit - AnpassenFaktor
Motor rechts: BasisGeschwindigkeit + AnpassenFaktor
Sonst // Linie verloren
Motor links: 0
Motor rechts: 0
Ende Wenn
// 2. Abstand messen
Variable: AktuellerAbstand = Ultraschallsensor Wert (cm)
// 3. Geschwindigkeit anpassen basierend auf Abstand
Wenn AktuellerAbstand > SollAbstand + 5
// Abstand zu groß, beschleunigen
Motor links: Motor links + AnpassenFaktor
Motor rechts: Motor rechts + AnpassenFaktor
Sonst Wenn AktuellerAbstand < SicherheitsAbstand
// Abstand zu gering, verlangsamen
Motor links: Motor links - AnpassenFaktor
Motor rechts: Motor rechts - AnpassenFaktor
Ende Wenn
// Geschwindigkeitsbegrenzung (optional)
Wenn Motor links > 100
Motor links: 100
Ende Wenn
Wenn Motor rechts > 100
Motor rechts: 100
Ende Wenn
Wenn Motor links < 0
Motor links: 0
Ende Wenn
Wenn Motor rechts < 0
Motor rechts: 0
Ende Wenn
// Kurze Pause (optional, um Rechenlast zu reduzieren)
warte 0.1 Sekunden
Ende wiederhole
Erläuterung des Beispielcodes:
Variablen: Es werden Variablen für den gewünschten Soll-Abstand, einen Sicherheitsabstand, eine Basisgeschwindigkeit und einen Anpassungsfaktor für die Geschwindigkeitsänderung definiert.
Linienfolgen: Der Roboter nutzt den Farbsensor, um der schwarzen Linie zu folgen. Wenn der Sensor Schwarz erkennt, wird der äußere Motor leicht beschleunigt und der innere leicht verlangsamt, um den Roboter zur Linie zurückzusteuern. Bei Weiß ist es umgekehrt.
Abstandsmessung: Der Wert des Ultraschallsensors (oder eines anderen Abstandssensors) wird in der Variable AktuellerAbstand gespeichert.
Geschwindigkeitsanpassung:
Wenn der gemessene Abstand deutlich größer ist als der Soll-Abstand, werden beide Motoren leicht beschleunigt.
Wenn der gemessene Abstand unter den Sicherheitsabstand fällt, werden beide Motoren leicht verlangsamt.
Geschwindigkeitsbegrenzung: Dieser optionale Teil stellt sicher, dass die Motorwerte nicht über 100% oder unter 0% liegen.
Pause: Eine kurze Pause am Ende der Wiederholung kann helfen, die Rechenlast auf dem Roboter zu reduzieren.
Dieser Beispielcode dient als Grundlage und sollte vor Ort an die spezifischen Eigenschaften der verwendeten Roboter, Sensoren und Programmier- Apps angepasst werden. Die Schülerinnen und Schüler werden im Rahmen der Unterrichtseinheit experimentieren und ihre Programme schrittweise verbessern, um ein optimales autonomes Fahren in der Gruppe zu erreichen.
Unterrichtseinheiten wie diese bieten eine spannende Möglichkeit, digitale Kompetenzen, informatisches Denken, Problemlösen, Teamfähigkeit und das Verständnis für technologische Konzepte auf praxisnahe Weise zu fördern.