Erstellen einer benutzerdefinierten Karte für CARLA

two road crossings showing, with perspective details on the top, CARLA driving simulator

In diesem Blog-Beitrag gehen wir auf unsere Erfahrungen mit den für CARLA verfügbaren Karteneditoren, die Anforderungen und die Werkzeuge ein, die wir schließlich zur Erstellung einer benutzerdefinierten Karte verwendet haben. Zunächst möchten wir jedoch unsere Motive für die Erstellung einer benutzerdefinierten Karte erläutern.

CARLA wird mit einer Reihe von vordefinierten Karten für die Simulation ausgeliefert. Die meisten sind in den USA eingerichtet oder enthalten eine Kombination aus europäischen und amerikanischen Verkehrsschildern. Für unseren Anwendungsfall war es wichtig, spezifische Verkehrssituationen zu haben, die hauptsächlich in Deutschland und den USA liegen. Leider waren diese in den vorhandenen Karten nicht vorhanden. Das bedeutete, dass wir diese Karten selbst erstellen mussten. Zu diesem Zweck recherchierten wir verfügbare Tools zur Erstellung dieser benutzerdefinierten Karten. Obwohl es mehrere Tools gibt, stießen wir bei den meisten von ihnen auf Probleme. Wir kamen zu dem Schluss, dass nur der offiziell unterstützte Karteneditor Road Runner ein vollständiges Werkzeug für die Erstellung von Straßennetzen und Karten bietet.

Welche Map-Editoren sind für CARLA verfügbar?

Die Erstellung einer Karte für CARLA erfordert zwei Komponenten. Die erste ist eine OpenDrive-Datei, die das Straßennetz auf einer reinen Datenebene definiert. Die zweite ist eine FBX-Datei, die Informationen über die 3D-Meshes und Texturen enthält. Während die OpenDrive-Datei für die Navigation der Fahrzeuge im Straßennetz benötigt wird, sorgt die FBX-Datei für die visuelle Darstellung der Szene. Im besten Fall sollten beide Dateien von einem Werkzeug gemeinsam erstellt werden. Andernfalls ist viel Handarbeit erforderlich, um zu verhindern, dass die beiden Koordinatenräume voneinander abweichen. Diese Vorgehensweise ist nicht zu empfehlen, da sie sehr fehleranfällig ist. Dennoch gibt es Editoren, die nur FBX-Dateien, aber keine 3D-Meshes erzeugen können.

In diesem Abschnitt werden wir einige der Tools vorstellen, die wir gefunden und ausprobiert haben, und über unsere Erkenntnisse, Herausforderungen und Erfahrungen mit den vorgestellten Editoren berichten.

CommonRoad Scenario Designer

Der erste Editor, den wir uns ansehen, ist der Open-Source-Editor CommonRoad Scenario Designer. Dieser Editor ermöglicht die Erstellung von Straßennetzen, ist aber nicht in der Lage, 3D-Meshes zu erzeugen, die das Netz ergänzen. Der Editor kann OpenDrive-Dateien, OpenStreetMap-Dateien, SUMO-Dateien, Lanelet-Dateien und das interne Dateiformat CR importieren, kann aber nur SUMO- oder CR-Dateien exportieren. Glücklicherweise können SUMO-Dateien leicht nach OpenDrive konvertiert werden durch die Nutzung von SUMO netconvert.

Unsere Erfahrung mit dem Tool war, dass sein Code noch nicht ausgereift ist und der Editor oft abstürzte, was es für uns unbrauchbar machte.

Netedit

Ein weiterer Editor, auf den wir gestoßen sind, war Netedit. Der Editor ist Teil der SUMO -Simulationsbibliothek. Mit Netedit st es möglich, interaktiv ein Straßennetz in einer 2D-Ansicht zu erstellen. Ähnlich wie beim CommonRoad Scenario Designer ist es mit diesem Editor jedoch nicht möglich, 3D-Meshes und -Umgebungen zu erstellen und zu exportieren. Er bietet jedoch eine direkte Unterstützung für den Export von OpenDrive-Dateien.

Wie der CommonRoad Scenario Designer ist das Tool Open Source und für die Erstellung einer OpenDrive-Datei geeignet.

Netedit ist zwar ausgereifter als der CommonRoad Scenario Designer, erfüllte aber immer noch nicht unsere Anforderungen an eine 3D-Umgebung. Daher ist der Editor nicht unsere erste Wahl.

Driving Scenario Creator (Blender plugin)

