Table of Contents

Verificação da execução (bring-up) da extensão para headset

Para que o EasyAR funcione em um dispositivo, a parte mais crucial e desafiadora é garantir a correção dos dados de entrada. Quando se executa o EasyAR pela primeira vez em um novo dispositivo, mais de 90% dos problemas são causados por dados incorretos.

Sempre que possível, é recomendado verificar a correção dos dados diretamente, utilizando apenas o dispositivo e suas interfaces, com alguns métodos de teste, sem a presença do EasyAR. Este documento apresenta algumas abordagens empíricas para verificar dados usando a funcionalidade do EasyAR. Esse processo pode ajudar a compreender os dados de quadro de entrada externa, mas como o próprio EasyAR introduz erros, usar este sistema acoplado para validar a correção dos dados não é a escolha ideal.

Antes de começar

Executar exemplo de função básica

Na primeira vez que executar a verificação do EasyAR no dispositivo, é necessário garantir que essas funções sejam executadas sequencialmente, especialmente não se apresse em executar o Mega, pois o Mega possui alguma tolerância a falhas, sendo difícil detectar problemas quando executado por um curto período ou em um único cenário de realidade.

  1. Observe as informações da sessão exibidas à sua frente, garanta que nenhum incidente inesperado ocorra e que a contagem de frames esteja aumentando continuamente.

  2. Execute Image, ou seja, a função de Image Tracking, e compare a consistência com o efeito de execução no celular (recomenda-se usar o iPhone como padrão). Preste atenção ao status do rastreamento e à cobertura da exibição do alvo.

    Quando a fusão de movimento não está ativada, o efeito do rastreamento de imagem terá uma sensação de atraso perceptível, o que é esperado. O processo de movimento deve estar correto e a posição deve se alinhar quando o dispositivo parar.

  3. Execute Dense, ou seja, a função de Dense Spatial Mapping, e compare a consistência com o efeito de execução no celular (recomenda-se usar o iPhone como padrão). Preste atenção à posição da malha, velocidade de geração e qualidade.

    Se a taxa de frames dos dados de entrada for baixa, a velocidade de geração da malha diminuirá, mas a qualidade não será significativamente prejudicada.

    Esta função não pode ser executada em alguns dispositivos Android, e a qualidade da malha também varia de acordo com o dispositivo.

Importante

A extensão de entrada usada pelo pacote de extensão do headset é uma implementação de Custom Camera.

Ao usar produtos de avaliação (como licença pessoal, licença XR de avaliação ou serviço Mega de avaliação) em câmeras ou headsets personalizados, o EasyAR Sense parará de responder após 100 segundos (o tempo pode ser ajustado pelo EasyAR Business após aprovação para usuários Mega) após cada inicialização. Não há essa limitação ao usar a versão paga do EasyAR Sense e o serviço EasyAR Mega pago.

Se Image e Dense apresentarem efeitos consistentes ou melhores do que no celular, então a maioria das funções do EasyAR funcionará normalmente no dispositivo, e você pode começar a testar o Mega.

Resolução de problemas em execução: decomposição de problemas

Se não for possível reproduzir os mesmos resultados obtidos no telefone, a seguir está um processo detalhado de decomposição do problema que pode ser consultado para identificar a causa raiz. Recomenda-se monitorar continuamente a saída do system log.

Passo zero: Compreender os erros do sistema do próprio headset

Lembra-se dos requisitos de rastreamento de movimento e exibição descritos em Preparar o dispositivo para AR/MR?

Importante

Erros de rastreamento de movimento/VIO sempre afetarão a estabilidade dos algoritmos EasyAR de diferentes maneiras.

Importante

Erros do sistema de exibição podem fazer com que objetos virtuais e objetos reais não fiquem perfeitamente alinhados.

Em alguns casos com erros maiores, objetos virtuais podem parecer flutuar acima ou abaixo do objeto real e, em seguida, (parecer) estar constantemente à deriva. Este fenômeno pode ser observado no Pico 4E, mesmo sem usar o EasyAR, apenas abrindo seu próprio VST.

Passo um: Verifique o estado de execução da sessão

Mensagens ui exibem funções ou dados essenciais para o estado normal da sessão:

Se a exibição de informações de estado da sessão não estiver visível, tente alterar a opção para Log e leia o estado da sessão e o nome da fonte de frame em uso nos logs do sistema.

Tente remover todas as outras fontes de frame sob o nó ARSession e verifique se algo muda.

Passo 2: Confirmar a contagem de frames da câmera recebida pelo EasyAR

