Nachdem wir für unseren Raspberry Pi Roboterim ersten Teil die grundlegenden Funktionen definiert haben, wollen wir diese nun nutzen, indem wir ihn einer gezogenen Linie folgen lassen. Dafür bringen wir zwei optische Infrarot Sensoren (Line Follower: TCRT5000) an der Karosserie des Robots an. Wird die Linie verloren, so wird automatisch in einem Winkel von 45° (anpassbar) auf beiden Seiten danach gesucht. Wurde nichts gefunden, so stoppt der Roboter.
Dieses Tutorial setzt voraus, dass die Funktionen des ersten Roboter Tutorials bereits implementiert wurden. Falls nicht, solltest du zuerst dem vorherigen Tutorial folgen, bevor du hier fortfährst.
Als weiteres Zubehör werden in diesem Tutorial lediglich zwei Line Follower Module benötigt (und natürlich Female-Female Jumper Kabel. Zum befestigen habe ich außerdem Heißkleber benutzt. Als Linie eignet sich besonders schwarzes Isolierband.
Es ist möglich auch mehr als zwei IR Line Follower Sensoren zu nutzen, allerdings muss dann auch der Code entsprechend bearbeitet werden. Falls du das Projekt so nachbauen, wie ich es gemacht habe, empfiehlt es sich bei zwei Sensoren zu bleiben.
Hier kannst du schon mal ein Video sehen, wie der Roboter dann später einer Linie folgen kann:
Der TCRT500 (Datenblatt) als Modul hat 4 Pins: VCC, GND und einen analogen und digitalen Ausgang. Der analoge Output ist in diesem Fall unwichtig, da wir anhand des digitalen Pins bereits erkennen können, ob der Sensor sich über einer Linie befindet. Darüber hinaus befindet sich auch eine LED, welche leuchtet, falls sich keine Linie darunter befindet (siehe nachfolgende Bilder).
Bevor wir die Sensoren anbringen, rät es sich diese zu verbinden: Dazu habe ich beide mit ein wenig Heißkleber an den Seiten aneinander befestigt. Nachdem dieser getrocknet ist, habe ich jeweils die beiden VCC und GND Pins mit einem Draht aneinander gelötet, damit weniger Kabel benötigt werden. Nach dem Anbringen der Jumper Kabel, habe ich mit weiterem Heißkleber die zusammengefügten Module an das Vorderrad der Karosserie geklebt. Dabei ist wichtig, dass der Abstand zum Boden nicht zu groß wird. Du solltest die perfekte Höhe vor dem Anbringen testen (bei mir passt genau ein Finger darunter).
Der weitere Anschluss an den Raspberry Pi ist sehr einfach: VCC wird wie üblich an den 3.3V Pin des Raspberry Pi’s angeschlossen, GND an GND und die digitale Ausgabe (D0) an einen freien GPIO Pin. Ich habe dafür GPIO 6 (rechts) und 19 (links) gewählt.
Mit den vorher angebrachten Motoren und unserem Motor Treiber IC, sieht der schematische Aufbau nun so aus:
Um der Linie zu folgen gibt es verschiedene Modi, welche geprüft werden: Falls beide Sensoren die Linie erkennen, so wird einfach geradeaus weiter gefahren, falls nur einer der beiden Sensoren die Linie erkennt, so wird ein wenig in die andere Richtung gefahren. Sobald wieder beide Sensoren etwas erkennen, wird wieder geradeaus gefahren. Falls keiner der beiden Sensoren etwas erkennt, so wird ein einem Bereich (degrees_to_search) in beiden Seiten gesucht. Falls etwas gefunden wurde, wird fortgefahren wie davor. Falls nicht, so endet die Suche und der Roboter bleibt stehen.
Zunächst wechseln wir also wieder in den vorher erstellten Ordner, um eine weitere Datei zu erstellen. Diese wird später für alle Aktionen des Roboters verantwortlich sein und jene steuern.
GPIO.setmode(GPIO.BCM) line_follow_pin_left=19 line_follow_pin_right=6 GPIO.setup(line_follow_pin_left, GPIO.IN) GPIO.setup(line_follow_pin_right, GPIO.IN) status_left = bool(GPIO.input(line_follow_pin_left)) # False: not on line or sensor too distant from bottom status_right = bool(GPIO.input(line_follow_pin_right))