


Genesis Physics Engine: un guide étape par étape pour mettre en place Genesis
L'année dernière, Genesis a été publié comme un nouvel outil passionnant pour créer des simulations de physique réaliste, des mondes 4D interactifs, etc. J'étais impatient de l'essayer, mais le faire fonctionner n'a pas été facile. Je dois admettre que j'ai fait face à de nombreux défis pendant la configuration.
Dans ce tutoriel, je partagerai brièvement les problèmes que j'ai rencontrés et montrerai comment je l'ai finalement exécuté en utilisant Google Colab et quelques astuces.
Si vous voulez seulement un aperçu de Genesis, consultez mon article précédent, Genesis Physics Engine: un guide avec des exemples.
Mon expérience de configuration initiale avec Genesis
Lorsque j'ai commencé à travailler avec Genesis, j'ai suivi les étapes d'installation de la documentation. Tout de suite, j'ai rencontré des problèmes de dépendances. Genesis nécessite une version spécifique d'un module appelé Taichi (1.7.x), mais mon macOS ne l'a pas pris en charge. Pour référence, mon Mac a 8 ans….
Après certaines recherches, j'ai réalisé que d'autres utilisateurs avaient les mêmes problèmes, même avec de meilleurs ordinateurs. Après des heures d'effort, et découvrant que Genesis ne fonctionne qu'avec certaines versions Python, je l'ai finalement installée.
mais de nouveaux problèmes sont apparus. Cela ne rendrait rien, et j'avais plusieurs problèmes avec OpenGL. Même lorsque j'ai essayé d'exécuter l'exemple de fichiers à partir de leur github, j'ai fait face à plus d'erreurs et de conflits.
Ensuite, quand je pensais que je l'avais réglé, j'ai commencé à obtenir des erreurs comme "uniforme non trouvé", ce qui signifiait que certains des paramètres de rendu manquaient.
Tout au long de ce processus, j'ai fait des recherches en ligne pour voir si quelqu'un d'autre avait rencontré les mêmes problèmes. Il s'est avéré que je n'étais pas le seul - beaucoup de gens ont rencontré les mêmes difficultés, et beaucoup semblaient incapables de trouver une solution pour faire fonctionner leurs scripts.
Comment j'ai fait fonctionner Genesis: Google Colab à la rescousse
Après la frustration initiale, j'ai décidé d'essayer Google Colab avec un compte Pro, et il s'est avéré être exactement ce dont j'avais besoin. En utilisant les ressources GPU de Colab, j'ai pu:
- Installez toutes les dépendances requises sans aucun problème.
- Utilisez le backend GPU pour obtenir de grandes performances et un rendu réaliste.
- Enfin, exécutez des exemples de base et explorez le potentiel de Genesis.
J'ai sélectionné le NVIDIA A100-SXM4-40 Go, qui s'est avéré être suffisamment puissant pour gérer efficacement les simulations de Genesis.
Une fois que j'ai configuré mon environnement Google Colab et installé Genesis, j'ai essayé d'exécuter l'exemple le plus simple à partir de la documentation:
import genesis as gs gs.init(backend=gs.cpu) scene = gs.Scene(show_viewer=True)
Cet exemple devrait initialiser Genesis avec le backend CPU et afficher une scène de base. Cependant, j'ai immédiatement rencontré l'erreur suivante:
GenesisException: No display detected. Use show_viewer=False for headless mode.
Le message d'erreur indique que Genesis essaie de créer une fenêtre graphique pour rendre la scène, mais Google Colab ne prend pas en charge la visualisation en temps réel. Colab s'exécute dans un environnement distant sans accès à un affichage local, donc le paramètre show_viewer = vrai dans l'initialisation gs.scene () ne fonctionne pas.
Comme le suggère le message d'erreur, j'ai modifié le code pour désactiver la visionneuse:
import genesis as gs gs.init(backend=gs.cpu) scene = gs.Scene(show_viewer=True)
Cela a permis au script de s'exécuter sans se bloquer. Cependant, cette approche signifiait qu'il n'y avait aucun moyen de visualiser directement les résultats.
Après avoir regardé en ligne, j'ai découvert que d'autres avaient fait face au même problème. De nombreuses solutions proposées concernaient la configuration des environnements OpenGL distants ou l'utilisation de XVFB pour créer un affichage virtuel. Malheureusement, je n'ai pas pu faire fonctionner ces méthodes de manière fiable dans Colab, probablement en raison de conflits de dépendance et de limites de l'environnement.
À ce stade, j'avais besoin d'une solution de contournement plus pratique!
Étant donné que le rendu en temps réel n'était pas une option dans Colab, j'ai décidé d'enregistrer le cadre de sortie rendu par image sous forme d'images. Avec ces idées, j'ai pu générer une séquence d'images qui pourraient plus tard être combinées en animation.
implémentation et sorties
Dans cette section, je vais vous guider à travers la mise en œuvre du code et des sorties que j'ai obtenues.
Configuration de l'environnement GPU
Tout d'abord, j'ai installé Genesis:
GenesisException: No display detected. Use show_viewer=False for headless mode.
Ensuite, j'ai initialisé Genesis avec le backend CUDA pour l'accélération du GPU.
scene = gs.Scene(show_viewer=False)
C'est la sortie que j'ai obtenue:
pip install genesis-world
Créer et construire la scène
Créez un répertoire pour enregistrer les résultats
La première chose dont j'avais besoin était un dossier où Genesis pouvait enregistrer les images qu'elle rendait.
import genesis as gs gs.init(backend=gs.cuda)
La fonction os.makedirs () crée un dossier appelé simulation_frames dans le chemin spécifié, et l'argument exist_ok = vrai garantit que si le dossier existe déjà, aucune erreur ne sera augmentée.
De cette façon, j'avais un endroit dédié pour enregistrer toutes les trames et sorties de ma simulation.
Initialiser la scène
Ensuite, j'avais besoin de créer une scène où je pouvais ajouter des objets et interagir avec eux.
[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.
gs.scene () initialise un nouvel espace de simulation et show_viewer = false désactive la visualisation en temps réel. À ce stade, j'avais une scène vide prête à commencer à construire.
Ajouter un plan et une boîte
Avec la scène prête, j'ai commencé à ajouter des objets. J'ai d'abord ajouté un avion, qui agit comme le sol.
import os save_dir = "/content/simulation_frames" os.makedirs(save_dir, exist_ok=True)
L'avion sert de base plate pour la simulation. Par défaut, il est infini et se trouve à plat le long de l'axe X-Y.
Ensuite, j'ai ajouté une boîte à la scène:
scene = gs.Scene(show_viewer=False)
J'ai réglé la boîte pour être à (0, 0, 0), en plein centre de la scène, et je l'ai redimensionné pour être de 0,5 unités de large, grand et profond, ce qui le rend plus petit que la valeur par défaut.
Maintenant, j'avais une configuration simple: un avion comme sol et une boîte reposant dessus.
Ajouter une caméra
Pour capturer ce qui se passait dans la scène, j'ai ajouté une caméra.
import genesis as gs gs.init(backend=gs.cpu) scene = gs.Scene(show_viewer=True)
J'ai réglé la résolution de l'image sur 320x240 pixels, un choix pratique pour tester, et j'ai positionné la caméra à (3,5, 2.0, 2,5), ce qui lui a donné une vue claire de la scène de légèrement au-dessus et sur le côté. Pour m'assurer que la boîte est restée au point, j'ai visé la caméra à (0, 0, 0,5), juste au-dessus du centre de la boîte. Avec un champ de vision de 30 degrés (FOV), la caméra a capturé une perspective étroite et focalisée de la scène.
construire la scène
L'étape suivante consistait à construire la scène pour la préparer à la simulation et au rendu.
GenesisException: No display detected. Use show_viewer=False for headless mode.
Cette étape est cruciale car Genesis utilise la compilation Just-in-Time (JIT) pour optimiser la simulation. Quand j'ai construit la scène, Genesis:
- Mémoire allouée aux objets de la scène.
- Préparation des noyaux GPU pour les calculs de rendu et de physique.
- Configurez toutes les structures de données nécessaires pour que la simulation fonctionne bien.
Maintenant, tout était prêt - mon avion, ma boîte et mon appareil photo ont été installés, et la scène a été construite.
Rendre et enregistrer les sorties
Pour visualiser la simulation, j'ai rendu et enregistré les sorties Cadre by Frame. Chaque trame a été stockée sous forme d'image dans le répertoire simulation_frames.
scene = gs.Scene(show_viewer=False)
Pendant le processus de rendu, j'ai observé que les premières cadres se sont rendus rapidement (jusqu'à 2 297 ips), mais les performances ont diminué à mesure que la simulation progressait. Le FPS est finalement tombé à environ 0,33 ips par le cadre 25.
C'est la sortie que j'ai obtenue:
pip install genesis-world
Cet exemple met en évidence la façon dont Genesis peut simuler et afficher des interactions physiques simples. Bien que cette configuration soit basique, elle donne une bonne idée de la façon dont les objets se comportent dans la scène. Mais vous pouvez créer totalement des scénarios plus complexes et réalistes avec Genesis! Nous explorerons certaines de ces capacités dans la section suivante.
Explorer la Genesis: capacités et caractéristiques
Création d'objets et de scène
Genesis vous permet de créer des scènes complexes en ajoutant divers objets et morphes. Les objets peuvent aller de simples primitives comme les plans, les boîtes et les sphères à des entités plus complexes comme les robots et les terrains.
façonner les primitives:
- gs.morphs.plane
- gs.morphs.box
- gs.morphs.cylinder
- gs.morphs.sphere
Support de fichier externe:
- MJCF: gs.morphs.mjcf pour les configurations de robot Mujoco XML.
- Urdf: gs.morphs.urdf pour les fichiers de format de robot unifié.
- Mesh: gs.morphs.mesh pour les actifs 3D comme .obj, .ply, .stl, .glb et .gltf.
Genesis utilise un concept unifié appelé "morph", encapsulant la géométrie et pose des informations. Cette conception orientée objet permet une interaction directe avec les entités utilisant leurs méthodes.
rendu et visualisation
L'une des principales forces de Genesis est sa capacité à créer des sorties visuelles détaillées à l'aide de fonctionnalités de caméra avancées. Les caméras fonctionnent en «mode sans tête», ce qui signifie qu'ils peuvent générer des images sans avoir besoin d'un écran d'affichage. Ils peuvent produire différents types de visuels, y compris des images en couleur régulières (RVB), des cartes de profondeur montrant à quel point les objets sont loin, les masques de segmentation qui étiquettent différentes parties de la scène et les cartes normales qui représentent les détails de surface.
Enregistrement des vidéos
Vous pouvez créer des vidéos en laissant les caméras enregistrer automatiquement chaque trame de la simulation. Vous pouvez même déplacer la caméra pendant l'enregistrement pour rendre la vidéo plus dynamique et immersive.
Par exemple, vous pouvez configurer une caméra pour vous déplacer dans un chemin circulaire autour de la scène tout en capturant des cadres. La fonction cam.start_recording () commence l'enregistrement, et à chaque étape de la simulation, la position de la caméra est mise à jour. Une fois que toutes les cadres sont capturés, cam.stop_recording () enregistre la vidéo comme "vidéo.mp4".
La vidéo finale donne une vue fluide de la simulation, montrant comment les objets interagissent et se déplacent avec le temps.
Génération du terrain pour les tâches de locomotion
Vous pouvez également créer différents types de terrains pour la robotique et la formation de l'IA. Vous pouvez utiliser ses options de terrain intégrées ou concevoir la vôtre en fournissant des cartes de hauteur personnalisées avec gs.morphs.terrain. Ces terrains sont parfaits pour tester et former la façon dont les robots se déplacent, faisant de Genesis un excellent outil pour la recherche en robotique.
Extensibilité
Vous pouvez également personnaliser vos simulations de plusieurs manières. Vous pouvez ajouter des textures réalistes aux objets, ce qui les rend plus réalistes. Il prend également en charge de nombreux formats de fichiers pour les modèles d'importation, et si un format n'est pas pris en charge, vous pouvez lui demander d'être ajouté. De plus, vous pouvez créer vos propres formes d'objets personnalisées (appelées morphs) à l'aide de fichiers et de paramètres personnalisés.
Conclusion
Ce tutoriel a fourni un exemple simple pour vous aider à démarrer avec Genesis. Nous avons couvert les bases, comme la création de scènes, l'ajout d'objets et le rendu des sorties, pour montrer comment fonctionne ce puissant moteur de physique.
Cependant, ce n'est que le début de ce que Genesis peut faire. Avec le bon matériel, comme un GPU fort et suffisamment de mémoire, il y a tellement de possibilités. Vous pouvez l'utiliser pour des simulations de robotique complexes ou pour créer des ensembles de données de haute qualité pour la formation IA. Bien que le configurer puisse être délicat, c'est certainement un outil avec un énorme potentiel!
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

