Videoaufzeichnung von benutzerdefinierten Szenarien mit CARLA

car driving on road, red light ahead, data of the program showing on the left, CARLA driving simulator

In diesem Blog-Beitrag zeigen wir Ihnen, wie Sie ein Video von einer Scenic-Szene aufnehmen können. Wenn Sie mehr über die Scenic-Bibliothek erfahren möchten, finden Sie weitere Informationen in unserem vorherigen Blog-Beitrag “Erstellen von benutzerdefinierten Szenarien für CARLA mit Scenic“. Der Prozess der Videoaufzeichnung in Scenic erwies sich als schwieriger als erwartet, so dass wir Änderungen vornehmen und die Bibliothek forken mussten. Sie können sich unseren Fork hier ansehen. Es ist wichtig zu beachten, dass der in diesem Blogbeitrag erwähnte Code nur mit unserem Fork kompatibel sein kann.

In diesem Blogbeitrag zeigen wir Ihnen die Schritte, die wir befolgt haben, um erfolgreich ein Video mit Scenic aufzunehmen, einschließlich der Änderungen, die wir an der Bibliothek vornehmen mussten. Indem wir unsere Erfahrungen und die Lektionen, die wir auf diesem Weg gelernt haben, mit Ihnen teilen, bietet dieser Beitrag wertvolle Informationen sowohl für Anfänger als auch für erfahrene Benutzer von Scenic. Unabhängig davon, ob Sie gerade erst anfangen oder die Funktionen von Scenic bereits erforscht haben, bietet dieser Beitrag Einblicke, die Ihnen helfen, das Beste aus Scenic herauszuholen.

Herausforderungen bei der Aufzeichnung von Scenic Szenarien in CARLA

Theoretisch wäre es möglich, einfach das Scenic-Skript auszuführen und das Fenster aufzuzeichnen. Ein Nachteil dieses Ansatzes ist jedoch, dass er zu einer inkonsistenten oder unterdurchschnittlichen Bildrate führen kann. Daher ist es vorteilhaft, die Möglichkeit zu haben, Frames mit einem festen Delta und variablen Frame-Zeiten zu rendern, um ein Video mit konstanten und anpassbaren fps zu produzieren. Um dies zu erreichen, müssen wir die Bilder beim Rendern sammeln und an einen Videostream anhängen, der dann gespeichert werden kann.

Diese Art der Videoaufzeichnung wird von Scenic (oder CARLA) nicht standardmäßig unterstützt. Die Aufzeichnung eines "Replays" wird jedoch von Scenic unterstützt, d.h. es kann eine Datei erzeugt werden, die Informationen über die Positionen aller Akteure in der Szene für jeden relevanten Zeitpunkt speichert. Eine solche Datei kann dann in CARLA wiedergegeben werden. Unsere erste Idee war es, eine solche Datei zu erzeugen und dann einen einfachen Videorekorder zu programmieren, der diese Datei in CARLA mit einem festen Frame-Delta abspielt, die Bilder von einem Sensor in CARLA erhält und diese Bilder zu einem Video zusammensetzt.

Obwohl das Konzept vielversprechend war, hat es letztendlich nicht die gewünschten Ergebnisse geliefert. Offenbar führte die Wiederholung einer Wiedergabe in CARLA dazu, dass das Auto nicht die richtigen Bewegungsvektoren hatte. Wir vermuten, dass das Auto während der Wiedergabe abrupt von einem Ort zum anderen bewegt wird, was dazu führt, dass es abrupt beschleunigt und plötzlich für kurze Zeit zum Stillstand kommt. Die Unreal Engine verwendet temporales Anti-Aliasing und eine Bildwiederherstellung zwischen den Frames und verlässt sich auf korrekte Bewegungsvektorinformationen, um die letzten Frames mit dem neuen Frame zusammenzuführen. Da dies nicht der Fall ist, wurden viele visuelle Artefakte wie Aliasing, starkes Ghosting und abgeschnittene Schatten erzeugt.

Der visuelle Aspekt des Ergebnisses hatte für uns oberste Priorität, und als sich der ursprüngliche Ansatz als unzureichend erwies, mussten wir nach einer alternativen Lösung suchen, die unseren Zielen besser entsprach.

Patching von Scenic für die Aufnahme von Videos

Die Lösung, für die wir uns entschieden haben, war, Scenic zu modifizieren und die Videoerfassung darin zu integrieren. Wir haben dann das Frame-Delta festgelegt, das Szenario ausgeführt und die gerenderten Bilder in einen Videostream eingespeist.

Mit anderen Worten: In den Callback von CARLA haben wir eine Methode integriert, die den Video Writer mit Bildern versorgt. Um dies konfigurierbar zu machen, haben wir Scenic erweitert, um zusätzliche Parameter zu erhalten. Der neu hinzugefügte Parameter resolution steuert die Auflösung des gerenderten CARLA-Streams. Er akzeptiert einen String mit der Formatierung 1280x720Der Parameter video_output_path bestimmt, wo ein Video gespeichert werden soll. Er erwartet einen Pfad, an dessen Ende eine MP4-Datei steht. Die Parameter werden in src/scenic/simulators/carla/model.scenic definiert und die Videoerfassung erfolgt in src/scenic/simulators/carla/utils/visuals.py.

Schritt-für-Schritt-Anleitung zur Aufnahme eines Videos für ein Szene-Szenario

Mit diesen Änderungen können wir ein Video von einem beliebigen Szenario aufnehmen. Zunächst müssen wir entscheiden, welche Bildrate das Video haben soll, und diese als Zeitschritt pro Bild angeben. Zum Beispiel entsprechen 30 FPS einer Bildzeit von ~0,0333 Sekunden und 60 FPS entsprechen ~0,0166 Sekunden. Nehmen wir an, wir wollen ein Video mit 60 FPS und einer Auflösung von 1920x1080 unter /home/user/test.mp4aufnehmen. Dann würden wir ein Scenic-Skript auf folgende Weise ausführen:

scenic <SCENIC SCRIPT> --simulate --count 1 --param resolution "1920x1080" --param video_output_path "/home/user/test.mp4" --param timestep 0.0166Code-Sprache: JavaScript (javascript)

Wenn das Fenster geschlossen wird, wird das Video unter dem angegebenen Pfad gespeichert.

Der nachfolgende Blog-Beitrag "Best Practices bei der Verwendung von Scenic mit CARLA" enthält bewährte Praktiken für die Verwendung von Scenic mit CARLA, einschließlich Modifikationen, um wesentliche Parameter, die die Fahrzeugsteuerung beeinflussen, offenzulegen. Er behandelt die Manipulation von Parametern wie Gas, Lenkung und Bremsen sowie die Anpassung der Bildrate für eine flüssigere Fahrzeugsteuerung. Darüber hinaus geht der Beitrag auf die Details ein, wie Scenic die Bewegung eines Fahrzeugs steuert und wie man sie beeinflussen kann.

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.