Zu Inhalt springen Zu Fußbereich springen

Robotik im Unterricht - Praxisbeispiele 2 - Der Linienfolger

Der Linienfolger als Aufgabe im Robotikunterricht ist eine der Standardaufgaben. Sie bietet mehrere Möglichkeiten zur Differenzierung, um Schülerinnen und Schüler in verschiedenen Schwierigkeitsstufen herauszufordern. Im folgenden Artikel finden sie die drei gängigsten Möglichkeiten zur Umsetzung eines Linienfolgers. Außerdem noch eine Erweiterung dieser Aufgabe, die sich dem Thema autonomes Fahren mit mehreren Robotern widmet.

Roboterfahrgestell mit Linie

1. Auf Linien reagieren - in drei Varianten

Der Einsatz von Robotern im Unterricht, um Linien zu folgen, bietet Lehrkräften eine hervorragende Möglichkeit, Schülerinnen und Schüler spielerisch an die Grundlagen der Robotik und Programmierung heranzuführen. Diese Unterrichtseinheit eignet sich besonders gut für den Einstieg, da sie konkrete, sichtbare Ergebnisse liefert und gleichzeitig wichtige Konzepte vermittelt. Unter folgendem Link finden Sie verschiedene Beispiele, auch für Linienfolger: Video Übersichtsseite Open Roberta für Lehrkräfte

Roboterfahrgestell Nahaufnahme mit Linie auf Boden im Klassenzimmer
Roboterfahrgestell mit Linie auf Boden im Klassenzimmer © ISB

Was ist ein Linienfolger-Roboter?

Ein Linienfolger-Roboter ist, wie der Name schon sagt, ein kleiner Roboter, der selbstständig einer auf dem Boden gezeichneten Linie folgen kann. Die Linie kann auch auf vorgefertigten Matten gezeichnet sein, oder man klebt z. B. mit schwarzem Klebeband eine Line auf den Boden oder auf einen großen Tisch. Die Aufgabe mag auf den ersten Blick einfach erscheinen, beinhaltet jedoch eine Reihe technischer und programmiertechnischer Herausforderungen. Diese Aufgabe fördert nicht nur das Verständnis für Technik, sondern auch wichtige überfachliche Kompetenzen:

  • Problemlösefähigkeit: Schüler lernen, komplexe Aufgaben in kleinere, lösbare Schritte zu zerlegen.

  • Ausdauer: Die Fehlersuche und Optimierung erfordert Geduld und Beharrlichkeit.

  • Teamarbeit: In Gruppenarbeit können sich die Schülerinnen und Schüler gegenseitig unterstützen und voneinander lernen.

Die Kernelemente dieser Programmieraufgabe

  • Sensorauswertung: Der Roboter muss „sehen” können, wo die Linie ist. Dies geschieht meist durch den Farb- oder Lichtsensor.

  • Motorsteuerung: Basierend auf den Sensordaten müssen die Motoren so gesteuert werden, dass der Roboter auf der Linie bleibt.

  • Entscheidungslogik: Der Roboter muss „entscheiden”, ob er geradeaus fahren, nach links oder rechts lenken soll.

  • Geschwindigkeitsanpassung: Um präzise der Linie zu folgen, muss die Geschwindigkeit angepasst werden, besonders in Kurven.

Herausforderungen für die Schülerinnen und Schüler

Es ist wichtig, dass Sie als Lehrkräfte die möglichen Schwierigkeiten kennen, um gezielt unterstützen zu können:

  • Sensorkalibrierung: Die richtige Einstellung der Sensoren kann knifflig sein, ist aber entscheidend für den Erfolg. So muss beispielsweise der Abstand des Sensors passen, um genaue Ergebnisse liefern zu können. Je nach Lichteinfall und Intensität des Lichts, reagiert der Sensor anders. Dies muss in den Einstellungen passend eingestellt werden. Man findet die Einstellungen je nach verwendetem Modell durch Ausprobieren und Testen.

  • Algorithmenentwicklung: Das Erstellen einer effektiven Steuerungslogik erfordert logisches Denken und kann anfangs durchaus herausfordernd sein..

  • Fehlersuche: Das Identifizieren und Beheben von Problemen im Code ist eine wichtige, aber auch oft frustrierende Aufgabe. Hier sind einerseits Ausdauer, andererseits aber auch Unterstützung gefordert. Man benötigt als Lehrkraft z. B. Videos oder erklärende Materialien wie Codebeispiele, um gezielt unterstützen zu können. Oft können auch Mitschülerinnen und Mitschüler helfen.

  • Hardwareverständnis: Das Verstehen und korrekte Anschließen der Sensoren und Motoren kann eine Hürde darstellen. Beim Anschuss können immer wieder Fehler passieren. Als Lehrkraft sollte man wissen, „wo man hinsehen muss”. Hilfreich sind hier die Einführungsvideos und Aufbauanleitungen der Hersteller oder auch Fortbildungen zum Thema. Auch die BayernLabs bieten hier interessante Fortbildungen an.

Die Programmierung eines Linienfolgers

