À propos du projet

Genesis World est une plateforme de simulation destinée au développement de l'IA physique, en particulier à la robotique et à l'apprentissage de l'IA incarnée. Elle regroupe un moteur multi-physique unifié, un rendu photoréaliste nommé Nyx et un compilateur multiplateforme appelé Quadrants derrière une interface de simulation Pythonique. Le projet, auparavant connu sous le nom de Genesis, a débuté comme un effort académique en décembre 2024 et est désormais soutenu par Genesis AI. Il est sous licence Apache 2.0. La plateforme est organisée en quatre couches. L'interface de simulation fournit l'API destinée à l'utilisateur : analyse d'actifs pour des formats tels que URDF, MJCF, OBJ, GLB et USD, accesseurs d'entités, contrôleurs, capteurs, environnements parallèles et hétérogènes, ainsi qu'une interface graphique intégrée. La couche physique est un moteur multi-physique unifié intégrant la dynamique des corps rigides, la FEM, le MPM, les méthodes de particules (PBD et SPH), le backend uipc, un coupleur explicite et SAP, partageant tous une seule scène et un seul état. La couche de rendu propose trois chemins de rendu pour capteurs caméra : Nyx, Luisa (un ray tracer à base de DSL) et Pyrender (un rasteriseur). La couche compilateur, Quadrants, abaisse le code kernel Python vers CUDA, AMD ROCm, Apple Metal, Vulkan, x86 et ARM64, et intègre l'autodiff, les graphes GPU et le mécanisme fastcache. Le dépôt fournit un catalogue de démos exécutables regroupées en sections Physique, Rendu et Interface de simulation. Les exemples de physique couvrent des scénarios de corps rigides tels que la manipulation de cube par Franka, les tours de collision et les manifolds de contact ; les solveurs déformables et fluides incluant les contraintes FEM, les tutoriels MPM, les roues de sable, le couplage SPH, les liquides et tissus PBD, la fumée fluide stable, et la téléopération de tissu par robot IPC ; les cas de couplage multi-solveurs comme le tissu sur rigide, l'attachement rigide plus MPM, la découpe d'un dragon, les roues à eau et les cubes de rinçage ; et des exemples de couplage SAP. Les exemples de rendu incluent le suivi d'une entité, les caméras animées, et les parcours Nyx pour hello-world, caméras attachées, matériaux PBR, types de lumières, splats gaussiens 3D, sélection d'objets et configurations multi-caméras multi-environnements. Les exemples d'interface de simulation couvrent le contrôle de robots, le contrôle articulaire ImGui, les environnements hétérogènes, la randomisation de domaine, des capteurs tels que caméras de profondeur, IMU, lidar, bacs tactiles, force de contact, distance de surface et grilles de température, dessin de débogage GUI et sélection de points de maillage, interaction souris, contrôleurs IK différentiels, IK par lots, entraînement au vol stationnaire de drones, et des tutoriels avancés sur les vers et les muscles. L'installation se fait via pip avec le paquet genesis-world, nécessitant Python 3.10 à moins de 3.14, après installation de PyTorch. Une installation de développement utilise pip install -e ".[dev]" à partir d'un dépôt cloné. Les extras optionnels incluent pyuipc pour le solveur IPC sur Linux ou Windows x86 avec un GPU NVIDIA, et gs-nyx pour le rendu Nyx. Quadrants est inclus automatiquement. Le projet documente également un flux de travail basé sur uv avec uv sync et des commandes d'installation de PyTorch spécifiques à la plateforme pour CUDA, CPU et Apple Silicon, ainsi que l'exécution d'exemples via uv run. Le projet accueille favorablement les contributions, notamment les pull requests, les rapports de bugs et les suggestions d'utilisabilité, et oriente les utilisateurs vers GitHub Issues et Discussions pour le support. Il reconnaît un ensemble de dépendances et de références open-source, notamment Taichi (à l'origine du fork Quadrants), libuipc, FluidLab, SPH_Taichi, Ten Minute Physics, PBF3D, MuJoCo, libccd, PyRender, LuisaCompute, LuisaRender, Madrona et Madrona-mjx. La documentation est hébergée sur Read the Docs pour Genesis World, Quadrants et Nyx.