Table of Contents

Verifica del funzionamento (bring-up) dell'estensione head-mounted

Per far funzionare EasyAR sul dispositivo, la parte più importante e allo stesso tempo più complessa è garantire la correttezza dei dati di input. Quando si esegue EasyAR per la prima volta su un nuovo dispositivo, oltre il 90% dei problemi sono causati da dati errati.

Se possibile, si consiglia di verificare direttamente la correttezza dei dati senza la presenza di EasyAR, utilizzando solo il dispositivo e le sue interfacce con metodi di test. Questo documento descrive alcuni approcci empirici per convalidare i dati utilizzando le funzionalità di EasyAR. Questo processo può aiutare a comprendere i dati del frame di input esterno, ma poiché EasyAR stesso introduce errori, utilizzare questo sistema accoppiato per convalidare la correttezza dei dati non è la scelta ottimale.

Prima di iniziare

Esegui esempio di funzionalità di base

Quando si esegue la verifica di EasyAR sul dispositivo per la prima volta, è necessario assicurarsi di eseguire queste funzionalità in sequenza, in particolare senza affrettarsi a eseguire Mega, poiché Mega ha una certa tolleranza agli errori e i problemi potrebbero essere difficili da rilevare quando eseguito per brevi periodi o in scenari di realtà singola.

  1. Osserva le informazioni della sessione visualizzate, assicurati che non si verifichino situazioni impreviste e che il frame count continui ad aumentare.

  2. Esegui Image, ovvero la funzionalità di image tracking, e confronta l'effetto con l'esecuzione su smartphone (si consiglia di prendere come riferimento iPhone). Presta attenzione allo stato del tracking e alla visualizzazione della copertura del target.

    Quando la fusione del movimento non è attivata, l'image tracking avrà una sensazione di ritardo evidente, il che è previsto. È sufficiente che il movimento sia corretto e che la posizione si allinei quando il dispositivo si ferma.

  3. Esegui Dense, ovvero la funzionalità di dense spatial mapping, e confronta l'effetto con l'esecuzione su smartphone (si consiglia di prendere come riferimento iPhone). Presta attenzione alla posizione della mesh, alla velocità di generazione e alla qualità.

    Se la frequenza dei fotogrammi dei dati di input è bassa, la generazione della mesh sarà più lenta, ma la qualità non peggiorerà in modo evidente.

    Questa funzionalità potrebbe non funzionare su alcuni dispositivi Android e la qualità della mesh varia anche a seconda del dispositivo.

Importante

L'estensione di input utilizzata dal pacchetto di estensione per headset è un'implementazione di custom camera.

Quando si utilizzano prodotti in prova (come licenze personali, licenze XR di prova o servizi Mega di prova) su fotocamere personalizzate o dispositivi di visualizzazione, EasyAR Sense smetterà di rispondere dopo 100 secondi dall'avvio (gli utenti Mega possono richiedere a EasyAR Business di modificare questa durata previa approvazione). L'utilizzo della versione a pagamento di EasyAR Sense e del servizio EasyAR Mega a pagamento non presenta questa limitazione.

Se Image e Dense funzionano in modo coerente o migliore rispetto allo smartphone, la maggior parte delle funzionalità di EasyAR dovrebbe funzionare correttamente sul dispositivo e si può iniziare a testare Mega.

Risoluzione di problemi in esecuzione: analisi del problema

Se non è possibile replicare gli stessi risultati ottenuti sul telefono, di seguito è riportata una procedura dettagliata di analisi del problema che può essere seguita per individuare la causa principale. Si consiglia di monitorare costantemente l'output del log di sistema.

Passo zero: comprendere gli errori di sistema dell'headset stesso

Ricordi i requisiti di tracciamento del movimento e visualizzazione descritti in Preparare il dispositivo per AR/MR?

Importante

Gli errori di tracciamento del movimento/VIO influenzeranno sempre la stabilità degli algoritmi EasyAR in modi diversi.

Importante

Gli errori del sistema di visualizzazione possono causare un disallineamento imperfetto tra oggetti virtuali e oggetti reali.

In alcuni casi con errori significativi, gli oggetti virtuali possono apparire sospesi sopra o sotto gli oggetti reali, per poi (apparentemente) continuare a deriva. Questo fenomeno può essere osservato su Pico 4E, anche senza utilizzare EasyAR e aprendo solo il suo VST nativo.

Passo uno: controllare lo stato di esecuzione della sessione

Messaggi UI richiedono che queste funzionalità o dati siano normali per mostrare lo stato della sessione:

Se le informazioni sullo stato della sessione non sono visibili:

  • Prova a impostare Log come opzione
  • Leggi lo stato della sessione e il nome del frame source utilizzato nei log di sistema.

Puoi provare a:

  1. Eliminare tutti gli altri frame source sotto il nodo ARSession
  2. Verificare eventuali cambiamenti.

Passo due: confermare il conteggio fotogrammi della fotocamera ricevuto da EasyAR