Grundsätzlich geht es beim Linienfolger darum, einen Roboter so zu programmieren, dass er einer Linie auf dem Boden folgt. Man kann dies mit einem, zwei, drei oder vier Sensoren machen; je mehr Sensoren, desto präziser und schneller kann der Roboter fahren. Zuerst die einfachste Form: mit einem Farbsensor, der oft auch die Helligkeit oder Reflektion messen kann.

Im Wesentlichen gibt es dabei drei Programmieransätze für einen Linienfolger mit einem Sensor:

  1. Der einfache (binäre) Linienfolger (auch „Bang-Bang” genannt)

  2. Der Drei-Wege-Linienfolger (basierend auf Reflektionsbereichen)

  3. Der Proportionale Linienfolger

Lassen Sie uns diese Varianten im Detail betrachten. Diese drei Varianten stellen gleichzeitig verschiedene Schwierigkeitsgrade im Unterricht dar.

1. Der einfache (binäre) Linienfolger

  • Konzept: Dieser Linienfolger ist der einfachste Typ. Er nutzt den Sensor, um nur zwischen zwei Zuständen zu unterscheiden: Ist der Sensor auf der Linie (z. B. Schwarz) oder ist er neben der Linie (z. B. Weiß)? Oft spricht man bei dieser Variante auch von der „Booleschen Logik” oder „Bang-Bang”-Steuerung.

  • Programmierlogik: Das Programm verwendet eine einfache Wenn/Dann/Sonst (If/Else) Bedingung.

    • Wenn der Sensor die Farbe Schwarz erkennt, macht der Roboter eine Linkskurve. Dabei wird dabei oft nur der linke Motor aktiviert, um nach rechts wegzudrehen.

    • Sonst (falls der Sensor die Farbe Weiß erkennt), macht der Roboter eine Rechtskurve. Dabei wird der rechte Motor aktiviert, um nach links zur Linie hinzudrehen.

  • Verhalten: Der Roboter folgt dabei eigentlich nicht exakt der Linie, sondern pendelt ständig zwischen dem schwarzen Linienbereich und dem weißen Untergrund hin und her. Dieses Verhalten kann man als „torkelnd” bezeichnen. Das liegt daran, dass der Roboter bei der kleinsten Abweichung sofort eine starke Korrektur macht.

Beispielcode (Programmierblöcke vereinfacht):

  Wiederhole unendlich:
    Lese Farbsensor
    Wenn Farbe = Schwarz:
      Steuere (Richtung: Links)
    Sonst:
      Steuere (Richtung: Rechts)
  Ende Wiederholung

2. Der Drei-Wege-Linienfolger (basierend auf Reflektionsbereichen)

  • Konzept: Anstatt nur Farben zu erkennen, nutzt dieser Ansatz die Fähigkeit des Sensors, die Helligkeit oder Stärke des reflektierten Lichts zu messen. Der Bereich der möglichen Reflektionswerte (z. B. von 0 für sehr dunkel bis 100 oder 255 für sehr hell) wird in drei Zonen unterteilt. Zum Beispiel: sehr dunkel (auf der Linie), mittelhell (am Rand der Linie) und sehr hell (neben der Linie auf dem Untergrund).

  • Programmierlogik: Es wird eine verschachtelte Bedingung (Wenn/Sonst Wenn/Sonst) verwendet.

    • Wenn die Reflektion sehr niedrig ist (z. B. kleiner als 40%, also auf der dunklen Linie), macht der Roboter eine Linkskurve.

    • Sonst Wenn die Reflektion mittel ist (z. B. kleiner als 90%, also teilweise auf der Linie oder am Rand), macht der Roboter eine Rechtskurve.

    • Sonst (wenn die Reflektion hoch ist, z. B. größer als 90%, also komplett auf dem hellen Untergrund), fährt der Roboter geradeaus.

  • Verhalten: Dieser Ansatz ermöglicht es dem Roboter, geradeaus zu fahren, wenn er komplett neben der Linie ist. Das kann theoretisch helfen, Linienunterbrechungen zu überqueren. Allerdings ist der Roboter immer noch anfällig für starke Kurskorrekturen, auch bei kleinen Abweichungen, da er nur zwischen drei festen Zuständen unterscheidet. Für Linienunterbrechungen muss das Programm oft manuell angepasst werden, was es unzuverlässig macht.

  • Beispielcode (Programmierblöcke vereinfacht):

  Wiederhole unendlich:
    Lese Reflektionssensor (%)
    Wenn Reflektion < 40:
      Steuere (Richtung: Links)
    Sonst Wenn Reflektion < 90:
      Steuere (Richtung: Rechts)
    Sonst:
      Steuere (Richtung: Geradeaus)
  Ende Wiederholung

