Entwicklung einer 3D-Simulationsumgebung für autonome Fahrzeuge mit MATLAB/Simulink

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Abb. 1: Simulationsumgebung

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

  1. Einarbeitung in die bestehende Simulationumgebung.
  2. 3D-Simulation des Rundkurses (0)
  3. Schaffung der Schnittstelle Simulink-3D-Visualisierung
  4. Umstellung von SEN_KAM auf die 3D Simulation
  5. einfache Generierung der Spurparameter aus der 3D-Simulation (Parameter a, b, c)
  6. Regelung des Fahrzeugs auf dem Rundkurs in 3D
  7. 3D-Simulation des Rundkurs mit Kreuzung (1)
  8. Optional: Stopplinienerkennung
  9. Test der Umgebung
  10. Dokumentation nach wissenschaftlichem Stand im HSHL-Wiki

Anforderungen an die wissenschaftliche Arbeit

SVN-Repositorium

Link: SVN URL: 3D_Simulation_AF

Getting Started

Projektplan

Abb. 2: 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.

Abb. 14: Zeigt ein VR-Sink Block

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)

Abb. 15: Parameter-Fenster


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.

Abb. 16: Simulink Modell


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.

Abb. 15: Viewpoint/Kamera hinzufügen

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.

  1. Rechtsklick auf children in der Car Group-Node
  2. Add Node auswählen
  3. Bindable auswählen
  4. Viewpoint auswählen

Zuletzt muss die Position des Viewpoints an das Fahrzeug angepasst werden. Der Winkel (Rotation) der Kamera wird unter der Transform_Node auf -1,396 eingestellt, um diese 10 Grad nach unten zu neigen. (Abb. 16)

Abb. 16: Kamera Position einrichten


Um das Bild des Viewpoints zu nutzen wird ein VR to Video Block aus der Simulink 3D Animation Bibliothek dem Simulink Modell hinzugefügt. Dieser Block wird unter dem Subsystem Sen Sensoren offline in dem Subsystem SenKam - Kamera erstellt.

Mit einem Doppelklick auf diesen öffnet sich das Parameter Fenster.

Source File: VRML-Datei unter Browse auswählen

Unter Video output signal dimensions wird die gewünschte Videobildgröße angegeben.

Video output signal dimensions: [478 752]

Dann auf Apply klicken um die Änderungen zu speichern.

Abb. 25 zeigt dazu das Parameter Fenster.

Abb. 25: VRtoVIdeo Block Einstellen



Zur Bildverarbeitung könnte das OpenCV Interface genutzt werden. In Matlab ist das Problem, dass nur unter Matlab ein Bild/Video geladen und verarbeitet werden kann. Das OpenCV Interface für Simulink ist erst ab der Matlab Version 2020a verfügbar. Dort könnte ein OpenCV Code über den OpenCV Importer in ein Simulink Block umgewandelt werden.

OpenCV Interface


Um zwischen 2D und 3D zu wechseln wurde noch ein Schalter in dem Simulink Modell hinzugefügt (Abb. 26).

Kamera Bilder

Abb. 1: Kamera Darstellung
Abb. 2: Kamera Darstellung




Lastenheft



→ zurück zum Hauptartikel: Studentische Arbeiten