Überblick
Mithilfe einer CMUcam3 wurde eine autonome Spurführung für das isupia Modellfahrzeug realisiert.
Eine solche Spurführung erfordert zum einen eine zuverlässige Erkennung der relevanten Spur, zum anderen eine möglichst hohe Aktualisierungsrate für die Gewährleistung einer dynamischen Verfolgung. Bei der stark eingeschränkten Rechenkapazität der CMUcam stehen sich die beiden Anforderungen gegenüber. Eine Übertragung des Bildes auf ein Steuergerät ist aufgrund der UART-Schnittstelle in der erforderlichen Geschwindigkeit auch nicht möglich. Daher bestand das Ziel, nur die notwendigsten Funktionen auf der Kamera selbst zu implementieren und die Weiterverarbeitung auf dem wesentlich leistungsstärken Steuergerät des Modellfahrzeuges unterzubringen.
Auf der Kamera befindet sich daher nur die Kantendetektion in welcher 5 einzelne Zeilen nach Spurmarkierungen durchsucht werden. Die gefundenen Markierungen werden als Bildkoordinaten an das Steuergerät übermittelt. Dort erfolgt die Umrechnung von Bild- in reale Koordinaten. In diesen Koordinaten wird nach einer Spurlinie gesucht und Punkte verworfen die nicht zu der Linie gehören. Wenn vorhanden wird die mathematische Beschreibung der Linie an einen Trackingalgorithmus übergeben. Dieser wiederum übergibt die Parameter der verfolgten Linie an die Spurregelung in welcher schließlich der erforderliche Lenkwinkel bestimmt wird.
Des Weiteren war eine Anforderung die Kamera innerhalb der 1:5 Modellfahrzeugkarosserie unterzubringen wodurch sich Einschränkungen im Blickfeld ergaben. Mit der normalen CMUcam-Linse ist es auf dieser niedrigen Höhe nicht mehr möglich die beiden Spuren gleichzeitig zu erkennen. Der Algorithmus orientiert sich daher an einer Spurlinie und berechnet die Spurmitte aus der bekannten Spurbreite.
Kantendetektion
Nach den Spurlinien wird in 5 vorher festgelegten Bildzeilen von unten nach oben gesucht. Als Hinweis auf eine Spurmarkierung gelten zwei dicht beieinanderliegende Peaks im vertikalen Zeilengradienten (Gx). Durchsucht man die Zeile von rechts nach links so erscheint zunächst ein positiver Peak für den Übergang vom dunklen Untergrund auf die helle Spurmarkierung. Liegt ausgehend von diesem Index links ein Gradientenpeak in negative Richtung so handelt es sich um einen möglichen Spurpunkt.
Der Zeilengradient wird mit Hilfe des Sobel-Operators erstellt. Neben der ausgewählten Zeile sind dazu die beidem Nachbarzeilen oberhalb und unterhalb notwendig. Für jeden x-Wert (bis auf Zeilenanfang und -ende) wird der Gradient berechnet und in einen Vektor geschrieben. Der erstellte Vektor wird nach dem beschriebenen Gradientenmuster durchsucht. Da in einer Zeile mehrere Spurmarkierungen vorhanden sein können, müssen zusätzliche Entscheidungskriterien festgelegt werden. Einerseits wird nach den beiden Kanten mit den größten Gradientenwerten gesucht. Andererseits ist auch die Position des Mittelpunktes entscheidend. Die Position wird verglichen mit der X-Koordinate des letzten gefundenen Punkt aus der Zeile darunter. Für die unterste Zeile wird zu Beginn die Bildmitte als Vergleichswert gesetzt. Durch diesen Vergleich mit der vorangegangenen Zeile werden Punkte bevorzugt die annähernd in einer Reihe liegen (Abbildung rechts).
Alternativ könnten auch mehrere Punkte je Zeile weitergegeben werden und die Zuordnung der einzelnen Spuren auf dem Steuergerät erfolgen. Der Rechenaufwand wäre dadurch kaum höher.
Alle gefunden Spurmarkierungen werden zur Weiterverarbeitung mit der seriellen Schnittstelle an das Steuergerät übertragen.
Koordinatentransformation
Zur Bestimmung der realen Position gegenüber einer Spur muss bekannt sein wie die Kamera die Umgebung abbildet. Das könnte über Parameter wie Brennweite und Bildsensorgröße berechnet werden. Eine andere Möglichkeit ist einen Umrechnungsfaktor aus einer Bildaufnahme mit bekannten Positionen zu bestimmen. Im Bild ist zu erkennen dass die Kameralinse nicht verzerrungsfrei ist. Das bedeutet dass die Abbildung des realen Bildes auf den Sensor nicht nach dem einfachen Strahlensatz erfolgt. Der Fehler der durch die Verzerrung entsteht ist jedoch relativ gering und wird daher ignoriert.
pixelFactor = cameraHeight / (X * (row – rowCenter))
Die Ausrichtung der Kameraachse ist annähernd parallel zur Bodenebene. Eine stärkere Neigung ist auch nicht notwendig da sich der relevante Bildbereich dadurch nicht vergrößert. Die Umrechnung von Bildpixeln in Fahrzeugkoordinaten erfolgt daher ohne Berücksichtigung des Kamerawinkels. Bei einer leichten Neigung kann der entstehende Fehler bei der Umrechnung vernachlässigt werden.
X = cameraHeight / (a * pixelFactor) + cameraOffsetX
Y = cameraHeight * b / a + cameraOffsetY
Nach der Koordinatentransformation liegen alle gefunden Spurmarkierungen mit ihren realen Koordinaten vor. Durch die Addition mit dem Offsetwerten für die Kameraposition wird der Ursprung dieses neuen Koordinatensystems auf den Mittelpunkt der Hinterachse verschoben.
Spurerkennung
Im nächsten Schritt wird versucht aus den gefunden und umgerechneten Punkten eine Spurbeschreibung zu erstellen. Grundsätzlich müssen nicht alle der übermittelten Koordinaten der gleichen Spur angehören da die Kantendetektion auf der Kamera eine solche Entscheidung nicht vornimmt. Die Spurerkennung vergleicht daher alle Punkte miteinander und berechnet, sofern vorhanden, die bestmöglich passende Spurbeschreibung. Punkte die dieser Spur nicht zugehören werden verworfen. Die einfachste Beschreibung ist die einer Gerade welche durch die Punkte gelegt wird. In der ersten Umsetzung wurde diese Variante gewählt. Möglich wäre auch eine Beschreibung als Polynom oder Kreisbogen so dass die Kurvenkrümmung berechnet werden kann.
Spurtracking
Die in der Spurerkennung berechnete Spur eignet sich noch nicht für eine autonome Fahrzeugsteuerung da sie zu fehleranfällig wäre. Ein Spurtracking verhindert z.B. ein plötzliches Springen auf eine andere Spur oder eine unplausible Spuränderung durch den Parametervergleich mit der bestehenden Spurbeschreibung. Zudem kann eine kurzeitige Unterbrechung der Spurdetektion überbrückt werden. Ein weiterer Effekt ist die Filterung der Parameter wodurch eine saubere Spurführung möglich wird.
Spurregelung
Als Spurregler dient, in vereinfachter Form, ein Lateral/Kurswinkelregler wie beschrieben bei T. MÜLLER, D. ROHLEDER; „Automatisches Spurfahren auf Autobahnen“.
Bei einer Geraden als Spurmodell fällt die Addition der Vorsteuerung auf den Lenkwinkel weg.