Blender ist ein kostenloses und ein Open-Source-Projekt, das FBX-Exporte und Animationen unterstützt. Mit dem Add-on Driving Scenario Creator, kann ein Straßennetz erstellt und im OpenDrive-Format exportiert werden. Der Vorteil dieser Tools ist, dass beide Open Source sind und sowohl OpenDrive-Dateien als auch FBX-Dateien exportiert werden können.

Ein Problem mit dem Add-on ist, dass Referenzpunkte wie der Anfang und das Ende einer Straße beim Hinzufügen einer Straße zwischengespeichert werden. Wenn Sie das Objekt verschieben, werden die Referenzpunkte nicht aktualisiert. Referenzpunkte sind wichtig, weil das Add-on zum Beispiel überprüft, dass genau vier Straßen an einer Kreuzung angeschlossen sind. Dies schränkt die 3D-Modellierung erheblich ein.

OpenRoadEd

OpenRoadEd ist ein Werkzeug zur Erstellung einer OpenDrive- und OpenSceneGraph-Datei. Eine OpenSceneGraph-Datei kann über ein plugin für die OpenSceneGraph-Bibliothek potenziell in eine FBX-Datei konvertiert werden.

Leider funktionierte der Editor nicht wie erwartet. Unter Windows konnte das OpenScenceGraph-Format der Datei nicht gespeichert werden. Unter Linux froren die Dateidialoge ein, wenn wir versuchten, eine Datei zu öffnen oder zu speichern. Auch im Viewer konnte die Kamera nicht bewegt werden.

RoadRunner

RoadRunner ist der empfohlene Karteneditor für CARLA. Leider ist der Editor nicht kostenlos und nicht Open Source. Er ist speziell auf CARLA zugeschnitten und kann sowohl OpenDrive- als auch FBX-Dateien erzeugen. Der Editor verfügt über eine intuitiv bedienbare Benutzeroberfläche und umfangreiche Werkzeuge und Hilfsmittel zur Erstellung eines Straßennetzes und der entsprechenden Umgebung. Er ist bei weitem der vollständigste und ausgereifteste Editor unter den anderen bisher vorgestellten Tools.

Daher war RoadRunner das Tool unserer Wahl unter allen vorgestellten Tools. Im weiteren Verlauf dieses Blogbeitrags werden wir die Funktionen von RoadRunner näher erläutern.

CARLA Junction

Verwendung von RoadRunner zur Erstellung benutzerdefinierter Karten für CARLA

Einer der Gründe, warum wir uns für RoadRunner entschieden haben, war die sehr gute Integration mit CARLA und die einfache Bedienung. Der Editor bietet zahlreiche Werkzeuge für die Erstellung einer Karte zur Verwendung in CARLA. Dazu gehören:

  • Road tool: generiert Straßen entlang platzierter Punkte
  • Lane tool: ändert die Anzahl und Art der Fahrspuren einer Straße
  • Junction tool: Erstellen und Ändern von Kreuzungen zwischen Straßen
  • Lane marking tools: Fahrbahnmarkierungen bearbeiten
  • Surface tool: Schaffung von Flächen abseits der Straße (Gras, Parkplätze usw.)
  • Prop tool: verschiedene Requisiten auf der Karte platzieren

Die Erstellung von Karten ist einfach und kann mit Hilfe der zahlreichen von MathWorks bereitgestellten Tutorial -Videos erlernt werden. Im Allgemeinen ist es eine gute Idee, mit dem Straßenwerkzeug zu beginnen und das allgemeine Layout zu erstellen. Kreuzungen werden automatisch erstellt, wenn sich Straßen kreuzen, was die Erstellung einer benutzerdefinierten Karte erleichtert, so dass Sie sich ganz auf das konzentrieren können, was Sie brauchen.

Wenn Ihr Grundlayout fertiggestellt ist, können Sie mit dem Fahrspurwerkzeug Fahrspuren hinzufügen oder ändern. Mit dem Fahrspurwerkzeug können Sie beispielsweise eine normale Straße mit zwei Fahrspuren in eine Autobahn verwandeln, indem Sie Fahrspuren in jede Richtung und eine Puffersfläche in der Mitte der Straße hinzufügen. Wir können das Werkzeug auch verwenden, um Abbiegespuren an Kreuzungen hinzuzufügen.

In diesem Schritt verwenden wir das Oberflächenwerkzeug, um Vegetation um das Straßennetz herum hinzuzufügen. Wir können dies tun, indem wir einen Kreis um die Straßen ziehen und RoadRunner füllt automatisch alle Lücken mit der von uns gewählten Textur.