Funcionalidades ou dados que devem funcionar normalmente:

  • O caminho dos dados de frame de câmera do ExternalFrameSource na camada de código do Unity (não incluindo a correção dos dados nem o caminho dos dados para a camada nativa)

Este valor deve aumentar com o tempo, caso contrário, uma mensagem de aviso será exibida após alguns segundos.

Se este número não estiver aumentando, deve ser a primeira coisa a ser resolvida.

Passo três: Gravar EIF no dispositivo, depois reproduzir no editor Unity

Funcionalidades ou dados que devem funcionar normalmente:

  • Caminho de entrada da dados do frame da câmera para a camada nativa em ExternalFrameSource (não inclui correção dos dados)
  • raw camera image data nos dados do frame da câmera
  • timestamp nos dados do frame da câmera (excluindo pontos temporais e sincronização de dados)

Clique em EIF para iniciar a gravação, clique novamente para parar.

Dica

É necessário parar a gravação corretamente para obter um arquivo EIF com indexação aleatória.

Ao reproduzir dados EIF no editor Unity, é melhor usar uma cena EasyAR limpa ou os exemplos do EasyAR para evitar configurações incorretas na cena.

Você poderá ver a reprodução dos dados do frame da câmera no editor Unity. Os dados de imagem não são byte-iguais; há codificação com perdas em todo o fluxo.

O EasyAR usa parâmetros de distorção nos cálculos, mas não aplica antidistorção na imagem ao exibi-la. Portanto, se esses dados forem fornecidos, ao reproduzir o arquivo EIF no Unity, você observará dados sem antidistorção, o que é esperado.

Dica

Ajuste a proporção da janela de jogo do Unity para corresponder à entrada, caso contrário os dados serão cortados na exibição.

Se a reprodução estiver muito rápida ou lenta, verifique a entrada do timestamp.

Nota

Você pode fazer muitas coisas com EIF, como executar rastreamento de imagem e mapa espacial denso no editor Unity usando EIF. Observe que a exibição durante a execução no dispositivo pode ser diferente.

Passo quatro: executar o rastreamento de imagem usando EIF

Funcionalidades ou dados obrigatórios:

  • raw camera image data em dados do quadro da câmera
  • intrinsics em dados do quadro da câmera (a precisão não é totalmente garantida, pois o algoritmo tolera certos erros)

Para executar o exemplo de rastreamento de imagem ImageTracking_Targets com EIF no Unity Editor, é necessário gravar um EIF onde uma imagem possa ser rastreada.

Nota

O rastreamento de imagem requer que o alvo ocupe uma proporção significativa da imagem. Se o rastreamento falhar, tente mover a cabeça para mais perto da imagem.

Se o rastreamento falhar continuamente ou se o objeto virtual aparecer distante do alvo na imagem, é provável que existam problemas com os intrinsics.

Se os dados da imagem apresentarem distorção, pode-se observar que o objeto virtual não cobre perfeitamente o alvo rastreado na imagem, o que é esperado. Este fenômeno é mais pronunciado quando o alvo de rastreamento está próximo à borda da imagem.

Passo cinco: executar o rastreamento de imagem no dispositivo

Funcionalidades ou dados que devem funcionar normalmente:

  • Sistema de exibição próprio do dispositivo
  • raw camera image data nos dados do quadro da câmera
  • intrinsics nos dados do quadro da câmera (a precisão dos dados não é totalmente garantida, pois o algoritmo tolera certos erros)
  • extrinsics nos dados do quadro da câmera
  • Consistência de coordenadas do device pose entre os dados do quadro da câmera e os dados do quadro de renderização
  • Diferença de tempo do device pose entre os dados do quadro da câmera e os dados do quadro de renderização
Nota

O rastreamento de imagem requer que o alvo ocupe uma certa proporção da imagem completa. Se não for possível rastrear a imagem, tente mover a cabeça para mais perto da imagem.

O rastreamento de imagem requer que o comprimento lateral horizontal da imagem corresponda ao tamanho do objeto no mundo real. No exemplo, é necessário rastrear uma imagem cujo comprimento lateral horizontal preencha completamente a borda longa de uma folha A4 colocada horizontalmente. Portanto, não rastreie imagens exibidas na tela do computador, a menos que use uma régua e ajuste o comprimento horizontal da imagem para o tamanho A4 com base nela.

Se o rastreamento de imagem funcionar perfeitamente com o EIF, mas não no dispositivo, isso precisa ser resolvido antes de prosseguir com outros testes. Será muito mais difícil resolver problemas em etapas posteriores.

