|
|
(23 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 1: |
Zeile 1: |
|
| |
|
| '''Autor:''' Jonas Gerken<br/>
| |
|
| |
| [[Datei:Rundkurs_Null.jpg|mini|400px|Abb. 1: Darstellung des Rundkurses 0]]
| |
|
| |
| Das Ziel dieses Abschnittes besteht darin, einen Ovalen Rundkurs in dem Simulink 3D World Editor zu modellieren.
| |
|
| |
| Dazu wird erklärt, was der Simulink 3D Editor ist und wie der Rundkurs in dem Editor modelliert wurde.
| |
|
| |
|
| |
| == Simulink 3D World Editor ==
| |
|
| |
|
| |
|
| |
| Der Simulink 3D-Editor ist ein wichtiges Tool, das es Entwicklern ermöglicht, 3D virtuelle Umgebungen zu erstellen und zu bearbeiten. Er ist Teil der Simulink 3D Animation-Erweiterung von MathWorks und spielt eine entscheidende Rolle bei der Visualisierung von Simulink-Modellen in einer 3D-Umgebung.
| |
|
| |
| Die Software unterstützt verschiedene 3D-Modellierungsformate, darunter das VRML-Format (Virtual Reality Modeling Language) und das STL-Format (Stereolithography). Durch diese Unterstützung können 3D-Modelle aus anderen Anwendungen in den Simulink 3D-Editor importiert oder von dort exportiert werden. Dies ermöglicht eine nahtlose Integration von Modellen und Szenen aus verschiedenen Quellen und fördert die Wiederverwendbarkeit von vorhandenen Modellen.
| |
|
| |
| Link: [https://de.mathworks.com/help/sl3d/the-3d-world-editor.html Simulink 3D World Editor]
| |
|
| |
| == Plattform erstellen ==
| |
|
| |
|
| |
|
| |
| [[Datei:Plattform.jpg|mini|500px|Abb. 2: Plattform]]
| |
|
| |
|
| |
| Der erste Schritt, um den Rundkurs zu erstellen, ist es eine 3D-Plattform zu modellieren, die als Grundlage für die Fahrzeugstrecke dienen soll.
| |
|
| |
|
| |
|
| |
| Für die Plattform wird zunächst der Boden modelliert. Dazu wird eine Box-Node verwendet, die es ermöglicht, eine einfache geometrische Box in der 3D-Szene zu erzeugen. Die Vorgehensweise zur Erstellung einer Box-Node kann in der verlinkten Ressource unter dem Abschnitt "Add Node" nachgelesen werden.
| |
|
| |
| Link: [https://de.mathworks.com/help/sl3d/example-of-building-a-virtual-world-and-connecting-it-to-a-simulink-model.html#bszuo7j: Box-Node erstellen]
| |
|
| |
|
| |
| Nachdem die Box-Node erstellt wurde, kann sie auf die gewünschte Größe angepasst werden, wie in (Abb. 2) gezeigt.
| |
|
| |
| Anschließend wird die Farbe der Plattform auf Schwarz geändert. Dazu unter dem Reiter Material unter den 3 Color-Bereichen deffuseColor, emissiveColor und specularColor Schwarz auswählen und auf Apply klicken.(Abb. 3)
| |
|
| |
| [[Datei:Farbe_ändern.jpg|left|mini|200px|Abb. 3: Farbe ändern]]
| |
|
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
|
| |
| Damit die Plattform Sichtbar bleibt, muss die Hintergrundfarbe geändert werden, was durch eine Background-Node ermöglicht wird. (Abb. 4)
| |
| # Rechtsklick auf Root
| |
| # Add Node
| |
| # Bindable
| |
| # Background
| |
|
| |
| [[Datei:Hintergrund.jpg|left|mini|300px|Abb. 3: Hintergrund hinzufügen]]
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| Unter dem hinzugefügten Hintergrund kann nun die Farbe "SkyColor" geändert werden.
| |
|
| |
| <br/>
| |
|
| |
| [[Datei:Group_Node_erstellen.jpg|mini|500px|Abb. 4: Wand erstellen]]
| |
|
| |
| Um die 3D-Welt besser zu strukturieren, können Group-Nodes genutzt werden. So können alle Elemente eines bestimmten Bereichs unter einer Group-Node zusammengefasst werden.
| |
| Eine Group-Node kann wie folgt erstellt werden (Abb. 3):
| |
|
| |
| # Rechtsklick auf die ROOT-Node
| |
| # Add Node
| |
| # Group
| |
| # Linksklick auf Group
| |
|
| |
| Die Plattform kann nun in die Group-Node verschoben werden.
| |
|
| |
| # Rechtsklick auf die Plattform
| |
| # Cut
| |
| # Rechtsklick auf die children Node der Group
| |
| # Paste
| |
|
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
|
| |
| == Wände erstellen ==
| |
|
| |
|
| |
|
| |
| Nach der Fertigstellung der Plattform werden Wände an jeder Seite der Plattform innerhalb der dazugehörigen Group-Node erstellt.
| |
|
| |
| Diese Wände dienen der Abgrenzung der Plattform und werden in Form von Box-Nodes erstellt, deren Abmessungen entsprechend der <br/> Plattformseiten angepasst werden. (Abb. 4)
| |
|
| |
| [[Datei:Wall_erstellen.jpg|left|mini|500px|Abb. 4: Wand erstellen]]
| |
|
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
|
| |
| == Fahrbahn erstellen ==
| |
|
| |
| [[Datei:Indexed_Face_Set_Node_erstellen.jpg|mini|500px|Abb. 5: Indexed_Face_Set_Node_erstellen]]
| |
|
| |
| Zur Erstellung der Fahrbahn wurden sogenannte [http://www.uco.es/investiga/grupos/eatco/automatica/ihm/cursovrml/frmindfs.htm Indexted Face Set-Nodes] verwendet.
| |
| Mit einer solchen Node können mit Hilfe des vorgegebenen Koordinatensystems verschiedene komplexe Objekte modelliert werden. Das ermöglicht es die Kurven präziser zu modellieren.
| |
| Als Vorlage wurde das Beispiel "vr_octavia" genutzt, welches über die Matlab-Console mit dem gleichnamigen Befehl aufgerufen werden kann.
| |
|
| |
| Dazu wird in Abb. 5 erklärt wie eine solche Node erstellt werden kann.
| |
| Die Indexted Face Set-Nodes werden zudem in einer Group Node erstellt, um alle Teile der Fahrbahn zusammenzufassen.
| |
|
| |
| <br/>
| |
| <br/>
| |
|
| |
| # Shape-Node in children der Group-Node erstellen (siehe Box-Node erstellen)
| |
| # unter Shape-Node rechtsklick auf Geometry
| |
| # Add Node
| |
| # geometry
| |
| # linksklick auf Indexed Face Set
| |
| # Indexed Face Set -> rechtsklick coord -> Geometry -> linksklick Coordinate
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
| <br/>
| |
|
| |
| [[Datei:Fahrbahn_erstellen.jpg|mini|500px|Abb. 6: Fahrbahn erstellen]]
| |
|
| |
| Unter dem Punkt coordIndex wird beschrieben wie die Koordinatenpunkte verbunden werden sollen.
| |
| Und unter dem Punkt coordinate werden die Koordinaten eingefügt, welche zusammen die Fahrbahn ergeben sollen.
| |
|
| |
|
| |
| Bei der Erstellung der Fahrbahn wurde die 2D-Draufsicht-Simulation als Vorlage genutzt.
| |
| Aus der 2D-Simulation können verschiedene Koordinatenpunkte entnommen werden, welche für die Indexed Face Sets nötig sind.
| |
| Dazu muss die 2D-Simulation gestartet werde und anschließend Pausiert werden. Nur so können die Koordinatenpunkte abgeschaut werden.
| |
| Um die 3D-Simulation an die reale Welt anzupassen, müssen die einzelnen Koordinatenpunkte mit 100 multipliziert werden.
| |
| Da in der 2D.Simulation nur der Rand der Fahrbahn als Koordinate entnommen werden kann, muss von diesem Punkt aus entsprechend die zweite Koordinate weiter nach Außen oder nach Innen gesetzt werden.
| |
| So ergeben sich zum Beispiel für die gerade Außenlinie das Koordinatenpaket(x, y, z): "-1000 1021 0, -1000 1025.12 0, 1000 1021 0, 1000 1025.12 0".
| |
| Wenn die Koordinaten für die Außen und Innen-Linie richtig eingetragen wurden, sehen diese wie folgt in dem 3D World Editor aus. (Abb. 6)
| |
|
| |
|
| |
| Wenn alle Koordinaten richtig in dem Indexted Face Set eingetragen wurden, sieht die Fahrbahn im 3D World Editor wie folgt aus. (Abb. 6)
| |
|
| |
| [[Datei:Fertige_Fahrbahn.jpg|mini|500px|Abb. 7: Fertige Fahrbahn]]
| |
|
| |
| Die einzelnen Fahrbahnlinien wurden jeweils mit eine Indexed Face Set-Node in der Group-Node der Fahrbahn erstellt.
| |
| Für die Mittellinie wurden aus den Fahrbahn Koordinaten die Mitte berechnet. Damit die Linie breiter wird, wurden die Eckpunkte 0.004 Punkte von der Mitte aus nach oben und unten verschoben.
| |
|
| |
| Bei den Randlinien wurde einfach von den Rand Koordinaten aus die äußere Koordinate um 0.05 Punkte nach außen verschoben.
| |
|
| |
| Die fertige Fahrbahn sieht dann wie in Abb. 7 gezeigt aus.
| |
|
| |
|
| |
|
| |
| <br/>
| |
| ----
| |
| → zurück zum Hauptartikel: [[Entwicklung einer 3D-Simulationsumgebung für autonome Fahrzeuge mit MATLAB/Simulink | BA: Entwicklung einer Simulationsumgebung]]
| |