Validación de ejecución (bring-up) de la extensión de headset
Para que EasyAR funcione en un dispositivo, el trabajo mas importante y tambien el mas dificil es asegurar que los datos de entrada sean correctos. Al ejecutar EasyAR por primera vez en un dispositivo nuevo, mas del 90% de los problemas se deben a datos erroneos.
Si es posible, se recomienda validar directamente la correccion de los datos mediante el dispositivo y sus interfaces, sin EasyAR. Este articulo presenta algunos metodos empiricos para validar datos usando funciones de EasyAR. Este proceso ayuda a comprender datos de fotogramas de entrada externos, pero como EasyAR tambien tiene errores propios, validar la correccion de los datos con este sistema acoplado no es la mejor opcion.
Antes de empezar
- Complete el desarrollo de hacer que un headset admita EasyAR.
- Lea Inicio rapido para conocer como usar EasyAR Sense Unity Plugin.
- Conozca como usar ejemplos de headset.
- Conozca la configuracion de proyecto Android.
Ejecutar ejemplos de funciones basicas
La primera vez que valide EasyAR en el dispositivo, asegurese de ejecutar estas funciones en orden. En especial, no se apresure a ejecutar Mega, porque Mega tiene cierta tolerancia a errores y, al ejecutarlo durante poco tiempo o en una unica escena real, es dificil detectar problemas.
Observe la informacion de session mostrada delante de los ojos, asegurese de que no ocurran situaciones inesperadas y confirme que frame count sigue aumentando.
Ejecute
Image, es decir, la funcion de seguimiento de imagen, y compare que el efecto coincida con el del telefono (se recomienda usar iPhone como referencia). Preste atencion al estado de seguimiento y a la visualizacion superpuesta sobre el target.Cuando la fusion de movimiento no esta habilitada, el seguimiento de imagen tendra una sensacion evidente de retraso, lo cual es esperado. Basta con que el proceso de movimiento sea correcto y que la posicion se alinee cuando el dispositivo se detiene.
Ejecute
Dense, es decir, la funcion de mapa espacial denso, y compare que el efecto coincida con el del telefono (se recomienda usar iPhone como referencia). Preste atencion a la posicion de la malla, la velocidad de generacion y la calidad.Si el frame rate de los datos de entrada es bajo, la generacion de malla sera mas lenta, pero la calidad no empeorara de forma evidente.
Esta funcion no puede ejecutarse en algunos dispositivos Android, y la calidad de la malla tambien cambiara segun el dispositivo.
Importante
La extension de entrada usada por el paquete de extension de headset es una implementacion de camara personalizada.
Al usar productos de prueba en una cámara personalizada o en un visor (license de edición personal, license XR de prueba o servicio Mega de prueba, etc.), EasyAR Sense dejará de responder 100 segundos después de cada inicio (los usuarios de Mega pueden ajustar la duración a través de EasyAR Business tras la aprobación). Las versiones de pago de EasyAR Sense y los servicios de pago de EasyAR Mega no tienen esta limitación.
Si Image y Dense tienen un comportamiento igual o mejor que en el telefono, la mayoria de las funciones de EasyAR podran funcionar normalmente en el dispositivo, y puede empezar a probar Mega.
Resolver situaciones anormales durante la ejecucion: desglose de problemas
Si no puede reproducir los mismos resultados que en el telefono, lo siguiente es un proceso detallado de desglose de problemas que puede consultar para encontrar la causa raiz. Se recomienda prestar siempre atencion a la salida de logs del sistema.
Paso cero: comprender los errores propios del sistema del headset
Recuerda los requisitos de seguimiento de movimiento y visualizacion descritos en preparar dispositivos para AR/MR?
Importante
Los errores de seguimiento de movimiento/VIO siempre afectan de distintas formas a la estabilidad de los algoritmos de EasyAR.
Importante
Los errores del sistema de visualizacion pueden impedir que los objetos virtuales y reales se alineen perfectamente.
En algunas situaciones con errores relativamente grandes, los objetos virtuales pueden parecer flotar por encima o por debajo de los objetos reales y luego seguir derivando. Este fenomeno puede observarse en Pico 4E; incluso sin usar EasyAR y solo abriendo su propio VST ocurre lo mismo.
Paso uno: revisar el estado de ejecucion de la session
Funciones o datos que deben ser normales para que el estado de session en mensajes UI se muestre correctamente:
Disponibilidadde ExternalFrameSourceCamara virtualde ExternalFrameSource
Si no puede ver la informacion de estado de la session, intente modificar la opcion a Log y lea en los logs del sistema el estado de la session y el nombre del frame source que se esta usando.
Puede intentar eliminar todos los demas frame source bajo el nodo ARSession y comprobar si hay algun cambio.
Paso dos: confirmar el contador de fotogramas de camara recibidos por EasyAR
Funcion o dato que debe ser normal:
- Ruta de
datos de fotogramas de camarade ExternalFrameSource en la capa de codigo Unity (no incluye la correccion de datos ni la ruta de datos hacia la capa nativa)
Este dato debe aumentar con el tiempo; de lo contrario, se mostrara una advertencia despues de unos segundos.
Si descubre que este valor no aumenta, debe resolverlo primero.
Paso tres: grabar EIF en el dispositivo y reproducirlo en el editor Unity
Funciones o datos que deben ser normales:
- Ruta de entrada de
datos de fotogramas de camarade ExternalFrameSource hacia la capa nativa (no incluye la correccion de datos)raw camera image dataendatos de fotogramas de camaratimestampendatos de fotogramas de camara(no incluye el instante temporal ni la sincronizacion de datos)
Haga clic en EIF para iniciar la grabacion y vuelva a hacer clic para detenerla.
Consejo
Debe detener la grabacion correctamente para obtener un archivo EIF con indexacion aleatoria.
Al ejecutar datos EIF en el editor Unity, es mejor usar una escena EasyAR limpia o ejemplos de EasyAR para evitar configuraciones incorrectas en la escena.
Puede ver en el editor Unity la reproduccion de datos de fotogramas de camara. Los datos de imagen no son iguales byte a byte, porque en todo el proceso hay codificacion y decodificacion con perdida.
EasyAR usa los parametros de distorsion en el calculo, pero no corrige la distorsion de la imagen al mostrarla. Por lo tanto, si introduce estos datos, al reproducir el archivo EIF en Unity observara datos sin correccion de distorsion, lo cual es esperado.
Consejo
Modifique la proporcion de la ventana Unity game para que coincida con la entrada; de lo contrario, los datos se mostraran recortados.
Si los datos se reproducen demasiado rapido o demasiado lento, debe comprobar la entrada de timestamp.
Nota
EIF se puede usar para muchas cosas. Puede ejecutar seguimiento de imagen y mapa espacial denso con EIF en el editor Unity. Tenga en cuenta que el efecto de visualizacion puede ser distinto al ejecutarlo en el dispositivo.
Paso cuatro: ejecutar seguimiento de imagen con EIF
Funciones o datos que deben ser normales:
raw camera image dataendatos de fotogramas de camaraintrinsicsendatos de fotogramas de camara(la correccion de datos no puede garantizarse por completo, porque el algoritmo tolera errores)
Ejecute el ejemplo de seguimiento de imagen ImageTracking_Targets en el editor Unity usando EIF. Debe grabar un EIF en el que se pueda seguir una imagen.
Nota
Seguimiento de imagen requiere que el target de seguimiento ocupe cierta proporcion de toda la imagen. Si no se puede seguir la imagen, intente mover la cabeza mas cerca de la imagen.
Si el seguimiento falla continuamente o el objeto virtual se muestra en una posicion alejada del target en la imagen, es muy probable que haya un problema con intrinsics.
Si los datos de imagen tienen distorsion, puede ver que el objeto virtual no cubre perfectamente el target de seguimiento en la imagen, lo cual es esperado. Este fenomeno sera mas evidente cuando el target de seguimiento este en el borde de la imagen.
Paso cinco: ejecutar seguimiento de imagen en el dispositivo
Funciones o datos que deben ser normales:
- Sistema de visualizacion propio del dispositivo
raw camera image dataendatos de fotogramas de camaraintrinsicsendatos de fotogramas de camara(la correccion de datos no puede garantizarse por completo, porque el algoritmo tolera errores)extrinsicsendatos de fotogramas de camara- Consistencia de coordenadas de
device poseendatos de fotogramas de camaraydatos de fotogramas de renderizado- Diferencia temporal de
device poseendatos de fotogramas de camaraydatos de fotogramas de renderizado
Nota
Seguimiento de imagen requiere que el target de seguimiento ocupe cierta proporcion de toda la imagen. Si no se puede seguir la imagen, intente mover la cabeza mas cerca de la imagen.
Seguimiento de imagen requiere que la longitud horizontal de la imagen coincida con el tamano del objeto en el mundo real. En el ejemplo, debe seguir una imagen cuya longitud horizontal llene el lado largo de una hoja A4 colocada horizontalmente; por lo tanto, no siga una imagen mostrada en la pantalla de un ordenador, a menos que use una regla y ajuste la longitud horizontal de la imagen al tamano A4.
Si el seguimiento de imagen es perfecto al usar EIF pero diferente en el dispositivo, debe resolverlo antes de continuar con otras pruebas. Sera mucho mas dificil resolver problemas en los pasos posteriores.
Si el objeto virtual se muestra flotando en algun lugar lejos del objeto real, y esto ocurre incluso cuando la persona no se mueve, es muy probable que intrinsics o extrinsics sean incorrectos, que device pose en datos de fotogramas de camara y datos de fotogramas de renderizado no esten en el mismo sistema de coordenadas, o que el sistema de visualizacion este produciendo este error.
Si el objeto virtual sigue moviendose al mover la cabeza y parece tener retraso, es muy probable que device pose no sea saludable. Esto ocurre a menudo en varias situaciones (sin excluir la posibilidad de otros problemas):
device poseyraw camera image datano estan sincronizados en el tiempo- Se usa el mismo pose en
datos de fotogramas de camaraydatos de fotogramas de renderizado
Paso seis: ejecutar mapa espacial denso con EIF y en el dispositivo
Funciones o datos que deben ser normales:
- Sistema de visualizacion propio del dispositivo
raw camera image dataendatos de fotogramas de camaraintrinsicsendatos de fotogramas de camara(la correccion de datos no puede garantizarse por completo, porque el algoritmo tolera errores)extrinsicsendatos de fotogramas de camaradevice poseendatos de fotogramas de camara
Si la velocidad de generacion de la malla es muy lenta y/o la reconstruccion del suelo es irregular, es muy probable que haya un problema con device pose. Tambien es posible que el sistema de coordenadas del pose sea incorrecto o que el instante temporal del pose sea incorrecto.
Consejo
Si el frame rate de los datos de entrada es bajo, la generacion de malla tambien sera mas lenta, pero la calidad no empeorara de forma evidente. Esta situacion es esperada.
Normalmente no es muy facil distinguir la posicion exacta de la malla, por lo que al usar mapa espacial denso el error del sistema de visualizacion no siempre puede observarse.
Ejecutar el ejemplo de Mega
Lea lo siguiente para conocer como usar Mega en Unity. Si aun no ha activado el servicio Mega, contacte con el equipo comercial de EasyAR para obtener una prueba.
- Introduccion a EasyAR Mega
- Mi funcion de localizacion ya se puede usar? confirma que la biblioteca de localizacion se haya creado correctamente y se hayan agregado mapas.
- Inicio rapido con el ejemplo EasyAR Mega Unity
Luego ejecute Mega en el dispositivo y compare que el efecto coincida con el del telefono (se recomienda usar iPhone como referencia). Preste atencion a:
- Si la posicion de visualizacion de los objetos es correcta
- Si la posicion y el tamano de objetos lejanos (10 m o mas) son correctos
- Si la posicion y el tamano de objetos fuera del centro de la vista son correctos
- Si la posicion y el tamano de objetos al girar la cabeza son correctos
Resolver situaciones anormales durante la ejecucion
Funciones o datos que deben ser normales:
- Sistema de visualizacion propio del dispositivo
- Todos los datos en
datos de fotogramas de camaraydatos de fotogramas de renderizado
Despues de completar la validacion de seguimiento de imagen y mapa espacial denso, en teoria EasyAR Mega ya deberia estar admitido. Si el comportamiento en el headset es claramente peor que en el telefono, debe prestar atencion a lo siguiente:
- Prestar atencion a los datos de pose y timestamp en
datos de fotogramas de camaraydatos de fotogramas de renderizado - Prestar atencion a la salida del sistema de seguimiento de movimiento/VIO. El panda bajo
XR Origines una buena referencia
Ademas, debe prestar especial atencion al sistema de visualizacion propio del dispositivo, especialmente al efecto de visualizacion de objetos lejanos, fuera del centro de la vista y al girar la cabeza. Estos escenarios se pasan por alto a menudo durante las pruebas del propio dispositivo, pero normalmente el problema sigue estando causado por el sistema de visualizacion del dispositivo. Debe explicar estos problemas y sus posibles efectos a EasyAR y proporcionar expectativas razonables a los desarrolladores.
Importante
Los usuarios prestaran mucha atencion a estos problemas de visualizacion, y muchos dispositivos realmente no pueden ofrecer un efecto de visualizacion perfecto en escenas de gran espacio. EasyAR no puede resolver los problemas de visualizacion propios del dispositivo; esto debe resolverlo el fabricante del dispositivo mediante iteraciones, y al mismo tiempo los usuarios deben comprender estos problemas.
Pasos siguientes
Temas relacionados
Ejemplos que se pueden ejecutar en el telefono:
- Ejemplo de seguimiento de imagen ImageTracking_Targets, que permite conocer el efecto de ejecucion esperado de la funcion seguimiento de imagen
- Ejemplo de mapa espacial denso SpatialMap_Dense_BallGame, que permite conocer el efecto de ejecucion esperado de la funcion mapa espacial denso
- Ejemplo de fusion de movimiento ImageTracking_MotionFusion, que permite conocer el efecto de ejecucion esperado de la funcion fusion de movimiento
- Ejemplo Mega MegaBlock_Basic, que permite conocer el efecto de ejecucion esperado de la funcion Mega