Linienfolger
Für einen Linienfolger braucht es Sensoren, welche die Linie erkennen können. Der Maqueen Plus V2 hat fünf Liniensensoren, welche schwarz/weiss unterscheiden können.
Dabei gilt:
- Schwarz
- Sensorwert 1
- Weiss
- Sensorwert 0
Die Sensoren sind wie folgt angeordnet und können mit line_sensor_all() ausgelesen werden:
Ein einfacher Ansatz für einen Linienfolger wäre, die Liniensensoren immer zu überprüfen und entsprechend die Motoren anzusteuern:
- Sensor M = 1
- Geradeaus fahren
- Sensor L1 = 1 und M = 0
- Linkskurve, da nun zu weit rechts
- Sensor R1 = 1 und M = 0
- Rechtskurve, da nun zu weit links
In Python würde das etwa so aussehen:
from microbit import *
from maqueen import *
while True:
sensoren = line_sensor_all()
if sensoren[2] == 1:
motor_run(Motor.ALL, 40)
elif sensoren[1] == 1:
motor_run(Motor.LEFT, 0)
motor_run(Motor.RIGHT, 40)
elif sensoren[3] == 1:
motor_run(Motor.LEFT, 40)
motor_run(Motor.RIGHT, 0)
Weil zuerst der mittlere Sensor M überprüft wird, ist bei den folgenden elif Bedingungen bereits sicher, dass M Null ist, da sonst die erste Bedingung zugetroffen hätte. Deshalb braucht es ein zusätzliches ... and sensoren[2]==0 nicht.
Dieser Ansatz funktioniert allerdings nicht zuverlässig 😭.
Problem des einfachen Linienfolgers
Erklären Sie kurz anhand der obigen Abbilgung, weshalb der einfache Linienfolger nicht zuverlässig funktioniert.