L'article passe en revue les meilleurs générateurs d'art AI, discutant de leurs fonctionnalités, de leur aptitude aux projets créatifs et de la valeur. Il met en évidence MidJourney comme la meilleure valeur pour les professionnels et recommande Dall-E 2 pour un art personnalisable de haute qualité.

META'S LLAMA 3.2: un bond en avant dans l'IA multimodal et mobile Meta a récemment dévoilé Llama 3.2, une progression importante de l'IA avec de puissantes capacités de vision et des modèles de texte légers optimisés pour les appareils mobiles. S'appuyer sur le succès o

L'article compare les meilleurs chatbots d'IA comme Chatgpt, Gemini et Claude, en se concentrant sur leurs fonctionnalités uniques, leurs options de personnalisation et leurs performances dans le traitement et la fiabilité du langage naturel.

L'article traite des meilleurs assistants d'écriture d'IA comme Grammarly, Jasper, Copy.ai, WireSonic et Rytr, en se concentrant sur leurs fonctionnalités uniques pour la création de contenu. Il soutient que Jasper excelle dans l'optimisation du référencement, tandis que les outils d'IA aident à maintenir le ton

La récente note du PDG de Shopify Tobi Lütke déclare hardiment la maîtrise de l'IA une attente fondamentale pour chaque employé, marquant un changement culturel important au sein de l'entreprise. Ce n'est pas une tendance éphémère; C'est un nouveau paradigme opérationnel intégré à P

Le paysage de l'IA de cette semaine: un tourbillon de progrès, de considérations éthiques et de débats réglementaires. Les principaux acteurs comme Openai, Google, Meta et Microsoft ont déclenché un torrent de mises à jour, des nouveaux modèles révolutionnaires aux changements cruciaux de LE

Hé là, codant ninja! Quelles tâches liées au codage avez-vous prévues pour la journée? Avant de plonger plus loin dans ce blog, je veux que vous réfléchissiez à tous vos malheurs liés au codage - les énumérez. Fait? - Let & # 8217

L'article examine les meilleurs générateurs de voix d'IA comme Google Cloud, Amazon Polly, Microsoft Azure, IBM Watson et Descript, en se concentrant sur leurs fonctionnalités, leur qualité vocale et leur aptitude à différents besoins.
