Entwicklung einer 3D-Simulationsumgebung für autonome Fahrzeuge mit MATLAB/Simulink
Autor: Jonas Gerken
Art: Bachelorarbeit
Dauer: 24.06.2023 - 24.10.2023
Betreuer: Prof. Schneider
Einleitung
Im 6. und 7. Semester MTR haben die Studierenden die Aufgabe ein autonomes Fahrzeug im Maßstab 1:10 in einer Spur zu führen und einparken zu lassen. Die derzeitige Simulationsumgebung ist 2D. Der Student hat die Aufgabe diese Umgebung durch eine 3D-umgebung zu ersetzen, so dass zukünftig in MATLAB/Simulink die Kamera als Sensor simuliert werden kann. Die Auswertung des Kamerabildes ist nicht Teil der Bachelorarbeit.
Aufgabenstellung
- Einarbeitung in die bestehende Simulationumgebung.
- 3D-Simulation des Rundkurses (0)
- Schaffung der Schnittstelle Simulink-3D-Visualisierung
- Umstellung von SEN_KAM auf die 3D Simulation
- einfache Generierung der Spurparameter aus der 3D-Simulation (Parameter a, b, c)
- Regelung des Fahrzeugs auf dem Rundkurs in 3D
- 3D-Simulation des Rundkurs mit Kreuzung (1)
- Optional: Stopplinienerkennung
- Test der Umgebung
- Dokumentation nach wissenschaftlichem Stand im HSHL-Wiki
Anforderungen an die wissenschaftliche Arbeit
- Wissenschaftliche Vorgehensweise (Projektplan, etc.), nützlicher Artikel: Gantt Diagramm erstellen
- Zweiwöchentlicher Fortschrittsberichte (informativ)
- Projektvorstellung im Wiki
- Regeln zum Umgang mit SVN
- Studentische Arbeiten bei Prof. Schneider
- Anforderungen an eine wissenschaftlich Arbeit
SVN-Repositorium
Link: SVN URL: 3D_Simulation_AF
Getting Started
Projektplan
Modellieren der virtuellen Welt
Simulink Modell mit 3D Welt verknüpfen
Um in der 3D-Simulationumgebung ein Fahrzeug fahren zu lassen, muss ein bestehendes Simulink Modell mit der 3D Welt verknüpft werden.
Dazu gibt es in dem Simulink-Library-Browser den VR-Sink Block unter dem Simulink 3D Animation Reiter. (Abb. 14) Zum einfügen in das Simulink Modell wird der Block einfach per Drag and Drop in das Modell gezogen.
Als nächstes muss der VR-Sink konfiguriert werden. Dazu wird durch einen Doppelklick auf das VR-Sink das Parameter Fenster geöffnet. Unter dem folgenden Link sind die einzelnen Punkte in dem Parameter Fenster erklärt. VR-Sink
So wird unter dem Bereich Source File die gewünschte VRML-Datei hinzugefügt und auf der rechten Seite unter Car(Transform) bei rotation und translation ein Haken gesetzt.(Abb. 15)
Auf der linken Seite des VR-Sink sollten nun zwei Eingänge mit den Beschriftungen rotation und translation zu sehen sein. Für die benötigten Daten wird das Bus-Signal unter Darstellung abgegriffen und mit einem Bus-Selector in die Einzelnen Elemente aufgeteilt. In dem Bus-Selector werden die Elemente <ESM_x_I_f64>, <ESM_y_I_f64> und <ESM_psi_f64> ausgewählt. Dann müssen die x und y Elemente mit 100 Multipliziert werden um es an die 3D Simulation anzupassen.
Die Daten <ESM_x_I_f64> und <ESM_y_I_f64> und einer Konstanten z-Koordinate müssen über ein Mux Element zusammen geführt werden, da die VR-Sink Eingänge nur aus einem einzelnen Port verfügen. Die z-Koordinate ist für die 3D Darstellung nötig und besteht aus der Höhe des Fahrzeugs. In einer 3D-Simulationsumgebung kann ein Objekt, anders wie auf 2D-Ebene, in mehrere Richtungen gedreht werden. Dort kann ein Objekt um die x, y und z Achse rotiert werden. Ein VR Signal Expander wird benötigt, um den Drehwinkel (Rotation) in die 3D-Simulationsumgebung zu übertragen. Das Element <ESM_psi_f64> wird über den VR Signal Expender mit dem VR-Sink verbunden. So wird der Drehwinkel an den VR-Sink auch als Drehwinkel übermittelt.
Die fertige Verknüpfung ist in Abb. 17 zu sehen.
Kamera Bild erzeugen
Nach der Modellierung der 3D-Simulationsumgebung, ist der nächste Schritt die Kamera zu erstellen und ein Kamera-Bild zu erzeugen.
Für die Kamera wird ein "Viewpoint" verwendet. Allgemein ist ein Viewpoint in dem Simulink 3D World Editor ein Definierter Punkt, wie auf die erstellte 3D Welt geguckt werden soll. Viewpoints Einem Viewpoint können visuelle Informationen entnommen und in einem Simulink Modell weiter verarbeitet werden.
In dem Editor wird ein Viewpoint wie in Abb. 15 gezeigt erstellt. Dazu ist es wichtig diesen Viewpoint in einer Transform-Node zu erstellen. Das wird benötigt, um den Viewpoint in die richtige Position zu verschieben.
Da es die Kamera des Fahrzeugs sein soll, wird diese innerhalb der Car Group-Node erstellt.
- Rechtsklick auf children in der Car Group-Node
- Add Node auswählen
- Bindable auswählen
- Viewpoint auswählen
Zuletzt muss die Position des Viewpoints an das Fahrzeug angepasst werden. Außerdem wird der Winkel (Rotation) der Kamera unter der Transform_Node auf -1,396 eingestellt.(Abb. 16)
Kamera Bilder
Lastenheft
→ zurück zum Hauptartikel: Studentische Arbeiten