Einfacher Linienfolger - So folgt ein Roboter einer Linie
Der einfachste Linienfolger ist, wenn man es genau nimmt, gar kein Linienfolger, sondern ein Kantenfolger. Besitzt der Roboter einen Bodensensor zum Unterscheiden von hellen und dunklen Untergründen, so ist es möglich den Roboter an der Kante entlang der Linie folgen zu lassen.

Das Grundprinzip des Kantenfolgers (Linienfolger mit nur einem Sensor) ist in der Abbildung dargestellt. Der IR-Sensor detektiert das vom Untergrund reflektierte Licht und gibt dies in Form eines Messwertes zurück. In der Abbildung sind die Messwerte des Sensors auf dem Roboter rot angegeben. In diesem Beispiel gilt, je heller der Untergrund, desto größer der Messwert. Mithilfe der Messwerte muss der Roboter entscheiden, wo sich die Linienkante befindet und welche Richtung er fahren muss. Hierfür gibt es verschiedene Algorithmen.

3-Stufen-Algorithmus
Für eine einfache Motorregelung zum Folgen der Linie können für den Roboter, bzw. den Messwert, drei verschiedene Fälle unterschieden werden:
- Fall A Der Sensor ist im Wesentlichen neben der Linie und detektiert viel IR-Licht (z.B. Messwert: 900). Der Roboter sollte mehr nach links zur Linie fahren.
- Fall B Der Sensor ist hauptsächlich über der Linie und detektiert wenig IR-Licht (z.B. Messwert: 180). Der Roboter sollte mehr nach rechts zur Linienkante fahren.
- Fall C Der Sensor befindet sich zur Hälfte über der Linie und ist somit ungefähr über der Kante (z.B. Messwert: 550). Der Roboter kann einfach geradeaus fahren.
Ein Algorithmus zur Steuerung des Roboters (ohne Fall C) könnte folgendermaßen aussehen:
// Pseudocode für einen 2-Stufen-Kantenfolger
wertKante = 600 // Wert muss angepasst werden
wiederhole dauerhaft
wertIr = messenIrSensor()
wenn (wertIr > wertKante) // Fall A
fahrenLinks()
sonst wenn (wertIr <= wertKante) // Fall B
fahrenRechts()
Kalibrierung
Bleibt die Frage, wie der Schwellert für die Linienkante ermittelt wird, der Roboter also kalibriert werden kann. Der einfachste, wenn auch nicht genaueste Weg wäre mit Hilfe der seriellen Schnittstelle den Maximalwert und den Minimalwert des reflektieren IR Lichts für die Linie bzw. die Fläche daneben zu bestimmen. Der Mittelwert aus beiden Werten sollte der Linienkante entsprechen und kann dann als Konstante in das Programm eingefügt werden.
Pseudocode zum Kalibrieren
Ein besserer Ansatz ist das automatische Kalibrieren des Bodensensors. Hierfür dreht sich der Roboter auf der Stelle über der Linie und ermittelt automatisch den maximalen und den minimalen Messwert.
// Psedocode zum Kalibrieren des Bodensensors
minWert = 1023 // Initialisieren der minimalen und maximalen Werte
maxWert = 0 // des Bodensensors. Werden später überschrieben.
dreheLinks() // Motoren zum Linksdrehen aktivieren
wiederhole 100 mal
wertIr = messenIrSensor() // reflektiertes IR Licht messen
wenn (wertIr < minWert) // aktueller IR-Wert kleiner, als `minWert`
minWert = wertIr // `minWert` mit aktuellem IR Wert überschreiben
wenn (wertIr > maxWert) // aktueller IR-Wert größer, als `maxWert``
maxWert = wertIr // `maxWert` mit aktuellem IR Wert überschreiben
dreheRechts() // zurückdrehen und weiter messen
wiederhole 200 mal
wertIr = messenIrSensor()
wenn (wertIr < minWert)
minWert = wertIr
wenn (wertIr > maxWert)
maxWert = wertIr
Der Kanten-Algorithmus funktioniert am besten, wenn der Roboter langsam fährt!
Der vorgestellte 3-Stufen-Regler führt in der Regel zu einem sehr unruhigen, wackligen Fahrverhalten. Damit der Roboter geschmeidiger, mit weniger Zick-Zack-Bewegungen der Linie folgt, lohnt es sich den P-Regler zum Linenfolgen zu verstehen.