Técnica El performance del seguimiento mundial se ve afectado por las limitaciones de resources

Mientras se ejecuta una session ARKit con rastreo mundial habilitado, la console Xcode muestra posts de logging sobre (presumo: networkingucido) el performance de rastreo , aunque

  • la session AR está en estado de seguimiento normal,

  • Estoy usando el dispositivo en una sala de oficina bien iluminada con muchas "características" para detectar y

  • El dispositivo se mueve solo sutilmente .

TLDR: Quiero comprender qué puede causarlos, qué impacto tienen y cómo prevenirlos, o (re) actuar sobre ellos cuando ocurren . NB. no simplemente ocultar el error.

[Technique] World tracking performance is being affected by resource constraints [0] [Technique] World tracking performance is being affected by resource constraints [1] 

La aplicación Console muestra que estos provienen de la biblioteca ARKit y caen en la categoría de logging Técnica . Aunque suenen como advertencias , la aplicación Console muestra su tipo como errores .

Como se esperaba mientras usaba el rastreo mundial, la aplicación Console muestra muchos loggings de CoreMotion alnetworkingedor del momento de los errores, pero esas líneas no parecen contener ningún error, advertencias u otra información que me ayude a diagnosticar lo que está sucediendo.

En el momento en que aparecen los errores en el logging, no hay callback delegada , pero eventualmente (cualquier cosa entre 5 segundos o 50 segundos) la pantalla se congelará con la falla de la session de callback:

 Error Domain=com.apple.arkit.error Code=200 "World tracking failed." UserInfo={NSLocalizedDescription=World tracking failed., NSLocalizedFailureReason=World tracking cannot determine the device's position.} 

La fuente / documentation de ARKit no proporciona ninguna pista sobre qué "restricciones de resources" podrían haber causado la incapacidad para determinar la position del dispositivo , simplemente dice:

El seguimiento del mundo ha encontrado un error fatal.

He intentado (sin éxito) evitar que aparezcan las advertencias:

  • restablecer el seguimiento de la session: errores incorrectos,

  • restablecer la session con la eliminación de todos los ARAnchor s: still errors,

  • desactivación de la detección de plano (una vez que ya no es necesario): errores de image fija,

Pausar la session AR silencia las advertencias (tiene sentido, ya que significa que el dispositivo detiene el seguimiento de su movimiento mientras está en pausa), pero al reanudar la session, las advertencias regresan.

Al cerrar la session y volver a crearla (es decir, descartar VC y volver a crear), al no haber movido la camera (o la iluminación cambiada), el problema no siempre vuelve a ocurrir.

Mi mejor suposition es que las luces TL parpadeantes son la causa de las advertencias de performance de rastreo, dada la explicación de Apple sobre cómo funciona el rastreo mundial :

… odometría visual inercial. Este process combina información del hardware de detección de movimiento del dispositivo iOS con el análisis de visión por computadora de la escena visible en la camera del dispositivo. ARKit reconoce características notables en la image de la escena, rastrea las diferencias en las posiciones de esas características en todos los frameworks de video y compara esa información con los datos de detección de movimiento.

(iPhone 6S, iOS 11 beta 4, no hay otras aplicaciones que se ejecuten en segundo plano)


Preguntas:

  • ¿Cuál es la diferencia entre [0] y [1] ?

  • ¿Qué puede causar estos errores?

  • ¿Qué impacto tienen mientras la ARSession no ha fallado (todavía)? Asumo que veremos models "saltos" ya que las coorderadas mundiales suministradas por las actualizaciones de cuadros no son precisas -NB. después de restablecer / detener el seguimiento de ARAnchor los errores.

  • ¿Sabremos si la session AR está a punto de fallar o será inesperada? (Una vez más, la ARSession no falla inmediatamente después de que el estado de seguimiento cambie a "limitado")

  • ¿Hay alguna forma de lidiar con esto, por ejemplo liberando estas "limitaciones de resources" mencionadas, o incluso evitando que se produzcan?

Puede no estar relacionado con la pregunta exacta. Pero cuando obtuve ese error particular ([Técnica] El performance del seguimiento del mundo se ve afectado por las restricciones de resources), acabo de hacer una limpieza y build una vez más. Además, sucedió cuando intenté agregar una image, eliminé la image del proyecto y la volví a agregar a xcassets.

Este error me sucedió porque agregué manualmente un controller de vista en el guión gráfico y agregué una ARSKView . Esto lo agrega como un elemento secundario a una UIView que es, por defecto, una vista secundaria en un UIViewController . Por lo tanto, para soportar la orientación horizontal y vertical, tuve que agregar restricciones de layout automático, que por alguna razón desencadenaron este error .

Cuando miré el proyecto stock AR, el ARSKView es un elemento secundario del controller de vista, y es compatible con todos los tamaños y orientaciones de vista desde el ARSKView sin restricciones de layout automático. Cuando lo configuré de esta manera, los errores desaparecieron.