Gewichteter Mittelwert (Massenschwerpunkt) für mehrere Bodensensoren
Soll ein Roboter mit nur einem Sensor einer Linien folgen, so lässt sich das nur mit einem Trick realisieren: Der Roboter folgt der Linienkante und nicht der eigentlichen Linie. Stehen aber zwei oder mehr Bodensensoren zur Verfügung, ist es möglich der Linienmitte zu folgen. Außerdem können damit Kreuzungen und Verzweigungen erkannt werden oder es kann auf einem gezeichnetten Gitter navigiert werden.
Gewichteter Mittelwert
Bevor verschiedene Algorithmen zum Linienfolgen untersucht werden, ist es notwendig aus den Messwerten der einzelnen Bodensensoren einen einzelnen Wert zu berechnen. Dieser Wert soll die relative Position des Roboters zur Linienmitte angeben. Dies wird, wie bei der Bestimmung des Massenschwerpunkts auf einem Stab, mit dem gewichteten Mittelwert gemacht.
Massenschwerpunkt
Für den Massenschwerpunkt eines idealen Stabes mit den Massen , , ... an den Stellen , , ... gilt:
Beispiele für den Massenschwerpunkt eines Stabes
Werden an einem Stab von einem Meter Länge zwei Gewichte und mit einer Masse von jeweils 1 kg befestigt, so ist der Massenschwerpunkt des Stabes intuitiv genau in der Mitte bei 0,5 m.
![Massenschwerpunkt](/img/robotik/Schwerpunkt_05.png)
Wird die obige Gleichung verwendet, bestätigt sich die Intuition:
Wird das Gewicht am Ende des Stabes auf zwei Kilogramm erhöht, lässt sich vermuten, dass der Massenschwerpunkt bei Meter liegt.
![Massenschwerpunkt](/img/robotik/Schwerpunkt_067.png)
Diese Vermutung wird von der Gleichung ebenfalls bestätigt:
Im letzten Beispiel wird eine weitere Masse von 1 Kilogramm bei Metern platziert.
![Massenschwerpunkt](/img/robotik/Schwerpunkt_058.png)
Für diesen Fall kann nur noch mit der Gleichung der richtige Wert für den Massenschwerpunkt ermittelt werden:
Linienposition als gewichteten Mittelwert bestimmen
Zur Bestimmung der Linienposition wird ähnlich vorgegangen wie bei der Bestimmung des Massenschwerpunktes. Da es sich jedoch nicht um Massen, sondern um Sensorwerte handelt, muss die Gleichung ein wenig angepasst werden. Die verwendete verallgemeinerte Formel wird auch gewichteter Mittelwert genannt, da einzelne Werte mit Faktoren gewichtet werden und dann der Mittelwert gebildet wird.
Anstelle der Position der Massen (, , usw.) werden nun beliebige Gewichtungsfaktoren (, , usw.) verwendet und die Massen (, , usw.) werden durch die Sensorwerte (, , usw.) ersetzt.
Diese Gleichung bestimmt an welcher Position sich die Linie relativ zu den Sensoren befindet.
3pi+ / Zumo32u4
Bei den Pololu Robotern 3pi+ 32u4+ oder Zumo 32u4 wurden als Gewichtungsfaktoren die Werte , , , usw. gewählt. In der Konfiguration für nur 3 Bodensensoren (nur beim Zumo möglich) ergibt sich somit folgende Gleichung zur Bestimmung der Linienposition:
In der folgenden Abbildung ist exemplarisch dargestellt, welche Werte der gewichtete Mittelwert bei entsprechender Position der Sensoren über der Linie annehmen wird.
![Linienfolger mit 3 Bodensensoren](/img/robotik/BotOnLine3Sens.png)
In den Pololu-Bibliotheken für den 3pi+ und den Zumo gibt es die folgenden Befehle zum Auslesen der relativen Linienposition nach dem oben beschriebenen Verfahren des gewichteten Mittelwertes:
- 3pi+
- Zumo
#define NUM_SENSORS 5
sensors lineSensors; // Liniensensor-Objekt
unsigned int lineSensorValues[NUM_SENSORS]; // Array der Sensorwerte
int position = sensors.readLineBlack(lineSensorValues); // Linienposition
#define NUM_SENSORS 5
Zumo32U4LineSensors sensors; // Liniensensor-Objekt
unsigned int lineSensorValues[NUM_SENSORS]; // Array der Sensorwerte
int position = sensors.readLine(lineSensorValues); // Linienposition
Aufgaben
![Beispiel für den gewichteten Schwerpunkt mit 5 Sensoren](/img/robotik/exLineSensors.png)
Berechnen Sie für einen Roboter mit fünf Bodensensoren den gewichteten Mittelwert für die in der Abbildung dargestellten Sensorwerte. Verwenden Sie die oben genannten Gewichtungsfaktoren.
Bei welchem Wert für befindet sich die Linie genau unter dem Sensor S2?
Wo kann sich die Linie befinden, wenn das Ergebnis ist?
Wo kann sich die Linie befinden, wenn das Ergebnis ist?
Übertragen Sie das Beispielprogramm für die Liniensensoren auf ihren Pololu Roboter. Das Programm gibt als gewichteten Mittelwert die Linienposition mit Werten zwischen 0 und 4000 (2000 mittig über der Linie) auf dem Display aus.
Analysieren Sie, welche Werte für welchen Versatz ausgegeben werden und vergleichen Sie diese mit den Aufgaben 1. bis 4. Welchen Einfluss hat die Linienbreite auf das Ergebnis?