Table of Contents

Verifica di avvio (bring-up) dell'estensione per visori

Per far funzionare EasyAR su un dispositivo, la parte più importante e anche più delicata è garantire la correttezza dei dati di input. La maggior parte dei problemi al primo avvio di EasyAR su un nuovo dispositivo è causata da dati errati.

Se possibile, si consiglia di verificare direttamente la correttezza dei dati con alcuni metodi di test usando solo il dispositivo e le sue interfacce, senza EasyAR. Questo documento introduce alcuni metodi empirici per verificare i dati usando le funzionalità di EasyAR. Il processo aiuta a comprendere i frame di input esterni, ma poiché anche EasyAR introduce un certo errore, usare questo sistema accoppiato per verificare la correttezza dei dati non è la scelta migliore.

Prima di iniziare

Eseguire gli esempi base

La prima volta che si verifica EasyAR su un dispositivo, bisogna eseguire queste funzionalità nell'ordine corretto. In particolare, non bisogna affrettarsi a provare Mega, perché Mega ha una certa tolleranza e, durante esecuzioni brevi o in un singolo scenario reale, può rendere difficili da individuare alcuni problemi.

  1. Osservare le informazioni di sessione mostrate davanti agli occhi, assicurarsi che non ci siano anomalie e che il frame count continui a crescere.

  2. Eseguire Image, cioè la funzionalità di tracking immagine, e confrontarne il risultato con quello del telefono, che dovrebbe essere equivalente (si consiglia di usare iPhone come riferimento). Prestare attenzione allo stato di tracking e alla visualizzazione della sovrapposizione del target.

    Senza motion fusion, il tracking immagine avrà un ritardo percepibile: è il comportamento previsto. L'importante è che il movimento sia corretto e che, quando il dispositivo si ferma, la posizione sia allineata.

  3. Eseguire Dense, cioè la funzionalità di mappa spaziale densa, e confrontarne il risultato con quello del telefono, che dovrebbe essere equivalente (si consiglia di usare iPhone come riferimento). Prestare attenzione alla posizione della mesh, alla velocità di generazione e alla qualità.

    Se il frame rate dei dati di input è basso, la velocità di generazione della mesh rallenterà, ma la qualità non peggiorerà in modo evidente.

    Questa funzione non può essere eseguita su alcuni dispositivi Android e la qualità della mesh varia anche in base al dispositivo.

Importante

L'estensione di input usata dal pacchetto headset è un'implementazione di fotocamera personalizzata.