Nun können wir die von uns erstellten Kreuzungen modifizieren und festlegen, welche Fahrspuren miteinander verbunden sind, d. h. welche Abbiegemanöver zulässig sind. Für diese Aufgabe verwenden wir das Kreuzungswerkzeug. Wählen Sie einfach die Kreuzung aus, die Sie bearbeiten möchten, und verbinden oder trennen Sie die Fahrspuren. Angenommen, wir möchten drei Fahrspuren in eine Kreuzung einmünden lassen. Die linke Spur soll nur das Linksabbiegen erlauben, die mittlere Spur nur das Geradeausfahren über die Kreuzung, und die rechte Spur soll nur das Rechtsabbiegen erlauben. Standardmäßig sollte die Kreuzung alle Fahrspuren miteinander verbunden haben. Daher wählen wir die Kreuzung mit dem Kreuzungswerkzeug aus und löschen einfach Verbindungen, bis die linke Spur nur noch mit der Straße links verbunden ist, die rechte Spur nur noch mit der Straße rechts und die mittlere Spur nur noch mit der Straße geradeaus.

Nach der Anpassung von Fahrspuren und Kreuzungen können wir die Fahrspurmarkierungen bearbeiten. Mit dem Fahrbahnmarkierungswerkzeug ist diese Aufgabe ganz einfach. Wählen Sie einfach eine Fahrbahnmarkierungstextur aus dem Materialbrowser aus und ziehen Sie sie per Drag & Drop auf eine Fahrbahnmarkierung. Außerdem können Fahrspurmarkierungen verschoben oder mit anderen Fahrspurmarkierungen zusammengeführt werden - zum Beispiel, um ein Reißverschlussspuren zu erstellen.

Vergewissern Sie sich schließlich, dass es keine Probleme mit OpenDrive gibt (für den Zugriff auf die Informationen ist eine Registrierung erforderlich). Dies ist leicht zu überprüfen, indem Sie auf der Registerkarte "Tools" navigieren. RoadRunner kann einen Geometrie-Problem-Check durchführen, der alle Geometrie-Probleme visualisiert und auflistet. Nach unserer Erfahrung wurden solche Probleme meist durch ineinander übergehende Fahrbahnmarkierungen verursacht. Wenn RoadRunner keine Probleme feststellt, können Sie Stützen entlang der Straße platzieren. Unserer Erfahrung nach ist es möglicherweise besser, diese später in der Unreal Engine zu verwenden (siehe unseren anderen Blogbeitrag) um Probleme beim Export der Karte zu minimieren. Die Platzierung von Verkehrsschildern sollte jedoch in RoadRunner selbst erfolgen, um sicherzustellen, dass sie in der OpenDrive-Datei registriert werden. Bei Verkehrsschildern muss zuerst ein Pfosten positioniert werden und dann kann ein Schild angebracht werden.

Sobald die Karte fertig ist, müssen wir sie zur Verwendung in CARLA exportieren. Dieser Schritt erfordert jedoch umfangreiche Überlegungen und würde den Rahmen dieses Beitrags sprengen. Daher haben wir einen separaten Blog-Beitrag über den Export einer RoadRunner-Karte erstellt.

Angenommen, wir haben unsere benutzerdefinierte Karte erfolgreich in CARLA importiert, ist der nächste Schritt, wie wir sie laden und testen können.

CARLA Junction

Verwendung Ihrer benutzerdefinierten Karte in CARLA

Der nächste Schritt besteht darin, unsere benutzerdefinierte Karte auszuprobieren. Dazu gehen wir davon aus, dass die Karte bereits erfolgreich in CARLA importiert wurde (Hilfe dazu finden Sie in unserem Blogbeitrag ) und dass der CARLA-Server läuft. Wenn die Quellversion von CARLA verwendet wird, kann der Server durch einen einfachen Klick auf "Play" im Unreal Engine Editor gestartet werden. Falls es Probleme beim Einrichten des Servers gibt, lesen Sie bitte diesen Blogeintrag , der dieses Thema behandelt.

Unser Ziel ist es zunächst, die Karte zu laden, herumzufahren und zu sehen, ob beim Importieren nichts verloren gegangen ist. Um eine Simulation auf dem CARLA-Server zum Laufen zu bringen, wird die CARLA-Python-API auf der Client-Seite benötigt. Wenn also auf dem Server CARLA 0.9.13 läuft, muss jeder Client die Python-API über pip install carla=0.9.13installieren. Stellen Sie sicher, dass die Versionen von Server und Client identisch sind.

