Ein "Line-Follower"
Wie so oft in der Softwareentwicklung gibt es auch für den "Line-Follower" unzählige Möglichkeiten, ihn zu programmieren. Wenn euer Roboter den Parcours zuverlässig bewältigt, ist euer Code auf alle Fälle gut.
Das Kernproblem des Line-Followers liegt auf der Hand: wann soll er nach rechts einschlagen und wann nach links?
Dabei kann folgende Überlegung helfen:
Im Grunde reicht es, wenn der Roboter nach rechts biegt, wenn unter seinem Lichtsensor das schwarze Band liegt, und andernfalls nach links. Warum?
Trifft euer Roboter von außerhalb des Parcours auf die schwarze Linie, schwenkt er zwar nach rechts (weg vom Parcours), aber steuert gleich dagegen (nach links), sobald er das schwarze Band verlässt. Mit dem notwendigen Feintuning sollte euer Roboter somit imstande sein, an der äußeren Grenze des schwarzen Bandes entlang den Parcours zu absolvieren.
Realisieren kann man das mit einer eigentlich ganz simplen Berechnung, bei der man allerdings wissen muss, dass der Lichtsensor bei Schwarz ganz niedrige und bei helleren Farben entsprechend höhere Werte liefert. Abhängig von der sogenannten Kalibrierung meldet der Farbsensor bei Schwarz etwa 0 und über normalem Boden eine Lichtstärke von etwa 50. Ziehen wir von der Hälfte der Spannweite - 25 - den gemessenen Lichtwert ab, ergibt die Subtraktion bei Schwarz 25-0=25 und bei hellem Boden 25-50=(-25). Leiten wir diese Werte an die Standardsteuerung, lenkt der Roboter also bei Schwarz nach rechts (25 > 0) und bei hellem Boden nach links (-25 < 0). Wollen wir das Einschlagen (bis zum Maximalwert von +/-100 verstärken), müssen wir lediglich das Ergebnis der Subtraktion mit 4 multiplizieren.
Ein brauchbares, wenn auch nicht ausgefeiltes, aber dafür sehr kurzes Beispiel seht ihr hier:
Dennoch bleiben noch einige Fragen offen, die es gilt, zu beantworten und gewissenhaft zu testen:
- Würde der Mindstorm-Roboter den Parcours auch erfolgreich zurücklegen, falls er von innerhalb des Bandes starten müsste?
- Würde er auch einen Parcours bewältigen, bei dem noch spitzere Ecken zu meistern wären?
- Was müsste man ändern, falls nur ein rotes statt schwarzes Band zur Verfügung stünde?
- Funktioniert der Roboter auch bei einer schnelleren Fahrtgeschwindigkeit korrekt?
- ...