Se objetos virtuais aparecerem flutuando longe do objeto real, mesmo quando a pessoa permanece imóvel, é provável que os intrinsics ou extrinsics estejam incorretos, ou que o device pose nos dados do quadro da câmera e nos dados do quadro de renderização não estejam no mesmo sistema de coordenadas, ou que o sistema de exibição esteja causando esse erro.

Se objetos virtuais se moverem continuamente quando você move a cabeça e parecerem ter atraso, é altamente provável que o device pose não esteja saudável. Isso frequentemente ocorre em várias situações (não se pode descartar a possibilidade de outros problemas):

  • O device pose não está sincronizado temporalmente com os dados do raw camera image data
  • O mesmo pose foi usado nos dados do quadro da câmera e nos dados do quadro de renderização

Passo 6: Usar EIF e executar o mapa espacial denso no dispositivo

Funcionalidades ou dados que devem estar operando corretamente:

  • Sistema de exibição próprio do dispositivo
  • Dados de imagem da câmera bruta (raw camera image data) em dados de frames da câmera
  • Parâmetros intrínsecos (intrinsics) em dados de frames da câmera (a exatidão absoluta dos dados não é totalmente garantida, pois o algoritmo tem alguma tolerância a erros)
  • Parâmetros extrínsecos (extrinsics) em dados de frames da câmera
  • Pose do dispositivo (device pose) em dados de frames da câmera

Se a geração da malha for muito lenta e/ou a reconstrução do chão ficar irregular, é muito provável que haja um problema com a pose do dispositivo. Também é possível que o sistema de coordenadas da pose esteja incorreto ou que o timestamp da pose esteja errado.

Dica

Se a taxa de quadros (frame rate) dos dados de entrada for baixa, a geração da malha também será mais lenta, mas a qualidade não será visivelmente pior. Este comportamento é esperado.

Normalmente não é muito fácil discernir a posição exata da malha, portanto, erros no sistema de exibição podem não ser observáveis ao usar o mapa espacial denso.

Executando exemplo mega

Leia o seguinte para entender como usar o Mega no Unity. Se ainda não ativou o serviço Mega, entre em contato com o comercial EasyAR para obter uma avaliação.

Em seguida, execute Mega no dispositivo e compare o efeito com a execução no telefone (sugerimos usar iPhone como padrão). Preste atenção a:

  • Se a posição dos objetos está correta
  • Se objetos distantes (10M ou mais) mostram posição e tamanho corretos
  • Se objetos fora do centro visual mostram posição e tamanho corretos
  • Se objetos mantêm posição e tamanho corretos ao girar a cabeça

Resolução de problemas durante a execução

Funcionalidades ou dados que devem funcionar normalmente:

  • Sistema de exibição do próprio dispositivo
  • Todos os dados em dados de frame da câmera e dados de frame de renderização

Após validar as funcionalidades de rastreamento de imagem e mapa espacial denso, teoricamente o EasyAR Mega já deve estar suportado. Se o desempenho no headset for significativamente pior do que no celular, preste atenção aos seguintes pontos:

  • Monitore os dados de pose e timestamp em dados de frame da câmera e dados de frame de renderização
  • Monitore a saída do sistema de rastreamento de movimento/VIO. O panda sob XR Origin será uma boa referência

Além disso, é crucial focar no sistema de exibição do próprio dispositivo, especialmente na exibição de objetos distantes, fora do centro do campo de visão ou durante movimentos da cabeça. Esses cenários são frequentemente negligenciados em testes internos, mas os problemas geralmente ainda são causados pelo sistema de exibição do dispositivo. Você precisa comunicar esses problemas e seus possíveis impactos à EasyAR, além de fornecer expectativas realistas de desempenho aos desenvolvedores.

Importante

Os usuários estão muito atentos a esses problemas de exibição, e muitos dispositivos realmente não conseguem oferecer uma exibição perfeita em grandes espaços. A EasyAR não pode resolver problemas inerentes ao hardware do dispositivo – isso requer iterações do fabricante. Enquanto isso, os usuários precisam compreender essas limitações.

Próximos passos

Temas relacionados

Exemplos que podem ser executados em um telefone:

  • Exemplo de rastreamento de imagem ImageTracking_Targets, que pode ser usado para entender o efeito de execução esperado da funcionalidade de rastreamento de imagem
  • Exemplo de mapa espacial denso SpatialMap_Dense_BallGame, que pode ser usado para entender o efeito de execução esperado da funcionalidade de mapeamento espacial denso
  • Exemplo de fusão de movimento ImageTracking_MotionFusion, que pode ser usado para entender o efeito de execução esperado da funcionalidade de fusão de movimento
  • Exemplo Mega MegaBlock_Basic, que pode ser usado para entender o efeito de execução esperado da funcionalidade Mega