Hintergrund |Mein erstes konkretes Projekt für das vehikel[eins] ist ein Linienfolger, also ein Fahrzeug, das eine auf dem Boden befindliche Line abfährt. Abgesehen von der recht simplen Algorithmik, eignet sich dieses Projekt gut zum Einstieg, weil es die verlässliche Funktion der gesamten, doch etwas komplex gewordenen "Infrastruktur" des Systems erfordert, ich hier also zum ersten Mal alles "closed-loop" betreiben muss - incl. Bildverarbeitung. Als neue Komponente dafür ist eine Frame-Grabber-Karte in meinen PC gekommen. Der Grabber digitalisiert das Videosignal vom Kameraempfänger und stellt es als einzelne Frames in MATLAB zur Verfügung, ich kann dann darauf rechnen und die extrahierten Informationen per RS-232 an meine Basisstation geben. Diese reicht die Steuerbefehle per Funk an das Vehikel weiter, das sich dann – wenn alles klappt – entsprechend verhält und dadurch wiederum den visuellen Input des Systems verändert.
Algorithmus | Nach Spielereien mit wesentlich komplizierteren Ansätzen bin ich zu einem erstaunlich simplen Verfahren gekommen, um die Aktivierung der Motoren zu regeln. Nachdem ich per Schwelle ein 8-bit Graustufenframe von der Kamera in ein 1-bit Schwarzweißbild übersetzt habe, bestimme ich die Koordinaten des Schwerpunktes (center of gravity, COG) dieses Bildes und rechne dann die x-Koordinate des COG in die Aktivierung der Motoren um. Eine Abweichung der x-Koordinate des COG nach rechts von der Bildmitte führt dabei zu einer proportionalen Erhöhung der Drehgeschwindigkeit des linken Rades und einer proportionalen Verminderung Drehgeschwindigkeit des rechten Rades. Eine Abweichung des COG nach links von der Bildmitte hat entsprechend die umgekehrte Konsequenz. Befindet sich der COG in der Mitte der x-Dimension des Bildes, drehen beide Motoren gleich schnell.
Ergebnis |Das folgende Video zeigt zum einen von oben, wie das Vehikel einen kleinen Parcours, den ich mit weißem Klebeband auf schwarze Pappe geklebt habe, "autonom" abfährt. Das linke Bild des unteren Bilddrittels zeigt die Fahrt parallel aus Sicht des Vehikels. Links unten im Video ist nun die 1-bit Repräsentation des aktuellen Frames zu sehen, in grün eingezeichnet der COG, durch eine Linie verbunden mit der Mitte des unteren Bildrandes. Das original Kamerabild rechts zeigt in gleicher Weise den COG, dessen Koordinaten sind in den ersten beiden Zeilen angegeben, darunter die daraus errechnete Aktivierung des rechten und linken Motors in Prozent der Maximalgeschwindigkeit.
Elektronik
Zuletzt aktualisiert am Freitag, den 02. September 2011 um 23:07 Uhr