Table of Contents

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

Para fazer o EasyAR funcionar no dispositivo, o trabalho mais importante e também mais difícil é garantir a correção dos dados de entrada. Ao executar o EasyAR pela primeira vez em um novo dispositivo, mais de 90% dos problemas são causados por dados incorretos.

Sempre que possível, recomenda-se verificar diretamente a correção dos dados usando apenas o dispositivo e suas interfaces, por meio de alguns métodos de teste, antes da presença do EasyAR. Este artigo apresenta alguns métodos empíricos que usam recursos do EasyAR para verificar dados. Esse processo ajuda a entender os dados de frames de entrada externa, mas, como o próprio EasyAR também possui erros, usar esse sistema acoplado para verificar a correção dos dados não é a melhor escolha.

Antes de começar

Executar exemplos de recursos básicos

Ao verificar o EasyAR pela primeira vez no dispositivo, é necessário garantir que esses recursos sejam executados em sequência. Em especial, não se apresse para executar o Mega, porque o Mega tem certa tolerância a falhas, o que dificulta perceber problemas em execuções curtas ou em um único cenário real.

  1. Observe as informações de session exibidas à frente e confirme que não há situações inesperadas. Verifique também se o frame count continua aumentando.

  2. Execute Image, isto é, o recurso de rastreamento de imagem, e compare se o resultado é consistente com a execução em um celular (recomenda-se usar iPhone como padrão). Preste atenção ao estado de rastreamento e à exibição de sobreposição no alvo.

    Quando a fusão de movimento não estiver ativada, o rastreamento de imagem terá uma sensação clara de atraso. Isso é esperado. Basta que o processo de movimento esteja correto e que a posição fique alinhada quando o dispositivo parar.

  3. Execute Dense, isto é, o recurso de mapa espacial denso, e compare se o resultado é consistente com a execução em um celular (recomenda-se usar 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 geração da malha ficará mais lenta, mas a qualidade não ficará visivelmente pior.

    Esse recurso não consegue ser executado em alguns dispositivos Android, e a qualidade da malha também varia conforme o dispositivo.

Importante

A extensão de entrada usada pelo pacote de extensão de headset é uma implementação de câmera personalizada.

Ao usar produtos de avaliação em uma câmera personalizada ou headset (license Personal Edition, license XR de avaliação ou serviço Mega de avaliação etc.), o EasyAR Sense deixará de responder 100 segundos após cada inicialização (usuários Mega podem ajustar a duração por meio do EasyAR Business após aprovação). As versões pagas do EasyAR Sense e os serviços pagos do EasyAR Mega não têm essa limitação.

Se Image e Dense tiverem desempenho consistente com o celular ou melhor, a maior parte dos recursos do EasyAR poderá funcionar normalmente no dispositivo, e você poderá começar a testar o Mega.

Resolver situações anormais durante a execução: decomposição do problema

Se não for possível reproduzir o mesmo resultado obtido no celular, o processo detalhado de decomposição de problemas a seguir pode ser usado como referência para encontrar a causa raiz. Recomenda-se sempre prestar atenção à saída de logs do sistema.

Etapa zero: entender os erros do próprio sistema do headset

Lembra dos requisitos de rastreamento de movimento e exibição descritos em preparar dispositivos para AR/MR?

Importante

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

Importante

Erros do sistema de exibição podem fazer com que objetos virtuais e objetos reais não consigam se alinhar perfeitamente.

Em algumas situações com erros relativamente grandes, objetos virtuais podem parecer flutuar acima ou abaixo dos objetos reais e então parecer continuar derivando. Esse fenômeno pode ser observado no Pico 4E, mesmo sem usar EasyAR e apenas ativando seu próprio VST.

Etapa um: verificar o estado de execução da session

Funções ou dados que precisam estar normais para que o estado da session em mensagens de UI seja exibido normalmente:

Se a informação de estado da session não for exibida, tente alterar a opção para Log e depois leia no log do sistema o estado da session e o nome da frame source em uso.

Você pode tentar excluir todas as outras frame sources sob o nó ARSession e verificar se há alguma mudança.

Etapa dois: confirmar a contagem de frames de câmera recebidos pelo EasyAR

Funções ou dados que precisam estar normais:

  • O caminho dos dados de frames da câmera de ExternalFrameSource na camada de código Unity (sem incluir a correção dos dados nem o caminho dos dados até a camada nativa)

Esse dado deve aumentar com o tempo. Caso contrário, uma mensagem de aviso será exibida depois de alguns segundos.

Se esse valor não estiver aumentando, isso deve ser resolvido primeiro.

Etapa três: gravar EIF no dispositivo e depois reproduzir no Unity Editor

Funções ou dados que precisam estar normais:

  • O caminho de entrada dos dados de frames da câmera de ExternalFrameSource para a camada nativa (sem incluir a correção dos dados)
  • raw camera image data nos dados de frames da câmera
  • timestamp nos dados de frames da câmera (sem incluir instante de tempo e sincronização de dados)

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

Dica

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

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

No Unity Editor, você pode ver a reprodução dos dados de frames da câmera. Os dados de imagem não são iguais byte a byte, pois há codificação e decodificação com perdas em todo o processo.

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

Dica

Ajuste a proporção da janela game do Unity para ser igual à entrada; caso contrário, os dados serão exibidos recortados.

Se os dados forem reproduzidos rápido demais ou devagar demais, verifique a entrada de timestamp.

Nota

EIF pode ser usado para muitas coisas. No Unity Editor, você pode usar EIF para executar rastreamento de imagem e mapa espacial denso. Observe que o efeito de exibição pode ser diferente ao executar no dispositivo.

Etapa quatro: usar EIF para executar rastreamento de imagem

Funções ou dados que precisam estar normais:

  • raw camera image data nos dados de frames da câmera
  • intrinsics nos dados de frames da câmera (a correção dos dados não pode ser totalmente garantida, porque o algoritmo tolera erros)

No Unity Editor, para executar o exemplo de rastreamento de imagem ImageTracking_Targets usando EIF, é necessário gravar um EIF em que a imagem possa ser rastreada.

Nota

O rastreamento de imagem exige que o alvo de rastreamento ocupe certa proporção da imagem inteira. Se não for possível rastrear a imagem, tente mover a cabeça para uma posição mais próxima da imagem.

Se o rastreamento falhar continuamente ou se o objeto virtual aparecer na imagem em uma posição distante do alvo, é muito provável que haja um problema em intrinsics.

Se os dados de imagem tiverem distorção, talvez você veja que o objeto virtual não cobre perfeitamente o alvo de rastreamento na imagem. Isso é esperado. Quando o alvo de rastreamento está na borda da imagem, esse fenômeno fica mais evidente.

Etapa cinco: executar rastreamento de imagem no dispositivo

Funções ou dados que precisam estar normais:

  • O sistema de exibição próprio do dispositivo
  • raw camera image data nos dados de frames da câmera
  • intrinsics nos dados de frames da câmera (a correção dos dados não pode ser totalmente garantida, porque o algoritmo tolera erros)
  • extrinsics nos dados de frames da câmera
  • Consistência de coordenadas de device pose nos dados de frames da câmera e nos dados de frames de renderização
  • Diferença de tempo de device pose nos dados de frames da câmera e nos dados de frames de renderização
Nota

O rastreamento de imagem exige que o alvo de rastreamento ocupe certa proporção da imagem inteira. Se não for possível rastrear a imagem, tente mover a cabeça para uma posição mais próxima da imagem.

O rastreamento de imagem exige que o comprimento horizontal da imagem corresponda ao tamanho do objeto no mundo real. No exemplo, é necessário rastrear uma imagem cujo comprimento horizontal preencha a borda longa de uma folha A4 posicionada horizontalmente. Portanto, não rastreie imagens exibidas na tela de um computador, a menos que use uma régua e ajuste o comprimento horizontal da imagem ao tamanho de uma folha A4 com referência à régua.

Se o rastreamento de imagem for perfeito ao usar EIF, mas diferente no dispositivo, isso precisa ser resolvido antes de prosseguir para outros testes. Resolver problemas nas etapas posteriores é muito mais difícil.

Se o objeto virtual aparecer flutuando em algum lugar distante do objeto real, e isso ocorrer mesmo quando a pessoa não se move, é muito provável que intrinsics ou extrinsics estejam incorretos, que o device pose nos dados de frames da câmera e nos dados de frames de renderização não esteja no mesmo sistema de coordenadas, ou que o sistema de exibição tenha produzido esse erro.

Se o objeto virtual continuar se movendo quando a cabeça se move e parecer ter atraso, há uma grande probabilidade de que o device pose não esteja saudável. Isso acontece com frequência em várias situações (sem excluir a possibilidade de outros problemas),

  • O tempo dos dados de device pose e raw camera image data não está sincronizado
  • O mesmo pose é usado nos dados de frames da câmera e nos dados de frames de renderização

Etapa seis: usar EIF e executar mapa espacial denso no dispositivo

Funções ou dados que precisam estar normais:

  • O sistema de exibição próprio do dispositivo
  • raw camera image data nos dados de frames da câmera
  • intrinsics nos dados de frames da câmera (a correção dos dados não pode ser totalmente garantida, porque o algoritmo tolera erros)
  • extrinsics nos dados de frames da câmera
  • device pose nos 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 o device pose. Também é possível que o sistema de coordenadas do pose esteja incorreto ou que o instante de tempo do pose esteja errado.

Dica

Se a taxa de frames dos dados de entrada for baixa, a velocidade de geração da malha também ficará mais lenta, mas a qualidade não ficará visivelmente pior. Essa situação é esperada.

Em geral, não é muito fácil distinguir a posição precisa da malha. Portanto, ao usar mapa espacial denso, erros do sistema de exibição nem sempre podem ser observados.

Executar o exemplo Mega

Leia o conteúdo a seguir para entender como usar o Mega no Unity. Se você ainda não ativou o serviço Mega, entre em contato com a equipe comercial do EasyAR para obter qualificação de teste.

Depois, execute Mega no dispositivo e compare se o efeito de execução é consistente com o do celular (recomenda-se usar iPhone como padrão). Preste atenção a:

  • Se a posição de exibição dos objetos está correta
  • Se a posição e o tamanho de exibição de objetos distantes (10 m ou mais) estão corretos
  • Se a posição e o tamanho de exibição de objetos fora do centro da linha de visão estão corretos
  • Se a posição e o tamanho de exibição de objetos estão corretos ao girar a cabeça

Resolver situações anormais durante a execução

Funções ou dados que precisam estar normais:

  • O sistema de exibição próprio do dispositivo
  • Todos os dados nos dados de frames da câmera e nos dados de frames de renderização

Depois de concluir a verificação dos dois recursos, rastreamento de imagem e mapa espacial denso, em teoria o EasyAR Mega já deve ser suportado. Se o desempenho no headset for claramente pior do que no celular, preste atenção ao seguinte:

  • Dados de pose e timestamp nos dados de frames da câmera e nos dados de frames de renderização
  • Saída do sistema de rastreamento de movimento/VIO. O panda sob XR Origin será uma boa referência

Além disso, é preciso prestar muita atenção ao sistema de exibição próprio do dispositivo, especialmente ao efeito de exibição de objetos distantes, objetos fora do centro da linha de visão e objetos ao girar a cabeça. Esses cenários costumam ser ignorados nos testes do próprio dispositivo, mas normalmente o problema ainda é causado pelo sistema de exibição do próprio dispositivo. Você precisa explicar esses problemas e seus possíveis impactos à EasyAR e fornecer aos desenvolvedores uma expectativa razoável de efeito.

Importante

Os usuários prestam muita atenção a esses problemas de exibição, e muitos dispositivos de fato não conseguem oferecer efeitos de exibição perfeitamente ideais em cenários de grande espaço. O EasyAR não consegue resolver problemas de exibição do próprio dispositivo. Isso precisa ser resolvido iterativamente pelos fabricantes do dispositivo. Ao mesmo tempo, os usuários também precisam entender esses problemas.

Próximos passos

Tópicos relacionados

Exemplos que podem ser executados no celular:

  • Exemplo de rastreamento de imagem ImageTracking_Targets, com o qual você pode entender o efeito de execução esperado do recurso de rastreamento de imagem
  • Exemplo de mapa espacial denso SpatialMap_Dense_BallGame, com o qual você pode entender o efeito de execução esperado do recurso de mapa espacial denso
  • Exemplo de fusão de movimento ImageTracking_MotionFusion, com o qual você pode entender o efeito de execução esperado do recurso de fusão de movimento
  • Exemplo Mega MegaBlock_Basic, com o qual você pode entender o efeito de execução esperado do recurso Mega