... | ... | @@ -9,6 +9,7 @@ title: Benutzerdefinierte Erweiterungen |
|
|
|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
|
|
... | ... | @@ -189,6 +190,9 @@ Für weitere Informationen zur Bearbeitung der CI/CD-Pipeline siehe -> [**Link** |
|
|
|
|
|
Die Simulationsumgebung **Gazebo** ist ein integraler Bestandteil der ROS2-Architektur. Sie ermöglicht die realitätsnahe Simulation von Fahrzeugmodellen, einschließlich ihrer Sensorik, Aktorik und der vorgesehenen Einsatzumgebung. Um neue Modelle in die Simulation einzubinden, kann der [**Gazebo Model Editor**](https://classic.gazebosim.org/tutorials?tut=guided_b3) verwendet werden, insbesondere für einfache Modelle. Bei komplexeren Modellen, die fortgeschrittene Kinematik darstellen, empfiehlt es sich, diese zunächst in einer **CAD**-Software zu erstellen und anschließend in ein geeignetes Format, wie **STL**, **DAE** oder **OBJ**, zu konvertieren.
|
|
|
|
|
|
Es gibt mehrere Möglichkeiten, ein Modell oder eine Simulationsumgebung unter ROS zu erstellen. Die zwei Hauptformate zum Erstellen eines Modells sind das Unified Robot Describtion Format und Simulation Discription Format (SDF). Sie basieren beide auf der XML.
|
|
|
Der wesentliche Unterschied der beiden Formate besteht darin, dass mit einem URDF der Roboter beschrieben wird, während mit einem SDF sowohl der Roboter als auch die Simulationsumgebung beschrieben werden kann.
|
|
|
|
|
|
### 1. Erstellung eines Modells mit CAD
|
|
|
Entwerfen Sie das Modell nach den gewünschten funktionalen und kinematischen Anforderungen. Es ist wichtig, bewegliche Komponenten separat zu speichern, um deren Bewegungen später in Gazebo realistisch darstellen zu können.
|
|
|
|
... | ... | @@ -196,11 +200,67 @@ Entwerfen Sie das Modell nach den gewünschten funktionalen und kinematischen An |
|
|
Um das erstellte CAD-Modell in Gazebo zu integrieren, muss es in ein kompatibles Dateiformat konvertiert werden. Typischerweise werden Formate wie **STL**, **DAE** oder **OBJ** genutzt, da sie gut mit der **SDF** (Simulation Description Format) kompatibel sind.
|
|
|
|
|
|
### 3. Definition der Modellstruktur und physikalischen Eigenschaften
|
|
|
Jedes Modell folgt einem festgelegten Aufbau. Im Verzeichnis des Modells sollten zwei Unterordner angelegt werden: einer für die **Meshes** und zwei zentrale Dateien: **model.config** und **model.sdf**. Diese Dateien enthalten die Beschreibung des Modells sowie die Definition der physikalischen Eigenschaften, wie Trägheit, Kollisionsverhalten und dynamische Eigenschaften. Weitere Informationen zur Modellierung in SDF finden Sie [hier](http://sdformat.org/spec).
|
|
|
Jedes Modell folgt einem festgelegten Aufbau. Im Verzeichnis des Modells sollten zwei Unterordner angelegt werden: einer für die **meshes** und zwei zentrale Dateien: `model.config` und `model.sdf`. Die Struktur kann der nachfolgenden Abbildung entnommen werden.
|
|
|
|
|
|
```
|
|
|
gazebo_train_gazebo/
|
|
|
├── launch/
|
|
|
├── models/
|
|
|
│ ├── modelname/
|
|
|
│ │ ├── meshes/
|
|
|
│ │ │ └── model.stl
|
|
|
│ │ ├── model.config
|
|
|
│ │ └── model.sdf
|
|
|
├── worlds/
|
|
|
│ └── ros2_worlds/
|
|
|
│ └── world.model
|
|
|
└── rviz/
|
|
|
```
|
|
|
In den **meshes**-Ordner werden die 3D-Dateien abgelegt, die das visuelle Modell und die Kollisionseigenschaften des Objekts darstellen.
|
|
|
|
|
|
Die Konfiguration der `model.config`-Datei sieht folgendermaßen aus:
|
|
|
|
|
|
```xml
|
|
|
<?xml version="1.0"?>
|
|
|
|
|
|
<model>
|
|
|
<name>model_name</name>
|
|
|
<version>2.0</version>
|
|
|
<sdf version="1.0">model.sdf</sdf>
|
|
|
|
|
|
<author>
|
|
|
<name>Author Name</name>
|
|
|
<email>author@example.com</email>
|
|
|
</author>
|
|
|
|
|
|
<description>
|
|
|
Eine kurze Beschreibung des Modells, seiner Eigenschaften und seines Zwecks.
|
|
|
</description>
|
|
|
</model>
|
|
|
```
|
|
|
|
|
|
Die `model.sdf`-Datei enthalten die Beschreibung des Modells sowie die Definition der physikalischen Eigenschaften, wie Trägheit, Kollisionsverhalten und dynamische Eigenschaften.
|
|
|
|
|
|
Jedes Modell besteht grundlegend aus Gelenken (engl.: Joints) und Verbindungen (engl.: Links), die zu einem System verknüpft werden.
|
|
|
Jeder Joint und jeder Link besteht wiederum aus mehreren Elementen und Attributen. Da die Joints und Links unterschiedliche Eigenschaften besitzen können, müssen sich diese durch ein spezifisches Namensattribut voneinander differenzieren. Mithilfe von Links können sichtbare Elemente eines Modells dargestellt werden. Statische Objekte bzw. deren Links müssen mindestens aus den zwei Elementen Visual und Collision bestehen. Die Eigenschaft Visual ist für das optische Erscheinungsbild nötig und kann entweder durch ein 3D-Mesh, also einem 3D-Objekt oder durch eine mathematische Funktion beschrieben werden. Die Collision ist entscheidend für die Interaktion des Objekts mit seiner Umgebung. In den meisten Fällen wird eine vereinfachte mathematische Funktion oder 3D-Mesh verwendet und über das visuelle Modell gelegt. Dies bietet den Vorteil, dass die Komplexität des Simulationsmodells und somit auch die Rechenleistung verringert wird. Der Link kann durch zusätzliche Elemente wie Reibung und Dämpfung erweitert werden, um ein realistischeres Modell zu erhalten.
|
|
|
|
|
|

|
|
|
|
|
|
Für dynamische Objekte bzw. deren Links kommt ein drittes Element, das Inertial, hinzu. Dieses Element beschreibt die Massenträgheit, den Schwerpunkt und die Masse des Links. Um realitätsnahe dynamische Bewegungsabläufe des realen Objektes zu realisieren, ist eine exakte Bestimmung dieser Elemente von hoher Priorität. Die Abbildung visualisiert beispielhaft die drei genannten Elemente, die zur Beschreibung eines Modells benötigt werden. Ausnahmen der Darstellung stellen Links wie beispielsweise der dar. Dieser erhält lediglich das Namensattribut und repräsentiert einen virtuellen Link. Der Link wird benötigt, um die Kameralinse nicht am Montagepunkt der Kamera zu fixieren und dient somit als Hilfslink.
|
|
|
|
|
|
|
|
|
Um die Links miteinander zu verknüpfen, müssen diese jeweils mit dem selben Joint verbunden werden. Die Joints werden dann mit dem Element Pose versehen SDF. Eine Pose ist hierbei die Kombination aus Position und Orientierung in Bezug zu dem Ursprungskoordinatensystem. Die kinematische Verbindung der beiden Elemente wird dann über eine sogenannte Parent-Child-Beziehung realisiert. Diese Beziehung spiegelt die kinematische Hierarchie des Robotermodells wider. In dem Kontext bezeichnet **Parent** das übergeordnete Glied, während **Child** das untergeordnete Glied darstellt. Eine Bewegung oder Transformation des übergeordneten Gliedes wirkt sich unmittelbar auf die Kinematik des untergeordneten Gliedes aus. Die Art und Weise wie das untergeordnete Glied beeinflusst wird, hängt wiederum vom Typ des Joints ab. Diese können als unterschiedliche Gelenktypen, wie beispielsweise als Drehgelenk, Getriebe oder als starre Verbindung ausgelegt werden. Durch gezielte Ansteuerung dieser Gelenke, mittels eines ROS-Gazebo-Plugins, können Antriebssteuerung realisiert werden.
|
|
|
|
|
|

|
|
|
|
|
|
Weitere Informationen zur Modellierung in SDF finden Sie [hier](http://sdformat.org/spec).
|
|
|
|
|
|
|
|
|
### 4. Integration in die Simulation
|
|
|
Nach erfolgreicher Konfiguration und dem Export des entsprechenden **GAZEBO_MODEL_PATH** sollte das Modell bei der nächsten Ausführung von Gazebo im Modell-Browser verfügbar sein. Es kann per **Drag & Drop** in die Simulationsumgebung eingefügt werden.
|
|
|
|
|
|
---
|
|
|
|
|
|
Für weiterführende Informationen zur Verwendung des Gazebo Model Editors, klicken Sie [hier](https://classic.gazebosim.org/tutorials?tut=guided_b3).
|
|
|
|
|
|
Bereits vorgefertigte SDF-Modelle zur direkten Integration in Gazebo finden Sie unter diesem [GitHub-Repository](https://github.com/osrf/gazebo_models).
|
... | ... | |