Partilhar via


Solução de problemas de deteção de objetos

Este artigo pressupõe que você já converteu um modelo 3D em um modelo de deteção de Âncoras de Objeto do Azure e carregou com êxito o modelo em um aplicativo.

Passos de resolução de problemas

  • Certifique-se de que o modelo que está a detetar está dentro do tamanho suportado (1-10 metros) para uma melhor experiência.
  • Certifique-se de que a sala tem texturas suficientes, adicionando alguns cartazes.
  • Remova os hologramas atuais para redefinir o mapa conforme descrito abaixo.
  • Analise o objeto mais completamente.
  • Forneça uma caixa delimitadora apertada como área de pesquisa que inclua todo ou a maior parte do objeto.
  • Limpe o cache de mapeamento espacial e verifique novamente o objeto.
  • Certifique-se de que a direção da gravidade correta e a dimensão do ativo foram usadas durante a conversão do modelo, conforme descrito abaixo.
  • Inspecione visualmente o modelo de deteção conforme descrito abaixo.
  • Ajuste os valores de consulta do modelo conforme descrito abaixo.
  • Capture diagnósticos conforme descrito abaixo.

Remover hologramas para redefinir o mapa

Se você estiver vendo objetos sendo detetados com qualquer um dos seguintes problemas, remover e redefinir o mapa pode corrigir o problema:

  • Orientação invertida
  • Pose incorreta
  • Modelo inclinado

Para remover hologramas e redefinir o mapa, abra o aplicativo Configurações e vá para Hologramas do sistema>. Em seguida, selecione Remover todos os hologramas para começar com um novo mapa.

Limpar os hologramas garante que os objetos possam ser detetados corretamente em suas posições atuais, caso tenham sido movidos recentemente.

Analise novamente o seu ambiente caminhando pelo ambiente usando o HoloLens. Caminhe ao redor de quaisquer objetos que você pretende detetar algumas vezes de 1-2 metros.

Verifique se a direção da gravidade e a unidade de dimensão do ativo estão corretas

Ao enviar um modelo 3D para conversão usando o SDK de conversão de âncoras de objeto (veja aqui), você precisará inserir a direção de gravidade () e a unidade de medidaAssetDimensionUnit (Gravity) corretas para seu modelo 3D. Se esses valores não estiverem corretos, é improvável que as Âncoras de Objeto detetem seu objeto corretamente.

A direção da gravidade é o vetor descendente apontando para a terra. Para modelos CAD, a direção da gravidade é tipicamente o oposto de uma direção ascendente. Por exemplo, em muitos casos, +Z representa para cima, caso em que -Z ou Vector3(0.0, 0.0, -1.0) representaria a direção da gravidade. Ao determinar a gravidade, você também deve considerar a orientação na qual o modelo será visto durante o tempo de execução. Se você está tentando detetar uma cadeira no mundo real em uma superfície plana, a gravidade pode ser Vector3(0.0, 0.0, -1.0). No entanto, se a cadeira estiver em uma inclinação de 45 graus, a gravidade pode ser Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2).

A direção da gravidade pode ser determinada com uma ferramenta de renderização 3D, como o MeshLab.

A unidade de medida representa a escala do modelo. As unidades com suporte podem ser encontradas usando a enumeração Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit .

Você também pode seguir as instruções aqui para visualizar um modelo de deteção no Unity para inspecionar visualmente se a direção da gravidade e a escala parecem corretas.

Inspecione visualmente a malha do modelo de deteção

Às vezes, pode ser útil inspecionar visualmente a malha do modelo de deteção para que você possa ver qualquer problema de orientação, escala ou recurso. Siga as instruções aqui para visualizar um modelo convertido no Unity.

Ajustar valores de consulta de objeto

  • Forneça áreas de pesquisa apertadas para cobrir idealmente todo o objeto para melhorar a velocidade e a precisão da deteção.
  • O valor padrão ObjectQuery.MinSurfaceCoverage geralmente é suficiente, mas você pode usar um valor menor para obter uma deteção mais rápida.
  • Use um pequeno valor para ObjectQuery.ExpectedMaxVerticalOrientationInDegrees se espera que o objeto esteja na vertical.
  • Um aplicativo deve sempre usar um modelo de 1:1 objeto para deteção. A escala estimada deve ser próxima de 1, idealmente dentro de 1% de erro. Um aplicativo pode definir ObjectQuery.MaxScaleChange para 00.1 , desabilitar ou habilitar a estimativa de escala e avaliar qualitativamente a posição da instância.
  • Para obter mais informações, consulte Como detetar um objeto difícil.

Capturar diagnósticos

O aplicativo pode capturar e salvar arquivos de diagnóstico usando o objeto ObjectDiagnosticsSession .

O aplicativo de exemplo Unity com MRTK grava diagnósticos na pasta TempState . Você pode iniciar uma sessão de diagnóstico abrindo o menu manual, selecionando Iniciar rastreamento, reproduzindo uma tentativa de deteção e, em seguida, selecionando Parar rastreamento para salvar o arquivo de diagnóstico. Em seguida, você pode usar o Windows Device Portal para recuperar o arquivo de diagnóstico da pasta TempState do aplicativo.

O arquivo de diagnósticos pode ser compartilhado conosco para que possamos ajudar a depurar o problema.

Próximos passos

Neste guia de solução de problemas, você aprendeu como solucionar problemas de deteção de um objeto físico usando as Âncoras de Objeto do Azure. Aqui estão alguns artigos relacionados: