Heim > Technologie-Peripheriegeräte > KI > Genesis Physics Engine: Eine Schritt-für-Schritt-Anleitung zum Aufbau von Genesis

Genesis Physics Engine: Eine Schritt-für-Schritt-Anleitung zum Aufbau von Genesis

Christopher Nolan
Freigeben: 2025-03-01 09:54:09
Original
333 Leute haben es durchsucht

Letztes Jahr wurde Genesis als aufregendes neues Instrument zur Erstellung realistischer Physiksimulationen, interaktiven 4D -Welten und vielem mehr veröffentlicht. Ich war bestrebt, es zu versuchen, aber es war nicht einfach, es zum Laufen zu bringen. Ich muss zugeben, dass ich während des Setups viele Herausforderungen gestellt habe. 

In diesem Tutorial werde ich kurz die Probleme teilen, auf die ich gestoßen bin, und zeigen, wie ich es schließlich mit Google Colab und ein paar Tricks ausgeführt habe.

Wenn Sie nur einen Überblick über Genesis wünschen, lesen Sie meinen vorherigen Artikel, Genesis Physics Engine: eine Anleitung mit Beispielen.

Meine erste Einrichtungserfahrung mit Genesis

Als ich anfing, mit Genesis zu arbeiten, folgte ich den Installationsschritten in der Dokumentation. Sofort traf ich Probleme mit Abhängigkeiten. Genesis erfordert eine spezifische Version eines Moduls namens Taichi (1.7.x), aber mein MacOS unterstützte es nicht. Als Referenz ist mein Mac 8 Jahre alt….

Nach einiger Nachforschungen erkannte ich, dass andere Benutzer auch mit besseren Computern die gleichen Probleme hatten. Nach stundenlangem Aufwand und festzustellen, dass Genesis nur mit bestimmten Python -Versionen funktioniert, habe ich es endlich installiert.

Aber neue Probleme tauchten auf. Es würde nichts machen und ich hatte mehrere Probleme mit OpenGL. Selbst als ich versuchte, die Beispieldateien aus ihrem GitHub auszuführen, habe ich mehr Fehler und Konflikten ausgesetzt.

Dann, als ich dachte, ich hätte es aussortiert, bekam ich Fehler wie "Uniform nicht gefunden", was bedeutete, dass einige der Rendering -Einstellungen fehlten.

Während dieses Prozesses habe ich online recherchiert, um festzustellen, ob jemand anderes auf dieselben Probleme gestoßen war. Es stellte sich heraus, dass ich nicht der einzige war - viele Leute hatten den gleichen Schwierigkeiten, und viele schienen keine Lösung zu finden, damit ihre Skripte funktionieren.

Wie ich Genesis funktioniert: Google Colab zur Rettung

Nach der anfänglichen Frustration habe ich mich entschlossen, Google Colab mit einem Pro -Account auszuprobieren, und es stellte sich heraus, dass ich genau das war, was ich brauchte. Mit Colabs GPU -Ressourcen konnte ich:

  • Installieren Sie alle erforderlichen Abhängigkeiten ohne Probleme.
  • Verwenden Sie das GPU -Backend, um eine großartige Leistung und realistische Darstellung zu erzielen.
  • Führen Sie schließlich grundlegende Beispiele durch und untersuchen Sie das Potenzial von Genesis.

Ich habe die NVIDIA A100-SXM4-40 GB ausgewählt, die sich als mächtig genug erwies, um Genesis-Simulationen effizient zu bewältigen. 

Sobald ich meine Google Colab -Umgebung eingerichtet und Genesis installiert habe, habe ich versucht, das einfachste Beispiel aus der Dokumentation auszuführen:

import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene(show_viewer=True)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieses Beispiel sollte Genesis mit dem CPU -Backend initialisieren und eine Basiszene anzeigen. Ich bin jedoch sofort auf den folgenden Fehler gestoßen:

GenesisException: No display detected. Use show_viewer=False for headless mode.
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Die Fehlermeldung zeigt, dass Genesis versucht, ein grafisches Fenster zu erstellen, um die Szene zu rendern, aber Google Colab unterstützt keine Echtzeit-Visualisierung. Colab läuft in einer Remote -Umgebung ohne Zugriff auf eine lokale Anzeige, so

Wie in der Fehlermeldung vorgeschlagen, habe ich den Code geändert, um den Betrachter zu deaktivieren:

import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene(show_viewer=True)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies ermöglichte das Skript, ohne Absturz zu führen. Dieser Ansatz bedeutete jedoch, dass es keine Möglichkeit gab, die Ergebnisse direkt zu visualisieren.

Nachdem ich online gesucht hatte, stellte ich fest, dass andere dem gleichen Problem konfrontiert waren. Viele vorgeschlagene Lösungen umfassten die Konfiguration von Remote -OpenGL -Umgebungen oder verwenden XVFB, um eine virtuelle Anzeige zu erstellen. Leider konnte ich diese Methoden nicht dazu bringen, in Colab zuverlässig zu arbeiten, wahrscheinlich aufgrund von Abhängigkeitskonflikten und Einschränkungen der Umwelt.

Zu diesem Zeitpunkt brauchte ich eine praktischere Problemumgehung!

Da das Echtzeit-Rendering in Colab keine Option war, habe ich beschlossen, den gerenderten Ausgangsrahmen nach Frame als Bilder zu speichern. Mit diesen Ideen konnte ich eine Folge von Bildern erzeugen, die später zu einer Animation kombiniert werden konnten.

Implementierung und Ausgaben

In diesem Abschnitt werde ich Sie durch die Implementierung des Codes und der Ausgänge führen, die ich erhalten habe.

Einrichten der GPU -Umgebung

Zunächst habe ich Genesis installiert:

GenesisException: No display detected. Use show_viewer=False for headless mode.
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dann habe ich die Genesis mit dem CUDA -Backend für die GPU -Beschleunigung initialisiert.

scene = gs.Scene(show_viewer=False)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dies ist die Ausgabe, die ich erhielt:

pip install genesis-world
Nach dem Login kopieren
Nach dem Login kopieren

Erstellen und Erstellen der Szene

Erstellen Sie ein Verzeichnis, um die Ergebnisse zu speichern

Das erste, was ich brauchte, war ein Ordner, in dem Genesis die von ihm wiedergegebenen Bilder speichern konnte. 

import genesis as gs
gs.init(backend=gs.cuda)
Nach dem Login kopieren

Die Funktion von os.makedirs () erstellt einen Ordner namens Simulation_Frames im angegebenen Pfad, und das echte Argument exist_ok = stellt sicher, dass wenn der Ordner bereits vorhanden ist, kein Fehler angesprochen wird.

Auf diese Weise hatte ich einen speziellen Ort, um alle Frames und Ausgänge vor meiner Simulation zu speichern.

initialisieren Sie die Szene

Als nächstes musste ich eine Szene erstellen, in der ich Objekte hinzufügen und mit ihnen interagieren konnte.

[Genesis] [INFO] Running on [NVIDIA A100-SXM4-40GB] with backend gs.cuda. Device memory: 39.56 GB.
[Genesis] [INFO] ? Genesis initialized. Version: 0.2.1, Seed: None, Precision: 32.
Nach dem Login kopieren

gs.scene () initialisiert einen neuen Simulationsraum und show_viewer = false deaktiviert die Echtzeit-Visualisierung. Zu diesem Zeitpunkt hatte ich eine leere Szene, die bereit war, aufzubauen.

Fügen Sie ein Flugzeug und eine Box

hinzu

Mit der Szene fing ich an, Objekte hinzuzufügen. Ich habe zuerst ein Flugzeug hinzugefügt, das als Boden fungiert.

import os
save_dir = "/content/simulation_frames"
os.makedirs(save_dir, exist_ok=True)
Nach dem Login kopieren

Die Ebene dient als flache Basis für die Simulation. Standardmäßig ist es unendlich und liegt flach entlang der X-Y-Achse.

Als nächstes habe ich der Szene eine Box hinzugefügt:

scene = gs.Scene(show_viewer=False)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ich stelle die Box auf (0, 0, 0), direkt in der Mitte der Szene, und ich habe die Größe von 0,5 Einheiten breit, groß und tief, was sie kleiner als der Standard macht.

Jetzt hatte ich ein einfaches Setup: ein Flugzeug als Boden und eine Box, die darüber ruht.

Fügen Sie eine Kamera hinzu