3. Der Proportionale Linienfolger

  • Konzept: Dieser Ansatz ist feiner als die binären Varianten. Er nutzt nicht nur feste Zustände oder Bereiche, sondern die graduelle Änderung der Reflektionswerte (Grautöne). Je weiter der Sensor vom „Sollwert” (dem idealen Reflektionswert, der meist am Rand der Linie gemessen wird) abweicht, desto stärker wird die Korrektur. Dies basiert auf dem Prinzip der proportionalen Steuerung, welches auch mit „Fuzzy Logic” in Verbindung gebracht wird, da es nicht nur „Schwarz” oder „Weiß” gibt, sondern „mehr oder weniger zutreffend” (heller, dunkler).

  • Programmierlogik: Das Programm berechnet fortlaufend die „Abweichung” (oder den „Fehler”) des aktuellen Sensorwerts vom vordefinierten Sollwert. Dieser Abweichungswert wird dann mit einem „Kp-Wert” (einem Proportionalitätsfaktor oder „Verstärkungsfaktor”) multipliziert. Das Ergebnis dieser Berechnung ist der Lenkwert oder die „Korrektur”, die an die Motorsteuerung übergeben wird.

    • Berechnung: Korrektur = (Aktueller Sensorwert - Sollwert) * Kp.

  • Verhalten: Der Roboter folgt der Linie sanfter und mit weniger starkem Pendeln als bei den binären Varianten. Die Stärke der Lenkkorrektur passt sich automatisch an, je nachdem, wie weit der Roboter von der Linie abweicht. Der Sollwert muss passend zur Linie und dem Untergrund ermittelt werden. Der Kp-Wert beeinflusst, wie schnell und stark der Roboter korrigiert; er muss ebenfalls eingestellt werden, passend zur Linie, den zu erwartenden Kurvenradien, und auch zum jeweiligen Robotermodell und seinen Sensoren. Im unten beschriebenen Video wird angemerkt, dass neuere Software-Updates diesen Ansatz manchmal unruhig machen können. Man kann diesen Ansatz in einem größeren Programm als wiederholbare „Methode” oder „Block” implementieren.

  • Beispielcode (Programmierblöcke konzeptuell):

  Definiere Sollwert (z.B. 60)
  Definiere Kp (z.B. 1.5)

  Wiederhole unendlich:
    Lese Reflektionssensor (%)
    Setze Variable Abweichung = Lese Reflektionssensor (%) - Sollwert
    Setze Variable Korrektur = Abweichung * Kp
    Steuere (Richtung: Korrektur)  // Lenkblock nimmt den berechneten Wert
  Ende Wiederholung

Videos

Aus rechtlichen Gründen kann an dieser Stelle nicht auf YouTube-Videos verlinkt werden. Mit den folgenden Sucheingaben finden Sie beispielhaft einschlägige Videos aber sehr schnell, falls Sie YouTube verwenden möchten.

Die drei Konzepte des Linienfolgers im Beispiel:

  • Arten von Linienfolger mit 1 Sensor für Spike Prime - Review of Line Follower types with one sensor

Tipps für den Unterricht

  • Beginnen Sie mit einfachen, geraden Linien und steigern Sie schrittweise die Komplexität mit erst weiten, dann engeren, Kurven.

  • Ermutigen Sie die Schüler, ihre Lösungen zu präsentieren und zu erklären.

  • Nutzen Sie Fehler als Lernchancen und besprechen Sie gemeinsam mögliche Lösungsansätze.

  • Planen Sie genügend Zeit für Experimente und Optimierungen ein.

2. Autonomes Fahren mehrerer Roboter (Gruppenarbeit)

Diese Unterrichtseinheit zielt darauf ab, den Schülerinnen und Schülern die Grundlagen des autonomen Fahrens näherzubringen. Dabei lernen sie, ihre Roboter so zu programmieren, dass diese selbstständig einer Linie folgen und gleichzeitig einen sicheren Abstand zum vorausfahrenden Roboter einhalten. Die Einheit fördert das Verständnis für Sensortechnologie (Abstandssensoren), die Steuerung von Aktoren (Motoren) in Abhängigkeit von Sensorwerten sowie das logische Denken und die Problemlösefähigkeit in einer kooperativen Lernumgebung. Im folgenden Video sehen Sie eine Lösung für diese Aufgabe.

Im Video sehen sie einen einfachen Linienfolger, der von den Lernenden mit der "Bang-Bang"- Programmierung (nur zwei Zustände) programmiert wurde. Zusätzlich wurde in der Aufgabe der Abstandssensor programmiert. Mit dieser Programmierung kann das autonome Fahren auf der Straße simuliert werden. Die Fahrgestelle stoppen, sobald ein Hindernis auftaucht. Nach dem Verschwinden des Hindernisses wird die Fahrt automatisch fortgesetzt (Stop and Go). © ISB

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.

Weiterführende Links

Im Artikel Robotik im Unterricht - Praxisbeispiele 1 erfahren sie mehr über weitere Möglichkeiten, Roboter gewinnbringend im Unterricht einzusetzen. Pädagogische und technische Grundlagen zum Thema Robotik im Unterricht erhalten sie hier.

Weitere Beiträge

Alle ansehen (6)

Wenn Bildung alle mitnimmt: Gendersensibel unterrichten

Frauen und Mädchen sind in der Informatik immer noch unterrepräsentiert. Ein gendersensibler Informatikunterricht kann helfen, diese Ungleichheiten abzubauen und allen Geschlechtern gleiche Lernmöglichkeiten zu bieten.

Zu Seitenstart springen Über mebis