Funzionalità o dati che devono funzionare correttamente:

  • Il percorso dati dei fotogrammi della fotocamera per ExternalFrameSource a livello di codice Unity (escluse la correttezza dei dati e il percorso dati verso il livello nativo)

Questo dato dovrebbe aumentare nel tempo, altrimenti verrà visualizzato un messaggio di avviso dopo alcuni secondi.

Se si nota che questo valore non aumenta, dovrebbe essere risolto per primo.

Passo tre: registrare EIF sul dispositivo, poi riprodurlo nell'editor Unity

Devono funzionare normalmente:

  • Il passaggio dei dati del frame della fotocamera da ExternalFrameSource al livello nativo (esclude la correttezza dei dati)
  • I raw camera image data nei dati del frame della fotocamera
  • Il timestamp nei dati del frame della fotocamera (esclude sincronizzazione temporale e dei dati)

Clicca EIF per avviare la registrazione, clicca nuovamente per fermarla.

Consiglio

È necessario interrompere correttamente la registrazione per ottenere un file EIF indicizzabile casualmente.

Quando si riproducono dati EIF nell'editor Unity, è preferibile utilizzare scene EasyAR pulite o esempi di EasyAR per evitare configurazioni errate nella scena.

Nell'editor Unity è possibile osservare la riproduzione dei dati del frame della fotocamera. I dati dell'immagine non sono byte-per-byte identici: l'intero flusso prevede una codifica con perdita.

EasyAR utilizza i parametri di distorsione nei calcoli ma non applica la correzione distorsione durante la visualizzazione. Pertanto, quando si riproduce un file EIF in Unity, si osserveranno dati senza correzione distorsione, come previsto.

Consiglio

Modificare le proporzioni della finestra di gioco Unity in modo che corrispondano a quelle dell'input, altrimenti i dati verranno ritagliati durante la visualizzazione.

Se la riproduzione dei dati è troppo veloce o lenta, verificare l'input del timestamp.

Nota

Con EIF è possibile fare molte cose: nell'editor Unity è possibile eseguire image tracking e dense spatial mapping utilizzando EIF. Nota: l'effetto visivo durante l'esecuzione sul dispositivo potrebbe differire.

Passo quattro: eseguire il tracking delle immagini utilizzando EIF

Funzionalità o dati necessari:

  • raw camera image data nei dati del frame della fotocamera
  • intrinsics nei dati del frame della fotocamera (la correttezza non è garantita, l'algoritmo tollera un certo margine di errore)

Per eseguire l'esempio di image-tracking ImageTracking_Targets con EIF nell'Editor Unity, registrare un EIF in cui un'immagine sia rilevabile.

Nota

Il tracking delle immagini richiede che il bersaglio occupi una porzione significativa dell'immagine. Se il tracking fallisce, avvicinare il visore all'immagine.

Se il tracking fallisce ripetutamente o gli oggetti virtuali appaiono lontani dal bersaglio nell'immagine, è probabile che gli intrinsics siano problematici.

Con dati immagine distorti, gli oggetti virtuali potrebbero non sovrapporsi perfettamente al bersaglio tracciato. Questo è previsto, specialmente quando il bersaglio è vicino ai bordi dell'immagine.

Passo cinque: eseguire il tracking di immagini sul dispositivo

Funzionalità o dati che devono funzionare correttamente:

  • Sistema di visualizzazione nativo del dispositivo
  • raw camera image data nei dati del frame della fotocamera
  • intrinsics nei dati del frame della fotocamera (la correttezza non è pienamente garantita poiché l'algoritmo tollera un certo margine di errore)
  • extrinsics nei dati del frame della fotocamera
  • Coerenza delle coordinate del device pose tra dati del frame della fotocamera e dati del frame di rendering
  • Differenza temporale del device pose tra dati del frame della fotocamera e dati del frame di rendering
Nota

Il tracking di immagini richiede che il bersaglio occupi una certa proporzione dell'immagine intera. Se non riesci a tracciare l'immagine, prova ad avvicinare la testa.

Il tracking di immagini richiede che la lunghezza laterale dell'immagine corrisponda alla dimensione reale dell'oggetto. Nell'esempio, devi tracciare un'immagine la cui larghezza riempia interamente il lato lungo di un foglio A4 posizionato orizzontalmente. Pertanto, non tracciare immagini visualizzate su schermi di computer a meno di non utilizzare un righello e regolare la larghezza dell'immagine alla dimensione A4 in base al righello.

Se il tracking di immagini funziona perfettamente con EIF ma non sul dispositivo, risolvi il problema prima di procedere con altri test. Sarà molto più difficile risolverlo in fasi successive.

Se gli oggetti virtuali appaiono sospesi lontano dagli oggetti reali, anche quando la persona è ferma, è probabile che intrinsics o extrinsics siano errati, che il device pose nei dati del frame della fotocamera e dati del frame di rendering non sia nello stesso sistema di coordinate, o che il sistema di visualizzazione stia generando questo errore.

Se gli oggetti virtuali si muovono costantemente quando muovi la testa e sembrano avere un ritardo, è molto probabile che il device pose non sia integro. Ciò accade spesso in questi casi (senza escludere altre possibili cause):

  • Mancata sincronizzazione temporale tra il device pose e i raw camera image data
  • Utilizzo dello stesso pose sia nei dati del frame della fotocamera che nei dati del frame di rendering

Passo sei: utilizzare EIF ed eseguire la mappa spaziale densa sul dispositivo

Funzionalità o dati necessari per il corretto funzionamento:

  • Sistema di visualizzazione integrato del dispositivo
  • raw camera image data dai dati del frame della fotocamera
  • intrinsics dai dati del frame della fotocamera (la correttezza non è pienamente garantita poiché l'algoritmo tollera piccoli errori)
  • extrinsics dai dati del frame della fotocamera
  • device pose dai dati del frame della fotocamera

Se la generazione della mesh è estremamente lenta e/o la ricostruzione del terreno appare irregolare a chiazze, è molto probabile che il device pose non sia corretto. Alternativamente, il sistema di coordinate del pose potrebbe essere errato oppure i timestamp potrebbero non corrispondere.

Consiglio

Se la frequenza dei fotogrammi in input è bassa, anche la generazione della mesh rallenterà, ma la qualità non ne risentirà in modo evidente. Questo comportamento è atteso.

Normalmente non è semplice individuare con precisione la posizione della mesh, quindi durante l'utilizzo della mappa spaziale densa eventuali errori del sistema di visualizzazione potrebbero non essere immediatamente evidenti.

Eseguire l'esempio Mega

Leggi quanto segue per comprendere come utilizzare Mega in Unity. Se non hai ancora attivato il servizio Mega, contatta il reparto commerciale EasyAR per ottenere un periodo di prova.

Quindi esegui Mega sul dispositivo, confrontando la corrispondenza con l'effetto sul telefono (si consiglia di prendere come standard l'iPhone). Verifica:

  • Se la posizione di visualizzazione degli oggetti è corretta
  • Se la posizione e le dimensioni degli oggetti in lontananza (10M e oltre) sono corrette
  • Se la posizione e le dimensioni degli oggetti fuori dal centro visivo sono corrette
  • Se la posizione e le dimensioni degli oggetti sono corrette durante la rotazione della testa

Risoluzione di situazioni anomale in esecuzione

Funzionalità o dati che devono funzionare correttamente:

  • Sistema di visualizzazione del dispositivo stesso
  • Tutti i dati in dati del fotogramma della fotocamera e dati del fotogramma di rendering

Dopo aver completato la verifica delle funzionalità di tracciamento delle immagini e mappatura spaziale densa, teoricamente EasyAR Mega dovrebbe essere supportato. Se le prestazioni sul visore sono significativamente peggiori rispetto a quelle su smartphone, è necessario prestare attenzione ai seguenti aspetti:

  • Prestare attenzione ai dati pose e timestamp nei dati del fotogramma della fotocamera e nei dati del fotogramma di rendering.
  • Prestare attenzione all'output del sistema di tracciamento del movimento/VIO. Il panda sotto XR Origin è un buon riferimento.

Inoltre, è necessario concentrarsi particolarmente sul sistema di visualizzazione del dispositivo stesso, soprattutto per quanto riguarda la visualizzazione degli oggetti in lontananza, al di fuori del centro dello sguardo e durante i movimenti della testa. Questi scenari vengono spesso trascurati durante i test autonomi del dispositivo, ma solitamente i problemi sono ancora causati dal sistema di visualizzazione interno del dispositivo. È necessario segnalare questi problemi e i possibili impatti a EasyAR, fornendo al contempo agli sviluppatori aspettative realistiche sui risultati.

Importante

Gli utenti prestano molta attenzione a questi problemi di visualizzazione durante l'utilizzo, e molti dispositivi non sono effettivamente in grado di offrire una visualizzazione perfetta in scenari di grandi dimensioni. EasyAR non può risolvere i problemi di visualizzazione intrinseci del dispositivo; ciò richiede interventi dei produttori del dispositivo. Nel frattempo, gli utenti necessitano di comprendere questi problemi.

Prossimi passi

Temi correlati

Esempi eseguibili su telefono:

  • Esempio di tracciamento immagini ImageTracking_Targets, per comprendere l'effetto atteso della funzionalità tracciamento immagini
  • Esempio di mappa spaziale densa SpatialMap_Dense_BallGame, per comprendere l'effetto atteso della funzionalità mappa spaziale densa
  • Esempio di fusione del movimento ImageTracking_MotionFusion, per comprendere l'effetto atteso della funzionalità fusione del movimento
  • Esempio Mega MegaBlock_Basic, per comprendere l'effetto atteso della funzionalità Mega