Técnico

Explorando NVIDIA Omniverse e Isaac Sim

Share

Este blog ofrece una descripción general del ecosistema NVIDIA Omniverse, con un énfasis especial en NVIDIA Isaac Sim.

Introducción

NVIDIA Omniverse™ es una plataforma de API, SDK y servicios. Ayuda a los desarrolladores a utilizar las herramientas de renderizado Universal Scene Description (OpenUSD) y NVIDIA RTX™. Estas herramientas se pueden agregar al software actual y a los procesos de simulación para crear sistemas de inteligencia artificial.

Además, NVIDIA Omniverse incluye aplicaciones clave que abordan varios aspectos del diseño, la simulación y la colaboración en 3D.

Es importante tener en cuenta que Omniverse admite muchas formas de hacer lo mismo. Por ejemplo, puede generar datos sintéticos utilizando la GUI o los scripts de Python. Por ello, es especialmente importante tener esto en cuenta a la hora de buscar tutoriales.

Aplicaciones omniversas

Compositor USD

USD Composer es una aplicación adaptable basada en RTX para la creación y edición de escenas en OpenUSD. Los usuarios pueden construir, iluminar, probar y renderizar grandes escenas con ella. Esta herramienta se basa en el USD de Pixar. Omniverse USD Composer aprovecha los flujos de trabajo avanzados del USD, como las capas, las variantes y las instancias. Como resultado, permite el trazado de rayos y rutas en tiempo real, así como la simulación física de objetos.

Conexiones USD

OpenUSD Connections es una colección de complementos de importación, exportación, conversor y formato de archivo USD. Estas herramientas permiten que varias aplicaciones, productos y formatos de archivo 3D intercambien datos utilizando el formato Universal Scene Description (openUSD o USD). Además, facilita el intercambio de datos sin interrupciones entre plataformas.

Núcleo omniverso

Omniverse Nucleus actúa como servidor principal de la plataforma. Concretamente, administra el almacenamiento, el trabajo en equipo y el intercambio de datos entre usuarios y aplicaciones. Al actuar como un centro de datos y activos, garantiza que varios usuarios puedan trabajar en el mismo proyecto en tiempo real.

Por ejemplo, los usuarios pueden compartir escenas completas o activos individuales, y los cambios realizados por un usuario se reflejan instantáneamente para los demás. Esto garantiza que todos los usuarios tengan acceso a las versiones más recientes de los archivos y activos, lo que reduce el riesgo de trabajar con información desactualizada.

Además, la plataforma admite varios formatos de archivos y aplicaciones 3D, lo que facilita la importación, exportación y administración de activos desde diferentes herramientas de software. Esta interoperabilidad ayuda a agilizar los flujos de trabajo entre los diferentes equipos.

NVIDIA Isaac

NVIDIA Isaac es una plataforma diseñada para la robótica, que combina hardware y software para permitir el desarrollo y la implementación de robots inteligentes. Incluye a Isaac ROS e Isaac Sim.

Isaac ROS

Esta integración facilita el desarrollo y el uso de aplicaciones robóticas. Permite a los usuarios simular y probar sin problemas robots basados en ROS. También admite la compatibilidad entre diferentes herramientas robóticas, lo que facilita el paso de la simulación al uso en el mundo real.

Las principales características de Isaac ROS incluyen:

  • Isaac ROS Visual SLAM: localización y mapeo visual simultáneos. Utiliza una o más cámaras estéreo y, opcionalmente, un sensor IMU.
  • Isaac ROS contra Blox: utiliza datos RGB-D para crear un mapa 3D denso, que incluye obstáculos imprevistos, a fin de generar un mapa de costes temporal para la navegación.
  • Estimación de postura de Isaac ROS: modelo básico para la estimación y el seguimiento de posturas en 6D.
  • Isaac ROS CuMotion: Biblioteca acelerada por CUDA para resolver problemas de planificación del movimiento de los robots a escala mediante la ejecución simultánea de múltiples optimizaciones de trayectoria para obtener la mejor solución.

Isaac Sim

Isaac Sim es una potente herramienta de simulación para el desarrollo de robótica e IA. Por ejemplo, los desarrolladores pueden usarla para crear entornos 3D realistas para modelar el comportamiento de los robots, probar algoritmos y ver los datos de los sensores.
Además, las herramientas avanzadas de física, renderizado e inteligencia artificial permiten a los usuarios crear simulaciones detalladas y realistas. Esta capacidad es especialmente útil para entrenar modelos de aprendizaje automático, validar diseños robóticos y probar escenarios sin prototipos físicos. Además, la plataforma admite simulaciones de múltiples robots o agentes que interactúan en entornos compartidos, lo que permite realizar estudios sobre el trabajo en equipo y la coordinación.

Las principales características de Isaac Sim incluyen:

  • Simulaciones físicas: simule interacciones físicas realistas, incluida la detección de colisiones y el soporte de modelado de fricción.
  • Renderización: ofrece capacidades de renderizado de alta fidelidad en tiempo real mediante la tecnología NVIDIA RTX. Es compatible con técnicas de renderizado de base física (PBR), lo que permite obtener imágenes fotorrealistas con iluminación, sombras y reflejos precisos.
  • Creación de entornos: crea entornos 3D con obstáculos y elementos interactivos. Viene con activos prediseñados (robots, sensores, objetos).
  • Simulación de sensores: simula una variedad de sensores, incluidas cámaras, LiDAR, IMU y más.

Instalación de Isaac Sim

Hay dos métodos para instalar Isaac Sim:

  • Instalación de contenedores: recomendado para servidores remotos sin cabecera de la nube, utilizando un contenedor Docker.
  • Instalación de estaciones de trabajo: también se puede instalar desde Omniverse Launcher y se recomienda para los usuarios de estaciones de trabajo.

Lanzar Isaac Sim desde Omniverse Launcher

Desde Omniverse Launcher lanza Isaac Sim. Esto abre el selector de aplicaciones de Isaac Sim, que permite iniciar uno de los tres modos de Isaac Sim.

  1. Isaac Sim: abre la GUI.
  2. Isaac Sim (nativo sin cabeza): para transmitir en vivo a través del cliente de transmisión Omniverse.
  3. Isaac Sim (WebRTC sin cabeza): para usar Isaac Sim con el WebRTC Browser Client.

Flujos de trabajo de Isaac Si

Hay tres flujos de trabajo principales cuando se desarrolla en Isaac Sim: GUI, extensiones y Python independiente. Este es un resumen rápido de las funciones clave y sus usos recomendados:

Flujo de trabajoCaracterísticas principales Uso recomendadoInterfaz guiVisual Construcción del mundo, ensamblaje de robots, conexión de sensores, inicialización de ROS BridgesExtensionsEjecute de forma asincrónica Cree GUI interactivas, aplicaciones sensibles al tiempo real Python independiente El control del tiempo de los pasos de la física y el renderizado se puede ejecutar en modo headless. Entrenamiento a escala para el aprendizaje por refuerzo, la generación sistemática del mundo y la modificación

Isaac Sim a través de la interfaz GUI

Aquí describimos los elementos de la interfaz de usuario que son exclusivos de Isaac Sim.

  1. Crear > Isaac: abre el menú Crear de Isaac
  2. Utilidades: abre el menú Utilidades de Isaac
  3. Ejemplos: abre el menú de ejemplos de Isaac
  4. Replicador: abre el menú Replicador
  5. Panel de recursos de Isaac: acceso rápido a todos los recursos de la biblioteca de Isaac Sim

Ventana

La ventana gráfica muestra representaciones en tiempo real y de alta calidad de escenas 3D. En concreto, utiliza herramientas avanzadas como NVIDIA RTX para el trazado de rayos.

En la ventana gráfica, los usuarios pueden moverse por la simulación, cambiar los ángulos de la cámara, acercar y alejar la imagen y ajustar los objetos. Permite una inspección detallada de las simulaciones con iluminación, sombras y reflejos precisos, lo que permite a los usuarios analizar y perfeccionar sus modelos y entornos robóticos de forma eficaz.

  1. Configuración de la ventana gráfica (por ejemplo, configuración de navegación, configuración de cuadrícula)
  2. Modo de renderizado (seleccione el renderizador y los ajustes de renderizado)
  3. Visibilidad de la interfaz
  4. Cámara: le permite seleccionar una cámara desde una perspectiva preconfigurada (por ejemplo, superior, frontal, derecha) o desde una perspectiva prim. Los controles adicionales de la cámara incluyen la lente, el zoom, la distancia focal, la exposición y los ajustes ISO.

Isaac Sim mediante extensión

Las extensiones son módulos de aplicación creados de forma individual. La característica principal de este flujo de trabajo es que la aplicación se ejecuta de forma asincrónica. Esto permite que las aplicaciones de extensión interactúa con el escenario USD sin bloquear el renderizado y los pasos de la física. También permite la recarga en caliente, por lo que puedes cambiar el código de la aplicación mientras Isaac Sim está en ejecución y ver los cambios reflejados en la aplicación tras guardar el archivo, sin necesidad de cerrar o reiniciar Isaac Sim.

Para empezar a usar este flujo de trabajo, debes usar el generador de plantillas de extensiones de Isaac Sim para rellenar una extensión basada en la interfaz de usuario en una máquina local. La plantilla ofrece un punto de partida para crear una herramienta de interfaz de usuario personalizada. Para obtener más información, consulta la documentación.

Isaac Sim a través de la extensión Jupyter Notebook

Con Isaac Sim abierto, ve a la pestaña «Ventana» y selecciona «Extensiones». Una vez allí, usa la barra de búsqueda para escribir «cuaderno» y haz clic en la extensión llamada»Integración con Jupyter Notebook». Activa esta extensión y, como paso opcional (pero recomendado), marca la opción «Carga automática» para asegurarte de que la extensión esté siempre activa cuando ejecutes Isaac Sim.

Con la extensión activa, vaya al navegador de escritorio de la instancia EC2 en la que está instalado Isaac Sim e introduzca la siguiente dirección para acceder a Jupyter Lab: http://127.0.0.1:8228/lab. Si desea acceder a Jupyter Lab de forma remota, utilice la dirección IP pública de la instancia EC2 junto con puerto 8228, así: <PUBLIC_IP>http: //:8228/lab.

Isaac Sim a través de Python independiente

Se puede ejecutar en modo Python independiente, que es ideal para personalizar simulaciones directamente a través de scripts de Python. Esta configuración permite a los desarrolladores controlar el entorno de simulación, interactuar con los objetos de la escena y configurar las opciones físicas y de renderizado con mayor flexibilidad. Ejecutarlo de esta manera es especialmente útil para las pruebas automatizadas, la creación de prototipos y las simulaciones en tiempo real, donde se prefiere una sobrecarga gráfica mínima.

Configuración y ejecución del contenedor Docker de Isaac Sim

Para empezar, inicie el contenedor Docker con el siguiente comando y asegúrese de que estén configurados todos los puntos de montaje y configuraciones necesarios:

docker run --name isaac-sim --entrypoint bash -it --gpus all -e «ACCEPT_EULA=Y» --rm --network=host\

-e «PRIVACY_CONSENT=Y»\

-v ~/docker/isaac-sim/cache/kit: /isaac-sim/kit/cache:rw\

-v ~/docker/isaac-sim/cache/ov: /root/.cache/ov:rw\

-v ~/docker/isaac-sim/cache/pip: /root/.cache/pip:rw\

-v ~/docker/isaac-sim/cache/glcache: /root/.cache/nvidia/glcache:rw\

-v ~/docker/isaac-sim/cache/computecache: /root/.nv/computecache:rw\

-v ~/docker/isaac-sim/logs: /root/.nvidia-omniverse/logs:rw\

-v ~/docker/isaac-sim/data: /root/.local/share/ov/data:rw\

-v ~/docker/isaac-sim/documentos: /root/documents:rw\

nvcr.io/nvidia/isaac-sim:4.2.0

Una vez dentro del contenedor, puede explorar los directorios disponibles ejecutando ls. Las carpetas clave incluyen:

  • ejemplos independientes: Contiene guiones de muestra que muestran varias funciones de Isaac Sim.
  • python.sh: Se usa para ejecutar scripts de Python con las variables de entorno necesarias para Isaac Sim.

Ejemplos clave de Python independiente

A continuación se muestran algunos scripts de Python independientes útiles para empezar a usar Isaac Sim.

Paso del tiempo
En este ejemplo se muestra cómo iniciar la aplicación Omniverse Kit Python y crear devoluciones de llamada para cada marco de renderizado y paso de tiempo de física. También ilustra diferentes métodos para controlar la física y los pasos de renderizado.

. /python.sh standalone_examples/api/omni.isaac.core/time_stepping.py

Cargar USD Stage
En este ejemplo se carga una etapa USD e inicia una simulación. Especifique el usd_path para la ubicación deseada en el servidor Nucleus.

. /python.sh standalone_examples/api/omni.isaac.kit/load_stage.py --usd_path /isaac/environments/simple_room/simple_room.usd

Transmisión en vivo
Este ejemplo permite la transmisión en directo mientras se ejecuta Isaac Sim en el modo Python nativo, compatible con el backend de Omniverse Streaming Client. Consulta la documentación de la transmisión en directo para obtener más información sobre la configuración del cliente.

. /python.sh standalone_examples/api/omni.isaac.kit/livestream.py

Extensiones Omniverse

Las extensiones Omniverse son los componentes básicos de las aplicaciones basadas en Omniverse Kit. Una extensión es un paquete con un nombre y una versión únicos que se carga en tiempo de ejecución. Las extensiones son complementos que se pueden usar para ampliar la funcionalidad de las aplicaciones existentes.

Para instalar/habilitar/deshabilitar una extensión en Isaac Sim, ve a Window>Extensions.

Categorías de extensiones

Estas son algunas categorías clave de extensiones, pero hay más en la documentación de Omniverse Extension. Replicator Extension merece una sección aparte.

Materiales

Esta sección contiene extensiones que le permiten crear, importar/exportar y administrar materiales en Omniverse.

OmniGraph

OmniGraph es un motor para manipular escenas mediante programación con una interfaz de secuencias de comandos visuales basada en gráficos. Hay dos tipos de gráficos que puede crear en OmniGraph: los gráficos de acción, que permiten comportamientos basados en eventos, y los gráficos push, que evalúan los nodos de forma continua.

Un Gráfico de acción es un OmniGraph que desencadena acciones en respuesta a un evento en particular.

Extensión Omniverse Replicator

El Omniverse Replicator (omni.replicator) permite a los desarrolladores crear herramientas y canalizaciones personalizadas de generación de datos sintéticos (SDG). Encontrará una descripción más detallada en la siguiente sección.

Componentes principales

Replicator se compone de seis componentes que permiten la generación de datos sintéticos. Durante la generación de un conjunto de datos, el flujo de trabajo más común consiste en distribuir aleatoriamente una escena, seleccionar los anotadores y, a continuación, escribir en el formato deseado. Sin embargo, si necesitas una mayor personalización, tienes acceso a datos omnisintéticos.

Editor de esquemas semánticos

Se requieren anotaciones semánticas (datos «de interés» relacionados con una malla determinada) para utilizar correctamente la extensión de datos sintéticos. Estas anotaciones informan a la extensión sobre qué objetos de la escena necesitan cajas delimitadoras, estimaciones de poses, etc. El editor de esquemas semánticos proporciona una forma de aplicar estas anotaciones a los primos del escenario a través de una interfaz de usuario.

Visualizador

El visualizador Replicator le permite visualizar las etiquetas semánticas de los cuadros delimitadores 2D/3D, las normales, la profundidad y más.

Aleatorizadores

Las herramientas de aleatorización de Replicator permiten crear escenas de dominio aleatorio, tomando muestras de activos, materiales, iluminación y posiciones de cámara.

Omni.Datos sintéticos

Componente de nivel más bajo de Replicator. Proporciona una integración de bajo nivel con el renderizador RTX y OmniGraph.

Anotadores

El propio sistema de anotaciones ingiere los AOV y otros resultados de la extensión omni.syntheticdata para producir anotaciones etiquetadas con precisión para el entrenamiento profundo de redes neuronales.

Escritores

Los escritores procesan las imágenes y otras anotaciones de los anotadores y producen formatos de datos específicos para el entrenamiento. Pueden enviarlos al almacenamiento local y a los backends de almacenamiento basados en la nube.

Conclusión

Estas herramientas facilitan la creación y el etiquetado de datos sintéticos, lo cual es importante para entrenar modelos de IA. El uso de NVIDIA Omniverse e Isaac Sim ayuda a los desarrolladores a trabajar más rápido, ahorrar dinero y mejorar el trabajo en equipo. También los mantiene a la vanguardia de la tecnología en un mundo más automatizado. Para blogs similares, visite Blogs de Marvik.

Cada viaje de IA comienza con una conversación

Hablemos
Hablemos