Um zu erfassen, was in der Szene geschah, fügte ich eine Kamera hinzu.

import genesis as gs
gs.init(backend=gs.cpu)
scene = gs.Scene(show_viewer=True)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ich habe die Bildauflösung auf 320x240 Pixel, eine praktische Wahl zum Testen, eingestellt und die Kamera unter (3,5, 2,0, 2,5) positioniert, wodurch die Szene von leicht oben und zur Seite eindeutig übergeht. Um sicherzustellen, dass die Box im Fokus blieb, habe ich die Kamera auf (0, 0, 0,5) direkt über der Mitte der Box gerichtet. Mit einem 30-Grad-Sichtfeld (FOV) erfuhr die Kamera eine schmale und fokussierte Perspektive der Szene. 

Erstellen Sie die Szene

Der nächste Schritt bestand darin, die Szene aufzubauen, um sie auf Simulation und Rendering vorzubereiten.

GenesisException: No display detected. Use show_viewer=False for headless mode.
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Schritt ist entscheidend, da die Genesis Just-in-Time-Zusammenstellung verwendet, um die Simulation zu optimieren. Als ich die Szene baute, Genesis:

  • zugewiesene Speicher für die Objekte in der Szene.
  • Vorbereitete GPU -Kernel für Rendering- und Physikberechnungen.
  • Richten Sie alle erforderlichen Datenstrukturen ein, damit die Simulation reibungslos ausgeführt werden kann.

Jetzt war alles fertig - mein Flugzeug, meine Box und die Kamera wurden eingerichtet, und die Szene wurde gebaut.

Rendering und Speichern von Ausgängen

Um die Simulation zu visualisieren, habe ich den Ausgabebrahmen nach Rahmen gerendert und gespeichert. Jeder Frame wurde als Bild im Verzeichnis Simulation_Frames gespeichert. 

scene = gs.Scene(show_viewer=False)
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Während des Rendering -Prozesses stellte ich fest, dass die ersten Frames schnell (bis zu 2.297 fps) wurden, die Leistung jedoch im Verlauf der Simulation abnahm. Die FPS fielen schließlich auf rund 0,33 fps nach Rahmen 25. Dies könnte auf die zunehmende Rechenkomplexität der Simulation oder möglicherweise auf GPU -Ressourcenbeschränkungen für größere Szenen zurückzuführen sein.

Dies ist die Ausgabe, die ich habe:

pip install genesis-world
Nach dem Login kopieren
Nach dem Login kopieren

Dies sind die Bilder, die ich erhielt:

Genesis Physics Engine: Eine Schritt-für-Schritt-Anleitung zum Aufbau von Genesis

Genesis Physics Engine: Eine Schritt-für-Schritt-Anleitung zum Aufbau von Genesis

Genesis Physics Engine: Eine Schritt-für-Schritt-Anleitung zum Aufbau von Genesis

Genesis Physics Engine: Eine Schritt-für-Schritt-Anleitung zum Aufbau von Genesis

Genesis Physics Engine: Eine Schritt-für-Schritt-Anleitung zum Aufbau von Genesis

Jedes Bild zeigt, wie sich die Box im Laufe der Zeit in Bezug auf die Ebene bewegt, wie durch die Kamera zu sehen ist. Die Simulation wird in Schritten ausgeführt, und mit jedem Schritt ändert sich die Position des Box, so dass sich das Box bewegt.

Dieses Beispiel zeigt, wie Genesis einfache physikalische Interaktionen simulieren und aufweisen können. Während dieses Setup grundlegend ist, gibt es eine gute Vorstellung davon, wie sich Objekte in der Szene verhalten. Mit Genesis können Sie jedoch komplexere und realistischere Szenarien schaffen! Wir werden einige dieser Funktionen im nächsten Abschnitt untersuchen.

Erkundung von Genesis: Funktionen und Merkmale

Objekt- und Szenenerstellung

Mit

Genesis können Sie komplexe Szenen erstellen, indem Sie verschiedene Objekte und Morphs hinzufügen. Objekte können von einfachen Primitiven wie Flugzeugen, Boxen und Kugeln bis hin zu komplexeren Wesenheiten wie Robotern und Geländen reichen.

Formprimitive:

  • gs.morphs.Plane
  • gs.morphs.box
  • gs.morphs.cylinder
  • gs.morphs.Sphere