Quando si utilizzano prodotti di prova su una fotocamera personalizzata o su un visore (license Personal Edition, license XR di prova o servizio Mega di prova, ecc.), EasyAR Sense smetterà di rispondere 100 secondi dopo ogni avvio (gli utenti Mega possono modificare la durata tramite EasyAR Business dopo l'approvazione). Le versioni a pagamento di EasyAR Sense e i servizi EasyAR Mega a pagamento non hanno questa limitazione.

Se Image e Dense si comportano come sul telefono, o meglio, allora gran parte delle funzionalità EasyAR dovrebbe già funzionare correttamente sul dispositivo e si può iniziare a testare Mega.

Risolvere le anomalie in esecuzione: scomposizione del problema

Se non si riesce a riprodurre il risultato del telefono, il passo successivo è un processo dettagliato di scomposizione del problema per trovare la causa radice. È consigliabile monitorare sempre l'output dei log di sistema.

Passo zero: capire l'errore di sistema intrinseco del visore

Ricorda i requisiti di tracking del movimento e di display descritti in Preparare il dispositivo per AR/MR?

Importante

L'errore di tracking del movimento/VIO influenzerà sempre, in modi diversi, la stabilità degli algoritmi EasyAR.

Importante

L'errore del sistema di display può impedire la perfetta sovrapposizione tra oggetti virtuali e oggetti reali.

In alcuni casi con errore elevato, gli oggetti virtuali sembreranno fluttuare sopra o sotto gli oggetti reali e poi continueranno apparentemente a derivare. Questo fenomeno può essere osservato su Pico 4E: accade anche aprendo solo il loro VST, senza usare EasyAR.

Passo uno: controllare lo stato di esecuzione della sessione

Le funzioni o i dati che devono risultare normali nella visualizzazione dello stato della sessione in messaggi UI:

Se non si vedono le informazioni sullo stato della sessione, provare a cambiare l'opzione in Log e leggere lo stato della sessione e il nome del frame source in uso nei log di sistema.

Si può provare a rimuovere tutti gli altri frame source sotto il nodo ARSession e vedere se cambia qualcosa.

Passo due: verificare il conteggio dei frame della fotocamera ricevuti da EasyAR

Funzioni o dati che devono essere corretti:

  • Il percorso dei dati Frame della fotocamera di ExternalFrameSource nel livello di codice Unity, senza considerare la correttezza dei dati e il percorso verso il livello nativo

Questo valore dovrebbe aumentare nel tempo, altrimenti dopo alcuni secondi verrà mostrato un avviso.

Se questo valore non aumenta, è la prima cosa da risolvere.

Passo tre: registrare un EIF sul dispositivo e riprodurlo nell'editor Unity

Funzioni o dati che devono essere corretti:

  • Il percorso dei dati Frame della fotocamera di ExternalFrameSource verso il livello nativo, senza considerare la correttezza dei dati
  • I raw camera image data nei Frame della fotocamera
  • Il timestamp nei Frame della fotocamera (senza considerare il momento o la sincronizzazione dei dati)

Fare clic su EIF per avviare la registrazione, quindi fare di nuovo clic per fermarla.

Consiglio

La registrazione deve essere arrestata correttamente per ottenere un file EIF indicizzabile in modo casuale.

Quando si riproducono dati EIF nell'editor Unity, è meglio usare una scena EasyAR pulita o usare gli esempi EasyAR, per evitare configurazioni errate nella scena.

Nell'editor Unity si potrà vedere la riproduzione dei frame della fotocamera. I dati immagine non sono identici byte per byte, perché nell'intero processo c'è una codifica/decodifica con perdita.

EasyAR usa i parametri di distorsione nel calcolo, ma durante la visualizzazione non corregge l'immagine. Quindi, se questi dati sono stati immessi, riproducendo il file EIF in Unity si vedrà un'immagine non rettificata: è il comportamento atteso.

Consiglio

Modificare il rapporto della finestra Game di Unity per farlo coincidere con l'input, altrimenti i dati verranno mostrati ritagliati.

Se la riproduzione è troppo veloce o troppo lenta, controllare l'input del timestamp.

Nota

Con EIF si possono fare molte cose: in Unity Editor si possono usare EIF per eseguire tracking immagine e mappa spaziale densa. Notare che il risultato visivo durante l'esecuzione sul dispositivo potrebbe essere diverso.

Passo quattro: usare EIF per eseguire il tracking immagine

Funzioni o dati che devono essere corretti:

  • raw camera image data nei Frame della fotocamera
  • intrinsics nei Frame della fotocamera (la correttezza dei dati non può essere garantita del tutto, perché l'algoritmo tollera un certo errore)

Per eseguire l'esempio ImageTracking_Targets con EIF in Unity Editor, è necessario registrare un EIF in cui un'immagine possa essere tracciata.

Nota

Il tracking immagine richiede che il target occupi una certa percentuale dell'intera immagine; se non viene tracciato, provare a muovere la testa più vicino all'immagine.

Se il tracking fallisce in modo continuo o gli oggetti virtuali sono visualizzati lontano dal target nell'immagine, è molto probabile che gli intrinsics siano errati.

Se l'immagine ha distorsione, può accadere che gli oggetti virtuali non coprano perfettamente il target tracciato nell'immagine: è il comportamento previsto. Questo effetto è più evidente quando il target si trova ai bordi dell'immagine.

Passo cinque: eseguire il tracking immagine sul dispositivo

Funzioni o dati che devono essere corretti:

  • Il sistema di display del dispositivo
  • raw camera image data nei Frame della fotocamera
  • intrinsics nei Frame della fotocamera (la correttezza dei dati non può essere garantita del tutto, perché l'algoritmo tollera un certo errore)
  • extrinsics nei Frame della fotocamera
  • Coerenza del sistema di coordinate del device pose nei Frame della fotocamera e nei Frame di rendering
  • Differenza temporale del device pose nei Frame della fotocamera e nei Frame di rendering
Nota

Il tracking immagine richiede che il target occupi una certa percentuale dell'intera immagine; se non viene tracciato, provare a muovere la testa più vicino all'immagine.

Il tracking immagine richiede che il lato orizzontale dell'immagine corrisponda alla dimensione dell'oggetto nel mondo reale. Nell'esempio è necessario tracciare un'immagine il cui lato orizzontale corrisponde al lato lungo di un foglio A4 disposto in orizzontale, quindi non bisogna tracciare un'immagine mostrata sul monitor del computer, a meno che non si usi un righello e non si regoli il lato orizzontale dell'immagine fino alla dimensione A4.

Se con EIF il tracking immagine è perfetto ma sul dispositivo è diverso, è necessario risolvere il problema prima di fare altri test. Diventa molto più difficile sistemarlo nelle fasi successive.

Se gli oggetti virtuali sembrano sospesi in un punto lontano dall'oggetto reale e continuano a farlo anche quando l'utente non si muove, è molto probabile che intrinsics o extrinsics siano errati, oppure che il device pose nei Frame della fotocamera e nei Frame di rendering non sia nello stesso sistema di coordinate, oppure che l'errore sia causato dal sistema di display.

Se gli oggetti virtuali continuano a muoversi insieme alla testa e sembrano in ritardo, è molto probabile che il device pose non sia abbastanza affidabile. Questo accade spesso in alcuni casi, anche se non si possono escludere altri problemi:

  • device pose e raw camera image data non sono sincronizzati nel tempo
  • nei Frame della fotocamera e nei Frame di rendering viene usato lo stesso pose

Passo sei: usare EIF e eseguire la mappa spaziale densa sul dispositivo

Funzioni o dati che devono essere corretti:

  • Il sistema di display del dispositivo
  • raw camera image data nei Frame della fotocamera
  • intrinsics nei Frame della fotocamera (la correttezza dei dati non può essere garantita del tutto, perché l'algoritmo tollera un certo errore)
  • extrinsics nei Frame della fotocamera
  • device pose nei Frame della fotocamera

Se la generazione della mesh è molto lenta e/o la ricostruzione del pavimento è irregolare, è molto probabile che il device pose sia problematico. È anche possibile che il sistema di coordinate del pose sia sbagliato o che il suo timestamp non sia corretto.

Consiglio

Se il frame rate dei dati di input è basso, anche la velocità di generazione della mesh rallenta, ma la qualità non peggiora in modo evidente. Questo comportamento è previsto.

In genere non è facile distinguere con precisione la posizione della mesh, quindi l'errore del sistema di display non è sempre osservabile quando si usa la mappa spaziale densa.

Eseguire l'esempio Mega

Leggere il contenuto seguente per sapere come usare Mega in Unity. Se non avete ancora attivato il servizio Mega, dovete contattare EasyAR Business per ottenere una prova.

Quindi eseguire Mega sul dispositivo, confrontando il risultato con quello del telefono (si consiglia di usare iPhone come riferimento). Prestare attenzione a:

  • se la posizione degli oggetti è corretta
  • se la posizione e la dimensione degli oggetti lontani (oltre 10 m) sono corrette
  • se la posizione e la dimensione degli oggetti fuori dal centro del campo visivo sono corrette
  • se la posizione e la dimensione degli oggetti restano corrette quando si ruota la testa

Risolvere le anomalie in esecuzione

Funzioni o dati che devono essere corretti:

  • Il sistema di display del dispositivo
  • Tutti i dati nei Frame della fotocamera e nei Frame di rendering

Dopo aver verificato le due funzionalità tracking immagine e mappa spaziale densa, in teoria EasyAR Mega dovrebbe già essere supportato. Se il comportamento sul visore è nettamente peggiore rispetto al telefono, bisogna prestare attenzione ai punti seguenti:

  • i dati di pose e timestamp nei Frame della fotocamera e nei Frame di rendering
  • l'output del sistema di tracking del movimento/VIO. Il panda sotto XR Origin può essere un buon riferimento

Inoltre, bisogna prestare particolare attenzione al sistema di display del dispositivo, soprattutto per gli oggetti lontani, quelli fuori dal centro del campo visivo e quelli osservati ruotando la testa. Questi scenari vengono spesso trascurati nei test sul dispositivo stesso, ma di solito il problema è ancora il sistema di display del dispositivo. È necessario spiegare questi problemi a EasyAR, insieme ai possibili effetti, e fornire agli sviluppatori aspettative realistiche.

Importante

Gli utenti prestano molta attenzione a questi problemi di visualizzazione, e molti dispositivi non riescono davvero a offrire effetti perfetti in scenari di grande spazio. EasyAR non può risolvere i problemi di visualizzazione del dispositivo: la soluzione richiede l'evoluzione del produttore, e allo stesso tempo anche gli utenti devono comprendere questi limiti.

Passi successivi

Argomenti correlati

È possibile eseguire sul telefono questi esempi:

  • l'esempio di tracking immagine ImageTracking_Targets, che permette di capire il comportamento previsto della funzione di tracking immagine
  • l'esempio di mappa spaziale densa SpatialMap_Dense_BallGame, che permette di capire il comportamento previsto della mappa spaziale densa
  • l'esempio di motion fusion ImageTracking_MotionFusion, che permette di capire il comportamento previsto della funzione motion fusion
  • l'esempio Mega MegaBlock_Basic, che permette di capire il comportamento previsto della funzione Mega