Zunächst müssen wir die Karte auf dem CARLA-Server so umstellen, dass wir ein Auto auf der neuen Karte fahren können. Dazu verwenden wir die config.py die hier im CARLA-Repository bereitgestellt wird. Wenn der Server auf localhost läuft, führen wir einfach

<code>python config.py -m <Name of custom map></code>Code-Sprache: HTML, XML (xml)

Wenn der Server nicht lokal läuft, müssen wir auch die IP übergeben:

python config.py --host <ip> -m <Name of custom map>Code-Sprache: HTML, XML (xml)

Dadurch wird die Karte auf dem Server geändert. Nach unserem Kenntnisstand ist es nicht möglich, mehrere Karten parallel laufen zu lassen. Daher können die Clients eine laufende Simulation unterbrechen, indem sie die Karte ändern.

Werfen wir nun einen Blick darauf, wie wir tatsächlich in unsere Karte springen und ein Auto fahren. Normalerweise wird das Python-Pake pygame ur Erstellung eines Fensters, von Overlays und zur Steuerung von Ereignissen verwendet, während die CARLA-API zur Steuerung der Simulation und zum Abrufen eines Stroms von gerenderten Bildern vom Server verwendet wird.

Da die Einrichtung all dieser Funktionen recht zeitaufwändig sein kann, ist es viel einfacher, sich auf vorhandenen Code zu verlassen, um unsere Karte auszuprobieren. CARLA bietet eine Vielzahl von example files die zeigen, wie das geht. Wir empfehlen, den Python-Code manual_control.pyzu verwenden. Dieses Skript stellt eine Verbindung zum CARLA-Server her, erstellt ein Fenster, legt ein Auto an, platziert die Kamera hinter dem Auto und lässt den Benutzer herumfahren.

Beim Ausführen von

<code>python manual_control.py --res '1280x720'</code>Code-Sprache: HTML, XML (xml)

öffnet sich ein Fenster und wir sollten in der Lage sein, auf unserer neu erstellten Karte herumzufahren. Dennoch können zwei Probleme auftreten: Verbindungsbandbreite und GPU-Leistung. Beide Probleme führen dazu, dass das Videofeed ruckelt.

Leider findet keine ausgeklügelte Komprimierung statt, wenn die Bilder vom Server zum Client gestreamt werden. Daher kann der Empfang des CARLA-Feeds eine große Bandbreite erfordern. In diesem Fall kann es hilfreich sein, die Auflösung zu verringern. Anstelle von 720p wie im obigen Beispiel kann auch eine niedrigere Auflösung verwendet werden.

Das andere Problem kann durch eine GPU verursacht werden, die nicht leistungsfähig genug ist, um CARLA mit den höchsten Einstellungen (VoreinstellungEpic ) zu rendern. Um dieses Problem zu lösen, starten Sie den Server mit der Voreinstellung Low neu.

Zusammenfassung

Die vordefinierten Karten in CARLA sind frei verfügbar und können kostenlos genutzt werden. Es gibt mehrere Städte, die je nach der Simulation, die Sie durchführen möchten, verwendet werden können. Wenn Ihr Anwendungsfall benutzerdefinierte Karten erfordert, empfehlen wir die Verwendung von RoadRunner, dem einzigen Karteneditor, der unserer Meinung nach ein vollständiges Werkzeug für die Erstellung von Straßennetzen und deren Umgebung bietet. Die Erstellung einer benutzerdefinierten Karte bringt einige Herausforderungen mit sich, nicht nur bei der Wahl des Editors, auch der Import der Karte ist nicht ganz einfach. Im nächsten Blogbeitrag dieser Serie gehen wir näher darauf ein und berichten über unsere Erfahrungen mit dem Importieren Ihrer Karten in CARLA.

Teile diesen Artikel mit Deinem Netzwerk

Facebook
Reddit
Twitter
WhatsApp
LinkedIn
Email
Telegram

Haben Sie fragen zu unserem Artikel?
Kontaktieren Sie uns!

Danke!

Wir haben Deine Nachricht erhalten und werden uns schnellstmöglich bei Dir melden!

Beginnen wir noch heute,
Ihre Erfolgsstory zu schreiben!

Sind Sie bereit, mit der Entwicklung Ihres Produkts zu starten? Warten Sie nicht länger! Geben Sie hier Ihre E-Mail-Adresse ein und wir setzen uns umgehend mit Ihnen in Verbindung!

This Website Uses Cookies

We use cookies to provide social media features and to analyze our traffic. You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice, or by continuing to browse otherwise. You can read more about our cookie consent policy hier.