Solução de problemas de detecção de objetos

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

Etapas para solucionar problemas

  • Verifique se o modelo que você está detectando está dentro do tamanho com suporte (de 1 a 10 metros) para obter a melhor experiência.
  • Faça com que a sala tenha texturas suficientes adicionando alguns cartazes.
  • Remova os hologramas atuais para redefinir o mapa, conforme descrito abaixo.
  • Leia o objeto mais completamente.
  • Forneça uma caixa delimitadora estreita como área de pesquisa que inclua todo o objeto ou a maior parte dele.
  • Limpe o cache de mapeamento espacial e examine novamente o objeto.
  • Verifique se foram usadas a direção da gravidade e a dimensão do ativo corretas durante a conversão do modelo, conforme descrito abaixo.
  • Inspecione visualmente o modelo de detecçã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ê ver objetos sendo detectados com alguns 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 acesse Sistema ->Hologramas. Em seguida, selecione Remover todos os hologramas, para começar com um mapa atualizado.

A limpeza dos hologramas garante que os objetos possam ser detectados corretamente em suas posições atuais, caso tenham sido movidos recentemente.

Examine novamente seu ambiente ao contornar o ambiente usando o HoloLens. Contorne todos os objetos que você pretende detectar algumas vezes, de 1 a 2 metros.

Verifique se a direção da gravidade e a unidade da 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 (confira aqui), você precisará inserir a direção correta da gravidade (Gravity) e a unidade de medida (AssetDimensionUnit) para o modelo 3D. Se esses valores não estiverem corretos, é improvável que as Âncoras de Objeto detectem o objeto corretamente.

A direção da gravidade é o vetor para baixo que aponta para a terra. Para modelos de CAD, a direção da gravidade é normalmente o oposto de uma direção para cima. Por exemplo, em muitos casos, +Z representa para cima; nesse caso, -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 runtime. Se estiver tentando detectar uma cadeira no mundo real em uma superfície plana, a gravidade poderá ser Vector3(0.0, 0.0, -1.0). No entanto, se a cadeira estiver em uma inclinação de 45°, a gravidade poderá 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 a 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 detecção no Unity para inspecionar visualmente se a direção da gravidade e a escala parecem corretas.

Inspecionar visualmente a malha do modelo de detecção

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

Ajustar valores de consulta do objeto

  • Forneça áreas de pesquisa estreitas para, idealmente, cobrir o objeto completo e melhorar a velocidade e a precisão da detecção.
  • O valor ObjectQuery.MinSurfaceCoverage padrão geralmente é suficiente, mas você pode usar um valor menor para obter uma detecção mais rápida.
  • Use um valor menor para ObjectQuery.ExpectedMaxVerticalOrientationInDegrees se for esperado que o objeto esteja na vertical.
  • Um aplicativo deve sempre usar um modelo de objeto 1:1 na detecção. A escala estimada deve ficar próxima de 1, idealmente com margem de erro de menos de 1%. Um aplicativo poderia definir ObjectQuery.MaxScaleChange como 0 ou 0.1 para desabilitar ou habilitar a estimativa de escala e avaliar qualitativamente a pose da instância.
  • Para obter mais informações, confira Como detectar um objeto difícil.

Capturar diagnósticos

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

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

Os arquivos de diagnóstico podem ser compartilhados conosco para que possamos ajudar a depurar o problema.

Próximas etapas

Neste guia de solução de problemas, você aprendeu a solucionar problemas de detecção de um objeto físico usando Âncoras de Objeto do Azure. Veja alguns artigos relacionados: