Table of Contents

Ejecución de la verificación de la extensión del visor montado en cabeza

La parte más crítica y también la más desafiante para hacer funcionar EasyAR en un dispositivo es garantizar la corrección de los datos de entrada. Cuando se ejecuta EasyAR por primera vez en un dispositivo nuevo, más del 90% de los problemas son causados por datos incorrectos.

Si es posible, se recomienda verificar directamente la corrección de los datos utilizando algunos métodos de prueba solo con el dispositivo y sus interfaces, sin la presencia de EasyAR. Este documento presenta algunos métodos empíricos utilizando las funciones de EasyAR para verificar datos. Este proceso puede ayudar a comprender los datos de fotograma de entrada externa, pero debido a que EasyAR en sí también introduce errores, usar este sistema acoplado para verificar la corrección de los datos no es la opción óptima.

Antes de comenzar

Ejecutar ejemplos de funciones básicas

Al ejecutar EasyAR por primera vez en un dispositivo, es necesario asegurarse de ejecutar estas funciones en orden, especialmente sin apresurarse a ejecutar Mega, ya que Mega tiene cierta tolerancia a fallos, y los problemas pueden ser difíciles de detectar cuando se ejecuta durante períodos cortos o en escenarios de realidad única.

  1. Observa la información de sesión mostrada frente a ti, asegúrate de que no ocurra nada inesperado y verifica que el recuento de frames aumente continuamente.

  2. Ejecuta Image, es decir, la función de seguimiento de imágenes, y compara su rendimiento con el de un teléfono móvil (se recomienda usar un iPhone como estándar). Presta atención al estado del seguimiento y a la visualización de la cobertura del objetivo.

    Cuando la fusión de movimiento no está activada, el seguimiento de imágenes tendrá una sensación de retraso notable, lo cual es esperado. Lo importante es que el movimiento sea correcto y que la posición se alinee cuando el dispositivo se detenga.

  3. Ejecuta Dense, es decir, la función de mapa espacial denso, y compara su rendimiento con el de un teléfono móvil (se recomienda usar un iPhone como estándar). Presta atención a la posición de la malla, la velocidad de generación y la calidad.

    Si la tasa de frames de los datos de entrada es baja, la velocidad de generación de la malla disminuirá, pero la calidad no se verá significativamente afectada.

    Esta función no puede ejecutarse en algunos dispositivos Android, y la calidad de la malla también variará según el dispositivo.

Importante

La extensión de entrada utilizada por el paquete de extensión para visores es una implementación de cámara personalizada.

Al usar productos de prueba (licencia personal, licencia XR de prueba o servicio Mega de prueba, etc.) en cámaras personalizadas o dispositivos de visualización, EasyAR Sense dejará de responder después de 100 segundos (los usuarios de Mega pueden ajustar la duración después de la aprobación a través del equipo comercial de EasyAR) cada vez que se inicie. No existe esta limitación al usar versiones pagadas de EasyAR Sense y el servicio EasyAR Mega pagado.

Si Image y Dense funcionan igual o mejor que en un teléfono móvil, entonces la mayoría de las funciones de EasyAR deberían funcionar correctamente en el dispositivo, y puedes comenzar a probar Mega.

Solución de problemas en ejecución: descomposición del problema

Si no puedes reproducir los mismos resultados que en el teléfono, aquí tienes un proceso detallado de descomposición del problema que puedes seguir para encontrar la causa raíz. Se recomienda monitorear siempre la salida de los system logs.

Paso cero: Comprender los errores del sistema del dispositivo de visualización

¿Recuerdas los requisitos de seguimiento de movimiento y visualización descritos en Preparar el dispositivo para AR/MR?

Importante

Los errores de seguimiento de movimiento/VIO siempre afectarán la estabilidad de los algoritmos de EasyAR de diferentes maneras.

Importante

Los errores del sistema de visualización pueden hacer que los objetos virtuales y los objetos reales no se alineen perfectamente.

En algunos casos con errores significativos, los objetos virtuales pueden parecer flotar por encima o por debajo de los objetos reales, y luego parecer "derivar" constantemente. Este fenómeno se puede observar en el Pico 4E, incluso sin usar EasyAR y solo abriendo su propia VST.

Paso 1: Verificar el estado de funcionamiento de la sesión

Mensajes de la interfaz de usuario Las funciones o datos necesarios para que el estado de la sesión se muestre como normal:

Si no puedes ver la información del estado de la sesión, intenta cambiar la opción a Log y luego lee el estado de la sesión y el nombre de la fuente de fotogramas que se está utilizando en los registros del sistema.

Puedes intentar eliminar todos los demás frame sources bajo el nodo ARSession y luego ver si hay algún cambio.

Paso dos: confirmar el recuento de fotogramas de cámara recibidos por EasyAR

Funcionalidades o datos que deben funcionar correctamente:

  • La ruta de los datos de fotogramas de cámara desde ExternalFrameSource en la capa de código de Unity (excluyendo la corrección de los datos y la ruta de datos hacia la capa nativa)

Este valor debería aumentar con el tiempo; de lo contrario, se mostrará un mensaje de advertencia después de unos segundos.

Si se descubre que este número no aumenta, debe solucionarse primero.

Paso 3: Grabar EIF en el dispositivo y luego reproducirlo en el editor de Unity

Funciones o datos que deben funcionar correctamente:

  • La ruta de entrada de datos de fotograma de cámara de ExternalFrameSource a la capa nativa (sin incluir la corrección de los datos)
  • raw camera image data en los datos de fotograma de cámara
  • timestamp en los datos de fotograma de cámara (no incluye puntos de tiempo ni sincronización de datos)

Haga clic en EIF para comenzar la grabación. Haga clic de nuevo para detenerla.

Consejo

Debe detener la grabación correctamente para obtener un archivo EIF indexable aleatoriamente.

Es mejor usar una escena limpia de EasyAR o los ejemplos de EasyAR al reproducir datos EIF en el editor de Unity, para evitar configuraciones incorrectas en la escena.

Puede ver la reproducción de los datos de fotograma de cámara en el editor de Unity. Los datos de imagen no son de igualdad de bytes; existe codificación con pérdidas en todo el flujo.

EasyAR utiliza parámetros de distorsión en los cálculos pero no aplica corrección de distorsión a la imagen al mostrarla. Por lo tanto, si se introducen estos datos, al reproducir un archivo EIF en Unity, se observarán datos sin corrección de distorsión, lo cual es esperado.

Consejo

Modifique la relación de aspecto de la ventana del juego de Unity para que coincida con la entrada; de lo contrario, los datos se recortarán al mostrarse.

Si la reproducción de datos es demasiado rápida o lenta, es necesario verificar la entrada de timestamp.

Nota

Puede hacer muchas cosas con EIF; puede ejecutar seguimiento de imágenes y mapa espacial denso en el editor de Unity usando EIF. Tenga en cuenta que el efecto visual durante la ejecución en el dispositivo podría ser diferente.

Paso cuatro: Ejecutar seguimiento de imágenes con eif

Funciones o datos obligatorios:

  • raw camera image data en datos de fotograma de cámara
  • intrinsics en datos de fotograma de cámara (la precisión no está totalmente garantizada, ya que el algoritmo tolera cierto margen de error)

Para ejecutar el ejemplo ImageTracking_Targets con eif en el editor de Unity, es necesario grabar un eif donde la imagen sea detectable.

Nota

El seguimiento de imágenes requiere que el objetivo ocupe una proporción significativa de la imagen. Si no se detecta, intenta acercar el dispositivo al objetivo.

Si el seguimiento falla repetidamente o los objetos virtuales aparecen lejos del objetivo en la imagen, es probable que existan problemas con los intrinsics.

Si los datos de imagen presentan distorsión, es posible que los objetos virtuales no cubran perfectamente el objetivo de seguimiento. Esto es normal. El efecto es más notable cuando el objetivo está cerca del borde de la imagen.

Paso 5: Ejecutar el seguimiento de imágenes en el dispositivo

Funcionalidades o datos que deben funcionar correctamente:

  • El sistema de visualización propio del dispositivo
  • raw camera image data en los datos del fotograma de la cámara
  • intrinsics en los datos del fotograma de la cámara (la precisión absoluta no está garantizada, ya que el algoritmo tolera cierto margen de error)
  • extrinsics en los datos del fotograma de la cámara
  • Consistencia de coordenadas del device pose entre los datos del fotograma de la cámara y los datos del fotograma de renderizado
  • Diferencia de tiempo del device pose entre los datos del fotograma de la cámara y los datos del fotograma de renderizado
Nota

El seguimiento de imágenes requiere que el objetivo ocupe una proporción significativa de la imagen completa. Si no se puede rastrear la imagen, intenta acercar la cabeza a la misma.

El seguimiento de imágenes requiere que la longitud horizontal de la imagen coincida con el tamaño del objeto en el mundo real. En el ejemplo, se necesita rastrear una imagen cuya longitud horizontal llene el lado largo de una hoja A4 en orientación horizontal. Por lo tanto, no rastreéis imágenes mostradas en la pantalla de un ordenador a menos que uséis una regla y ajustéis la longitud horizontal de la imagen al tamaño A4 según esta.

Si el seguimiento de imágenes es perfecto usando el EIF pero difiere en el dispositivo, es necesario resolver esto antes de continuar con otras pruebas. Solucionar problemas en pasos posteriores es mucho más difícil.

Si el objeto virtual aparece flotando lejos del objeto real, incluso cuando la persona permanece inmóvil, es muy probable que los intrinsics o extrinsics sean incorrectos, o que el device pose en los datos del fotograma de la cámara y los datos del fotograma de renderizado no estén en el mismo sistema de coordenadas, o que el sistema de visualización haya introducido este error.

Si el objeto virtual se mueve continuamente al mover la cabeza y parece tener retraso, existe una alta probabilidad de que el device pose no sea saludable. Esto ocurre frecuentemente en varios casos (sin excluir la posibilidad de otros problemas):

  • Los datos del device pose y los raw camera image data no están sincronizados en el tiempo.
  • Se utilizó la misma pose en los datos del fotograma de la cámara y los datos del fotograma de renderizado.

Paso 6: Usar EIF y ejecutar el mapa espacial denso en el dispositivo

Funcionalidades o datos que deben funcionar correctamente:

  • El propio sistema de visualización del dispositivo
  • raw camera image data en los datos del fotograma de la cámara
  • intrinsics en los datos del fotograma de la cámara (la precisión de los datos no está completamente garantizada, ya que el algoritmo tiene cierta tolerancia a errores)
  • extrinsics en los datos del fotograma de la cámara
  • device pose en los datos del fotograma de la cámara

Si la generación de la malla es extremadamente lenta y/o la reconstrucción del suelo está irregular con baches, es muy probable que haya un problema con el device pose. También es posible que el sistema de coordenadas de la pose sea incorrecto o que el momento temporal de la pose no sea el correcto.

Consejo

Si la frecuencia de fotogramas de entrada es baja, la generación de la malla también será más lenta, pero la calidad no se degradará notablemente. Este comportamiento es esperado.

Normalmente no es muy fácil discernir la posición exacta de la malla, por lo que los errores del sistema de visualización pueden no ser observables cuando se usa el mapa espacial denso.

Ejecuta el ejemplo de mega

Lee lo siguiente para aprender cómo usar Mega en Unity. Si aún no tienes acceso al servicio Mega, contacta al equipo comercial de EasyAR para obtener una prueba.

Luego ejecuta Mega en el dispositivo y compara los resultados con los de un teléfono móvil (se recomienda iphone como referencia). Presta atención a:

  • Si los objetos se muestran en la posición correcta
  • Si objetos distantes (a 10 m o más) se muestran con posición y tamaño correctos
  • Si objetos fuera del centro visual muestran posición y tamaño correctos
  • Si al girar la cabeza los objetos mantienen posición y tamaño correctos

Solución de problemas en funcionamiento

Funciones o datos que deben operar correctamente:

  • Sistema de visualización propio del dispositivo
  • Todos los datos en datos de fotograma de cámara y datos de fotograma de renderizado

Tras completar la verificación de las funciones de seguimiento de imágenes y mapa espacial denso, teóricamente EasyAR Mega debería estar soportado. Si el rendimiento en el visor es notablemente peor que en el móvil, preste atención a lo siguiente:

  • Revise los datos de pose y timestamp en datos de fotograma de cámara y datos de fotograma de renderizado
  • Supervise la salida del sistema de seguimiento de movimiento/VIO. El panda debajo de XR Origin será una buena referencia

Además, es crucial centrarse en el sistema de visualización propio del dispositivo, especialmente en la representación de objetos a distancia, fuera del centro de visión o al girar la cabeza. Estos escenarios suelen pasarse por alto en las pruebas internas, pero los problemas generalmente siguen originándose en el sistema de visualización del propio dispositivo. Debe comunicar estos problemas y sus posibles impactos a EasyAR, estableciendo expectativas realistas para los desarrolladores.

Importante

Los usuarios prestarán mucha atención a estos problemas de visualización, y muchos dispositivos no pueden ofrecer una visualización perfecta en entornos de gran escala. EasyAR no puede solucionar problemas inherentes al sistema de visualización del dispositivo; esto requiere iteraciones por parte del fabricante. Mientras tanto, los usuarios deberán entender estas limitaciones.

Próximos pasos

Temas relacionados

Ejemplos que pueden ejecutarse en teléfonos móviles:

  • Ejemplo de seguimiento de imágenes ImageTracking_Targets, permite comprender el rendimiento esperado de la función Seguimiento de imágenes
  • Ejemplo de mapa espacial denso SpatialMap_Dense_BallGame, permite comprender el rendimiento esperado de la función Mapa del espacio denso
  • Ejemplo de fusión de movimiento ImageTracking_MotionFusion, permite comprender el rendimiento esperado de la función Fusión deportiva
  • Ejemplo Mega MegaBlock_Basic, permite comprender el rendimiento esperado de la función Mega