Die schwarze Linie ist ein Klassiker im Bereich der Robotik und insbesondere beim Lego Mindstorms EV3. Der Roboter soll mithilfe eines Farbsensors einer auf dem Boden aufgezeichneten schwarzen Linie folgen. Dies ist eine großartige Einstiegsübung, um die Grundlagen der Sensorik, der Steuerung und der Programmierung zu erlernen. Aber was passiert, wenn sich der Parcours ändert und plötzlich farbige Abschnitte auftauchen? Kann der EV3 auch diese Herausforderung meistern? In diesem Artikel zeigen wir Ihnen, wie Sie Ihren EV3 so programmieren, dass er nicht nur einer schwarzen Linie folgt, sondern auch mit anderen Farben auf dem Weg umgehen kann.
Die Grundlagen: Schwarze Linie folgen mit dem EV3
Bevor wir uns dem Farb-Chaos widmen, ist es wichtig, die Grundlagen des „Black Line Followings” zu verstehen. Der Schlüssel dazu ist der Farbsensor. Er misst die Helligkeit des Lichts, das von der Oberfläche reflektiert wird. Eine schwarze Linie reflektiert weniger Licht als der helle Untergrund. Der Sensor liefert also einen niedrigeren Wert über der schwarzen Linie.
Die Programmierung erfolgt meist mit einem PID-Regler (Proportional-Integral-Derivativ-Regler) oder einer einfacheren Variante, dem Proportionalregler. Dieser Regler vergleicht den gemessenen Wert des Farbsensors mit einem Sollwert. Dieser Sollwert liegt idealerweise zwischen den Werten für Schwarz und Weiß. Der Regler berechnet dann eine Korrektur, die an die Motoren weitergegeben wird. Je größer die Abweichung vom Sollwert, desto stärker die Korrektur. Dadurch lenkt der Roboter zurück auf die Linie.
Ein einfaches Beispiel mit einem Proportionalregler sieht so aus:
- Sensorwert messen: Lies den Wert des Farbsensors aus.
- Fehler berechnen: Berechne die Differenz zwischen Sensorwert und Sollwert.
- Korrektur berechnen: Multipliziere den Fehler mit einem Proportionalfaktor (Kp).
- Motoren steuern: Füge die Korrektur zur Geschwindigkeit des einen Motors hinzu und subtrahiere sie von der Geschwindigkeit des anderen Motors.
Dieses grundlegende Programm sorgt dafür, dass der Roboter der schwarzen Linie folgt. Die Feinabstimmung des Proportionalfaktors (Kp) ist entscheidend für ein stabiles Fahrverhalten.
Die Herausforderung: Farbiges Terrain
Nun kommt der spannende Teil: Was passiert, wenn plötzlich farbige Abschnitte auf der Strecke auftauchen? Der Farbsensor reagiert natürlich anders auf Rot, Grün oder Blau als auf Weiß. Die Folge: Der Roboter verliert die Linie und driftet ab.
Um diese Herausforderung zu meistern, benötigen wir eine Strategie, die den Roboter nicht nur auf Helligkeitsunterschiede, sondern auch auf Farben reagieren lässt. Wir müssen das Programm so erweitern, dass es zwischen der schwarzen Linie und den anderen Farben unterscheidet und entsprechend reagiert.
Lösungsansätze: Farberkennung und adaptive Steuerung
Es gibt verschiedene Ansätze, um das Problem des farbigen Terrains zu lösen:
- Farberkennung und Umschaltung: Der EV3-Farbsensor kann nicht nur die Lichtintensität, sondern auch die tatsächliche Farbe erkennen. Wir können das Programm so gestalten, dass es, wenn eine bestimmte Farbe erkannt wird (z.B. Rot), in einen anderen Modus wechselt. In diesem Modus könnte der Roboter beispielsweise eine kurze Strecke geradeaus fahren oder eine vordefinierte Kurve ausführen. Sobald die Farbe nicht mehr erkannt wird, kehrt er zurück zum normalen „Black Line Following”.
- Adaptive Sollwertanpassung: Anstatt den Sollwert statisch festzulegen, können wir ihn dynamisch an die erkannte Farbe anpassen. Wenn der Sensor beispielsweise Rot erkennt, erhöhen wir den Sollwert, da Rot in der Regel heller ist als Schwarz. Dadurch wird der Roboter weniger stark abgelenkt.
- Kombination aus Farbe und Helligkeit: Wir können sowohl die Farbinformation als auch die Helligkeitsinformation des Sensors nutzen. Wenn beispielsweise eine Farbe erkannt wird, aber die Helligkeit immer noch niedrig ist (ähnlich wie bei Schwarz), ignorieren wir die Farbinformation und folgen weiterhin der Linie.
Beispielcode: Farberkennung und Umschaltung
Hier ist ein Beispielcode in der EV3-Programmiersprache, der die Farberkennung und Umschaltung demonstriert:
# Konstanten
SCHWARZ_SCHWELLE = 30
ROT_FARBE = 5 # EV3 Farbcode für Rot
GESCHWINDIGKEIT_GRUND = 30
KP = 0.5 # Proportionalfaktor
# Motoren definieren
MOTOR_LINKS = Port.B
MOTOR_RECHTS = Port.C
FARBSENSOR = Port.S3
# Funktion zum Linie folgen
def linie_folgen():
sensorwert = FARBSENSOR.reflected_light_intensity
fehler = sensorwert - SCHWARZ_SCHWELLE
korrektur = fehler * KP
motor_links_geschwindigkeit = GESCHWINDIGKEIT_GRUND + korrektur
motor_rechts_geschwindigkeit = GESCHWINDIGKEIT_GRUND - korrektur
MOTOR_LINKS.run(motor_links_geschwindigkeit)
MOTOR_RECHTS.run(motor_rechts_geschwindigkeit)
# Hauptschleife
while True:
farbe = FARBSENSOR.color()
if farbe == ROT_FARBE:
# Wenn Rot erkannt wird, fahre eine kurze Strecke geradeaus
MOTOR_LINKS.run_time(GESCHWINDIGKEIT_GRUND, 500) # 500 ms
MOTOR_RECHTS.run_time(GESCHWINDIGKEIT_GRUND, 500)
else:
# Ansonsten folge der Linie
linie_folgen()
Dieser Code ist ein einfaches Beispiel und kann natürlich noch verbessert werden. Er zeigt jedoch das Grundprinzip: Wenn der Sensor Rot erkennt, fährt der Roboter eine kurze Strecke geradeaus. Andernfalls folgt er der schwarzen Linie.
Tipps und Tricks für den Erfolg
- Kalibrierung des Farbsensors: Stellen Sie sicher, dass der Farbsensor korrekt kalibriert ist. Dies ist besonders wichtig, wenn Sie mit verschiedenen Farben arbeiten.
- Optimierung der Parameter: Der Proportionalfaktor (Kp) und andere Parameter müssen sorgfältig optimiert werden, um ein stabiles Fahrverhalten zu gewährleisten.
- Experimentieren Sie mit verschiedenen Algorithmen: Probieren Sie verschiedene Algorithmen und Strategien aus, um die beste Lösung für Ihre spezifische Strecke zu finden.
- Testen Sie unter realen Bedingungen: Testen Sie Ihr Programm unter realen Bedingungen mit unterschiedlichen Lichtverhältnissen und Oberflächen.
- Verwenden Sie eine stabile Stromversorgung: Eine stabile Stromversorgung ist wichtig für eine zuverlässige Funktion des Roboters.
Fazit
Das „Black Line Following” mit dem Lego Mindstorms EV3 ist eine großartige Möglichkeit, die Grundlagen der Robotik zu erlernen. Die Erweiterung auf farbiges Terrain bietet eine zusätzliche Herausforderung und ermöglicht es Ihnen, Ihre Programmierkenntnisse zu vertiefen. Mit den hier vorgestellten Ansätzen und Tipps können Sie Ihren EV3 so programmieren, dass er auch mit dem Farb-Chaos auf der Strecke umgehen kann. Viel Spaß beim Experimentieren und Optimieren!