ASF Gruppe A5
Im Rahmen des Informatik II Praktikums der Studienrichtung Mechatronik, 2. Semester des Sommersemesters 2014 an der Hochschule Hamm-Lippstadt bestand die Aufgabe, ein autonom fahrendes Fahrzeug auf Grundlage von Lego Mindstorms und der Programmiersprache BricxCC zu konstruieren.
Die Betreuung des Praktikums wurde von Prof. Dr.-Ing. Ulrich Schneider übernommen.
Praktikumsziele und Projektvorgaben
Unter der Vorgabe eine möglichst detailgetreue Nachbildung eines Automobils zu konstruieren, sind die Ziele des Praktikums das praktische Arbeiten und Anwenden der Informatik sowie der Erwerb von Grundkenntnissen in der Bildverarbeitung und Regelungstechnik. Zudem werden Erfahrungen in NXC als auch Matlab vertieft. Darüber hinaus soll das Praktikum das Lösen und Koordinieren von komplexen Aufgaben im Team schulen.
Als Vorgabe hierfür dient ein LEGO Mindstorms-Set zur Konstruktion des Fahrzeuges, bestehend aus einer programmierbaren Steuereinheit, maximal drei Aktuatoren und einer NXT-Kamera v4. Da sich der Fahrzeugaufbau an der Realität orientieren soll, ist vorgegeben, dass das Fahrzeug über eine angetriebene als auch eine lenkende Achse verfügt. Des Weiteren sind der Achsabstand gleich 2 sowie das Spurweitenverhältnis gleich 1 und der maximale Radeinschlagswinkel gleich 40° zu setzen.
Realisierung
Die nachfolgende angefügte Datei führt die Bearbeitung der Praktikumstermine graphisch auf.
Dabei symbolisieren die rechtsstehenden Balken den Zeitraum, in dem die jeweilige Aufgabe bearbeitet wurde.
Hardwareseitiger Lösungsansatz
Die Lenkung des Fahrzeugs erfolgt über die Vorderachse, der Antrieb über die Hinterachse. Zur besseren Wendigkeit ist ein Differentialgetriebe mit einer Übersetzung von i = 1.5 integriert. Die NXT-Kamera v4 ist zudem über dem rechten Rad des Fahrzeuges zur bestmöglichen Spurerkennung montiert.
Darüber hinaus ist die Kamera so angebracht, dass sie sich mit den Rädern bei der Lenkung drehen kann und so immer parallel zum aktuellen Radeinschlag steht.
Nebenstehend ist die Realisierung des Differentialgetriebes und des Antriebs [2] sowie der Lenkung inklusive Anbringung der Kamera [3] mit Hilfe von LEGO Digital Designer visualisiert.
Des Weiteren ist das Fahrzeug über ein Zahnradgetriebe stufenlos in seiner Länge um bis zu 60 mm auf eine Maximallänge von 340 mm erweiterbar, um einen erforderlichen Achsabstand einzuhalten.
Ferner wurde der NXT Intelligent Brick so an der Fahrzeugkonstruktion angebracht, dass eine optimale Erreichbarkeit für den Benutzer gewährleistet ist und das Display auch während der Fahrt bestmöglich eingesehen werden kann [1].
Die Fahrzeugkennwerte sind zudem nachfolgender Tabelle zu entnehmen.
Fahrzeugparameter
Parameter | Wert |
---|---|
Fahrzeuglänge | 280 - 340 mm |
Fahrzeugbreite | 172 mm |
Spurweite vorne | 142 mm |
Spurweite hinten | 146 mm |
Achsabstand | 217 - 277 mm |
Max. Radeinschlagswinkel Links | 40° |
Max. Radeinschlagswinkel Rechts | 40° |
Konzept
Konzept der Fahrzeugsteuerung ist es mit Hilfe der NXT-Kamera v4 einer Fahrbahnbegrenzung zu folgen. Dazu werden nach dem Starten in einer Schleife die Daten der Kamera eingelesen und ausgewertet sowie mögliche Störsignale herausgefiltert und die Daten verifiziert. Anschließend wird auf dieser Grundlage die Lenkung geregelt, welche einen Einfluss auf die Längsregelung besitzt. Umso größer der aktuelle Radeinschlagswinkel ist, umso kleiner ist die Leistung des Antriebs.
Die Kamera erkennt die Fahrbahnbegrenzung als mehrere aneinandergereihte Blobs. Diese sollen als Linie approximiert bestmöglich auf dem Sollwert liegen, sodass sich das Fahrzeug optimal in der Spur befindet. Liegt die approximierte Fahrbahnlinie nicht auf dem Sollwert, so ist entsprechend die Abweichung zwischen dem Ist- und Sollwert zu bestimmen und demzufolge die Lenkung zu regeln.
Softwareseitiger Lösungsansatz
Beim Starten des Programms wird zunächst die Kamera initialisiert sowie die Längs- und Querregelung gestartet. Mit Hilfe eines Button-Handlers lässt sich zudem zum einen das Programm korrekt beenden und zum anderen zwischen object- und linetracking wechseln.
Anschließend startet die Laufschleife. Die Kameradaten werden eingelesen und die Eckwerte sowie die Breite und Höhe der Blobs in den jeweiligen Arrays zwischengespeichert. Danach werden diese verifiziert, indem betrachtet wird, ob die Breite eines Blobs größer als ein Toleranzwert und kleiner als ein vorgegebener Wert für die maximale Linienbreite ist, um entsprechend zu kleine oder zu große Blobs herauszufiltern. Ebenfalls wird berechnet, wie sich der Wert im Vergleich zur letzten Aufnahme geändert hat. Ist die Änderung zu groß, ist der jeweilige Blob nicht zu bewerten. Liegt der Blob in den Toleranzbereichen, so wird seine Abweichung zur Sollmitte berechnet.
Bezüglich dieser Abweichungen wird eine Regulierungsgröße bestimmt, mit deren Hilfe zur Regelung der P- und D-Anteil bestimmt wird. Dieser errechnete Wert ergibt so schließlich die Stellgröße, welche von der Querregelung zur Steuerung der Leistung des Motors verwendet wird.
In Abhängigkeit des aktuellen Radeinschlagwinkels wird zudem die maximale Geschwindigkeit der Antriebsachse bestimmt, indem ausgewertet wird, wie weit die Lenkung in eine jeweilige Richtung ausgelenkt ist.
Projektteam
- Raphael Blessau
- Dokumentation
- Videoschnitt
- Präsentation
- Programmierung
- Statische Prüfverfahren
- Marcus Irmer
- Konstruktion
- Bauanleitung und 3D-Modell
- Programmierung
- Dynamische Prüfverfahren
- Robin Kirsch
- Konzeptionierung
- Visualisierung
- Programmierung
- Statische Prüfverfahren
Weblinks
- BricxCC
- BricxCC NXC debugging
- MathWorks - MATLAB
- RWTH - Mindstorms NXT Toolbox for MATLAB
- LEGO Digital Designer
- LEGO Mindstorms
- Differentialgetriebe
- Autonome RC-Car Spurführung
- Hochschule Hamm-Lippstadt
Literaturnachweise
Benedettelli, D.: 2007, Programmierung LEGO NXT Roboter mit NXC
Debacher, U.: 2010, NXC. URL: Debacher ( 10. Mai 2014 )
Feedback zum Artikel
--Ulrich Schneider (Diskussion) 14:30, 19. Jun. 2014 (CEST)
- Inhaltlich noch im Entstehen :-)
→ zurück zum Hauptartikel: Autonomes Fahren SoSe14