Técnico

Génesis: redefiniendo las simulaciones de robótica y física

Share

Mientras recorría LinkedIn, apareció un vídeo con una música cautivadora y una fuerte apertura:

gs.generate («Una gota de agua cae sobre una botella de cerveza y luego se desliza lentamente hacia abajo a lo largo de la superficie de la botella»).

Luego, apareció un comercial 4K ultrarrealista generado a partir de este sencillo mensaje, que mostraba gráficos impresionantes en una vista casi de cerca. El vídeo terminaba con el mensaje 'Creado por Genesis'.

Esto fue suficiente para que el equipo de Marvik se sumergiera en el marco de Genesis y lo intentara. Aunque fue decepcionante saber que Genesis aún no ha lanzado funciones generativas de inteligencia artificial para crear anuncios en 4K con instrucciones, descubrimos que ofrece muchas otras funciones valiosas.

Vídeo publicitario de Genesis

La publicidad de Genesis muestra cómo las instrucciones individuales pueden transformarse en imágenes 4K ultrarrealistas del mundo de la física, una función que aún no se ha publicado.

¿Qué es Génesis?

Genesis es una plataforma de física de código abierto para robótica e IA física. Su misión es recrear el mundo físico en un espacio virtual con una alta fidelidad visual y sensorial.

Genesis combina varias funcionalidades principales:

  • Motor de física: capaz de simular una amplia gama de materiales y fenómenos físicos.
  • Simulador de robótica: ligero, ultrarrápido, pitónico y fácil de usar.
  • Sistema de renderizado: Crea imágenes realistas potentes y rápidas.
  • Motor de datos generativo: transforma la descripción en lenguaje natural solicitada por el usuario en varias modalidades de datos. Esto incluye la creación de escenas interactivas, propuestas de tareas, recompensas, movimientos de personajes, políticas, trayectorias y mucho más.

Como ya se ha mencionado, han abierto el motor de física subyacente y la plataforma de simulación, mientras que se espera que el marco generativo se publique en el futuro.

¿Qué hace que Genesis destaque?

  • 100% pitónico
  • Instalación sin esfuerzo.
  • El motor de física más rápido del mundo, que ofrece velocidades de simulación entre 10 y 80 veces más rápidas que las de los simuladores robóticos acelerados por GPU existentes
  • Solucionadores de física de última generación que modelan una amplia gama de materiales y fenómenos físicos.
  • Renderizado de trazado de rayos fotorrealista con un rendimiento optimizado.
  • Soporte nativo para Simulación generativa

Ahora, exploremos ejemplos de aplicaciones de Genesis para entender las capacidades de Genesis en acción.

Solicitudes

1. Creación de objetos 3D y entornos: instancie y manipule objetos 3D dentro de un entorno de simulación. En Genesis, puede crear objetos 3D cargando modelos de varios formatos de archivo, incluido MJCF (.xml), que define la geometría, los materiales y las propiedades de los objetos de la simulación.

2. Simulación de fuerza: Simule y visualice las fuerzas que actúan sobre los objetos, como las fuerzas gravitacionales y de contacto.

Cargar un brazo robótico para crear un experimento de simulación (por ejemplo, simular las fuerzas aplicadas, dejar que el brazo se mueva, etc.)

3. Refuerzo, aprendizaje e integración: entrenar políticas de aprendizaje por refuerzo para tareas como la locomoción robótica, lo que permite el desarrollo autónomo del comportamiento. Tras crear y manipular objetos 3D en una simulación, puede entrenar modelos RL para tareas como la locomoción cuadrúpeda, como se muestra en el siguiente vídeo.

Locomotion.mp4

Vídeo que muestra la integración del aprendizaje por refuerzo de Genesis, que demuestra el entrenamiento de una política de locomoción para un robot en un entorno simulado.

4. Simulación más allá de la dinámica de cuerpos rígidos, incluidos líquidos, gases y objetos deformables. Hemos probado un ejemplo de este caso y lo exploraremos en Probando la sección Genesis.

Probando Genesis

Para explorar las capacidades de Genesis, nos centramos en dos aplicaciones diferentes: (a) la creación de objetos 3D y la construcción de escenas, y (b) la simulación de fluidos. Estas pruebas nos permitieron evaluar el rendimiento de la herramienta en diversos ámbitos, desde la construcción de intrincados entornos 3D hasta la simulación del complejo comportamiento de los fluidos.

Pero primero, tanto si tienes ganas de probar Genesis como si simplemente tienes curiosidad por saber dónde hemos realizado las pruebas, compartiremos algunas consideraciones técnicas clave que debes tener en cuenta antes de empezar.

Consideraciones sobre la configuración técnica
  • Instalación mediante pip o mediante docker siguiendo el repositorio de Github.
  • Requisitos previos: Python 3.9 y la versión compatible de Pytorch.
  • Compatible con Linux, macOS y Windows.
  • Soporta CPU, GPU CUDA y GPU que no son CUDA. Nota:
    1. Si bien Genesis funciona con CPU, es muy recomendable ejecutarlo con una GPU, ya que renderizar objetos 3D puede requerir muchos cálculos.
    2. Si se ejecuta Genesis con CUDA, se deben instalar los controladores nvidia apropiados en la máquina. Ver Anexo: Especificaciones de la instancia para obtener más información.
    3. Al inicializar Genesis, podrás comprobar la configuración del backend a medida que se muestren las configuraciones. Ejemplo de captura de pantalla

Nota: Durante las pruebas en una instancia EC2 de Amazon Linux de AWS con GPU CUDA, detectamos problemas de representación relacionados con las dependencias de pyrender y OpenGL, que suelen producirse en entornos con recursos de GPU compartidos. Un ejemplo de error fue GLError 12289. Este problema puede surgir cuando el sistema no selecciona la GPU correcta. La solución consiste en establecer la variable de entorno EGL_DEVICE_ID en un índice de GPU específico (por ejemplo, «1»), lo que resuelve los conflictos y garantiza una selección adecuada de la GPU para el renderizado.

Creación de objetos 3D y construcción de escenas

La creación y construcción de una escena de simulación implica añadir objetos 3D y configurar el entorno circundante. En esta simulación, nuestro objetivo es crear una representación 3D de un brazo Franka (brazo robótico) y simular su comportamiento bajo la gravedad.

A continuación se muestra un resumen de alto nivel del proceso:

  1. Creación de una escena: implica definir parámetros como el intervalo temporal, la gravedad y la vista de la cámara. En este ejemplo, la gravedad simula la caída del brazo de Franka al suelo.

escena = gs.Scene (

SIM_OPTIONS=gs.options.SimOptions (dt=0.01, gravedad =( 0, 0, -10.0)),

viewer_options=gs.options.viewerOptions (camera_pos =( 3.5, 0.0, 2.5), camera_fov=40),

show_viewer=Cierto

)

  1. Añadir entidades a la escena: Estas entidades pueden ser objetos 3D, robots o entornos. Aquí cargamos el brazo de Franka desde un archivo MJCF (.xml), que define su geometría y propiedades.

plano = scene.add_entity (gs.morphs.plane ())

franka = scene.add_entity (

gs.morphs.mjcf (archivo='xml/franka_emika_panda/panda.xml'),

)

  1. Construye la escena: Este paso compila todas las entidades en la simulación, finaliza la configuración y prepara todo para la simulación física.

escena.build ()

  1. Bucle de simulación: el ciclo de simulación comienza con el método scene.step () que hace avanzar la simulación en un paso de tiempo, simulando cómo el brazo de Franka responde a la gravedad. El bucle dura un número determinado de iteraciones (1000 en este caso), actualizando la posición y la física del brazo en cada paso.

por i en rango (1000):

escena.step ()

  1. Fotograma del brazo robótico Franka renderizado en la simulación de Genesis.

Simulación de fluidos

En este experimento, simulamos el movimiento de fluidos o gases en órbita, con fluidos más pequeños que giran alrededor de una corriente central, de forma similar a cómo el humo o los chorros de gas se mueven a través del aire o el agua. Lo que vemos en el vídeo generado es la evolución de este sistema de fluidos a lo largo del tiempo, con el flujo de fluido influyendo y extendiéndose por el medio circundante.

Esto es análogo a cómo se comporta el humo cuando se dispersa y se propaga en un espacio, reaccionando a fuerzas como la gravedad y la dinámica de fluidos.

El experimento demuestra cómo se puede simular la dinámica de fluidos con Genesis.

Simulación de fluidos

Simulación del movimiento de fluidos o gases en órbitas similares a cómo el humo o los chorros de gas se mueven a través del aire o el agua.

Conclusiones finales

  • Genesis se destaca en los campos de la robótica y las aplicaciones de inteligencia artificial física.
  • Permite la creación de objetos 3D, la simulación y visualización de las fuerzas que actúan sobre ellos, el modelado de la dinámica de fluidos y la representación de trazados de rayos fotorrealistas con un rendimiento optimizado, entre otras funciones.
  • Una aplicación es el aprendizaje por refuerzo para el entrenamiento de robots y drones, lo que les permite aprender políticas de locomoción y desarrollar comportamientos autónomos.
  • Las capacidades de IA generativa aún no se han publicado (por lo que, a pesar del anuncio, tendrás que esperar un poco más para crear vídeos ultrarrealistas a través de instrucciones)
  • Genesis está disponible en varias plataformas: se ejecuta en Linux, macOS y Windows, y es compatible con varios backends de procesamiento, incluidas CPU, GPU de NVIDIA y AMD y Apple Metal.

Conclusiones

Genesis ofrece una visión del futuro de la simulación y la IA generativa para aplicaciones de robótica e IA física. Desde la creación de objetos y entornos 3D y la simulación de la dinámica de fluidos hasta la habilitación del aprendizaje por refuerzo para sistemas autónomos, demuestra una versatilidad y un rendimiento incomparables.

A pesar de que sus capacidades de IA generativa aún están en desarrollo, las características existentes de la plataforma la convierten en una herramienta poderosa para la industria de la robótica, la física y la inteligencia artificial. Y aunque Genesis acaba de empezar, es otro testimonio de cómo la IA está remodelando la modelización del mundo físico.

Bibliografía

[1] https://genesis-world.readthedocs.io/en/latest/index.html

[2] https://github.com/Genesis-Embodied-AI/Genesis

[3] https://github.com/mkocabas/VIBE/issues/47

Anexo

Especificaciones de instancia (utilizadas para realizar pruebas)

  • Versión de Python: 3.9.20 (principal, 11 de diciembre de 2024, 00:00:00)
  • [GCC 11.4.1 20230605 (Red Hat 11.4.1-2)]
  • Versión de PyTorch: 2.5.1+cu124
  • CUDA disponible: Verdadero
  • Cantidad de GPU disponibles: 1
  • GPU 0: NVIDIA A10G
  • Versión CUDA: 12.4
  • Versión del controlador NVIDIA: 565.57.01
  • Versión de Genesis: 0.2.1
  • Similar Blogs de Marvik.

Cada viaje de IA comienza con una conversación

Hablemos
Hablemos