Support für externe Datei:

  • mjcf: gs.morphs.mjcf für Mujoco XML -Roboterkonfigurationen.
  • URDF: Gs.morphs.urdf für einheitliche Roboter Beschreibung Formatdateien.
  • mesh: gs.morphs.mesh für 3D -Vermögenswerte wie .obj, .ply, .stl, .glb und .gltf.
  • Genesis verwendet ein einheitliches Konzept, das als "Morph" bezeichnet wird und die Geometrie und Pose -Informationen verkörpert. Dieses objektorientierte Design ermöglicht eine direkte Interaktion mit Entitäten mit ihren Methoden.

Rendering und Visualisierung

Eine der wichtigsten Stärken von Genesis ist die Fähigkeit, detaillierte visuelle Ausgänge mithilfe erweiterter Kamera -Funktionen zu erstellen. Die Kameras funktionieren in einem "kopflosen Modus", was bedeutet, dass sie Bilder generieren können, ohne einen Anzeigebildschirm zu benötigen. Sie können verschiedene Arten von Visuals produzieren, einschließlich regulärer Farbbilder (RGB), Tiefenkarten, die zeigen, wie weit Objekte sind, Segmentierungsmasken, die verschiedene Teile der Szene kennzeichnen, und normale Karten, die Oberflächendetails darstellen.

Aufnahme von Videos

Sie können Videos erstellen, indem Sie jeden Frame der Simulation automatisch Kameras aufzeichnen lassen. Sie können die Kamera während der Aufnahme sogar bewegen, um das Video dynamischer und eindringlicher zu gestalten.

Sie können beispielsweise eine Kamera so konfigurieren, dass sie sich in einem kreisförmigen Pfad um die Szene bewegen, während Sie Frames erfassen. Die Funktion cam.start_recording () beginnt mit der Aufzeichnung, und während jedes Schritts der Simulation wird die Position der Kamera aktualisiert. Sobald alle Frames erfasst sind, speichert Cam.stop_recording () das Video als "Video.mp4".

Das endgültige Video gibt eine reibungslose Ansicht der Simulation und zeigt, wie die Objekte mit der Zeit interagieren und sich im Laufe der Zeit bewegen.

Terrain -Erzeugung für Fortbewegungsaufgaben

Sie können auch verschiedene Arten von Terrains für Robotik und KI -Training erstellen. Sie können die integrierten Geländeoptionen verwenden oder Ihre eigenen entwerfen, indem Sie kundenspezifische Höhenkarten mit Gs.morphs.terrain bereitstellen. Diese Terrains eignen sich perfekt zum Testen und Training, wie sich Roboter bewegen, und machen Genesis zu einem großartigen Werkzeug für die Robotikforschung.

Erweiterbarkeit

Sie können Ihre Simulationen auch auf verschiedene Weise anpassen. Sie können Objekten realistische Texturen hinzufügen und sie lebensechter aussehen. Es unterstützt auch viele Dateiformate für das Importieren von Modellen. Wenn ein Format nicht unterstützt wird, können Sie es anfordern, es hinzuzufügen. Darüber hinaus können Sie mit personalisierten Dateien und Einstellungen Ihre eigenen benutzerdefinierten Objektformen (Morphs) erstellen.

Schlussfolgerung

Dieses Tutorial lieferte ein einfaches Beispiel, mit dem Sie mit Genesis beginnen können. Wir haben die Grundlagen wie das Erstellen von Szenen, das Hinzufügen von Objekten und das Rendern von Ausgaben behandelt, um zu zeigen, wie diese leistungsstarke Physik -Engine funktioniert.

Dies ist jedoch nur der Beginn dessen, was Genesis tun kann. Mit der richtigen Hardware, wie einer starken GPU und genug Speicher, gibt es so viele Möglichkeiten. Sie können es für komplexe Robotik-Simulationen oder für das Erstellen hochwertiger Datensätze für das KI-Training verwenden. Obwohl das Einrichten schwierig sein kann, ist es definitiv ein Werkzeug mit großem Potenzial!

Das obige ist der detaillierte Inhalt vonGenesis Physics Engine: Eine Schritt-für-Schritt-Anleitung zum Aufbau von Genesis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage