Rozwiązywanie problemów z wykrywaniem obiektów

W tym artykule przyjęto założenie, że model 3D został już przekonwertowany na model wykrywania Azure Object Anchors i pomyślnie załadowano model do aplikacji.

Kroki rozwiązywania problemów

  • Upewnij się, że wykrywany model znajduje się w zakresie obsługiwanego rozmiaru (1–10 metrów), aby uzyskać najlepsze środowisko.
  • Upewnij się, że pomieszczenie ma wystarczającą ilość tekstur, dodając kilka plakatów.
  • Usuń bieżące hologramy, aby zresetować mapę zgodnie z poniższym opisem.
  • Przeskanuj obiekt bardziej całkowicie.
  • Podaj ścisłe pole granicy jako obszar wyszukiwania, który zawiera cały lub większość obiektu.
  • Wyczyść pamięć podręczną mapowania przestrzennego i ponownie skanuj obiekt.
  • Upewnij się, że podczas konwersji modelu został użyty prawidłowy kierunek pochyły i wymiar zasobu, zgodnie z poniższym opisem.
  • Wizualne sprawdzanie modelu wykrywania zgodnie z poniższym opisem.
  • Dostosuj wartości zapytania modelu zgodnie z poniższym opisem.
  • Przechwyć diagnostykę zgodnie z poniższym opisem.

Usuwanie hologramów w celu zresetowania mapy

Jeśli widzisz obiekty wykryte przy użyciu dowolnego z problemów, usunięcie i zresetowanie mapy może rozwiązać ten problem:

  • Odwrócona orientacja
  • Nieprawidłowa pozycja
  • Model pochylony

Aby usunąć hologramy i zresetować mapę, otwórz aplikację Ustawienia i przejdź do Hologramy -> . Następnie wybierz pozycję Usuń wszystkie hologramy, aby rozpocząć od nowej mapy.

Wyczyszczenie hologramów zapewnia, że obiekty można prawidłowo wykryć w ich bieżących pozycjach na wypadek ich niedawnego przerzucenia.

Skanuj ponownie środowisko, przechodząc w środowisku, w którym HoloLens. Omiń wszystkie obiekty, które zamierzasz wykryć kilka razy z 1–2 metrów.

Upewnij się, że kierunek grawitowania i jednostka wymiaru zasobu są poprawne

Podczas przesyłania modelu 3D do konwersji przy użyciu zestawu OBJECT ANCHORS Conversion SDK (zobacz tutaj)należy wprowadzić poprawny kierunek pochyła () i jednostkę miary () dla modelu Gravity AssetDimensionUnit 3D. Jeśli te wartości nie są poprawne, Object Anchors jest mało prawdopodobne, aby poprawnie wykryć obiekt.

Kierunek pochylienia to wektor dół, który jest wykierunkowy na ziemię. W przypadku modeli CAD kierunek pochyenia jest zwykle przeciwieństwem kierunku rozwoju. Na przykład w wielu przypadkach + Z reprezentuje w górę, w którym to przypadku -Z lub Vector3(0.0, 0.0, -1.0) reprezentuje kierunek grawitacyjny. Podczas określania wagi należy również wziąć pod uwagę orientację, w której model będzie widoczny w czasie wykonywania. Jeśli próbujesz wykryć w świecie rzeczywistym, na płaskiej powierzchni, ciężarem może być Vector3(0.0, 0.0, -1.0) . Jeśli jednak nachylenie jest nachyleniu 45-stopni, grawitacyjnie może być Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2) .

Kierunek pochyły można określić za pomocą narzędzia renderowania 3D, takiego jak MeshLab.

Jednostka miary reprezentuje skalę modelu. Obsługiwane jednostki można znaleźć przy użyciu wyliczenia Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit.

Możesz również postępować zgodnie z instrukcjami w tym miejscu, aby zwizualizować model wykrywania w a aparatu Unity, aby wizualnie sprawdzić kierunek pochylności i prawidłowo skalować.

Wizualne sprawdzanie siatki modelu wykrywania

Czasami pomocne może być wizualne sprawdzenie siatki modelu wykrywania, aby można było zobaczyć wszelkie problemy z orientacją, skalą lub funkcją. Postępuj zgodnie z instrukcjami podanymi tutaj, aby zwizualizować przekonwertowany model w a aparatu Unity.

Dostosowywanie wartości zapytania o obiekt

  • Zapewnij ścisłe obszary wyszukiwania, aby idealnie zakrywać pełny obiekt w celu zwiększenia szybkości i dokładności wykrywania.
  • Wartość domyślna jest często wystarczająca, ale w celu szybszego wykrywania można użyć ObjectQuery.MinSurfaceCoverage mniejszej wartości.
  • Użyj małej wartości dla , jeśli obiekt powinien ObjectQuery.ExpectedMaxVerticalOrientationInDegrees być w górę w prawo.
  • Aplikacja powinna zawsze używać modelu 1:1 obiektów do wykrywania. Szacowana skala powinna być zbliżona do 1, najlepiej w granicach 1% błędu. Aplikacja może ustawić wartość lub , aby wyłączyć lub ObjectQuery.MaxScaleChange 0 0.1 włączyć szacowanie skali oraz jakościowo ocenić pozy wystąpienia.
  • Aby uzyskać więcej informacji, zobacz Jak wykryć trudny obiekt.

Przechwytywanie diagnostyki

Aplikacja może przechwytywać i zapisywać archiwa diagnostyczne przy użyciu obiektu ObjectDiagnosticsSession.

Przykładowa aplikacja aparatu Unity z mrTK zapisuje diagnostykę w folderze TempState. Sesję diagnostyki można uruchomić, otwierając menuręczne, wybierając pozycję Rozpocznij śledzenie, odtwarzając próbę wykrycia, a następnie wybierając pozycję Zatrzymaj śledzenie, aby zapisać archiwum diagnostyczne. Następnie możesz użyć Windows Portal urządzeń, aby pobrać archiwum diagnostyczne z folderu TempState aplikacji.

Archiwum diagnostyczne można następnie udostępnić nam, abyśmy pomogli w debugowaniu problemu.

Następne kroki

W tym przewodniku rozwiązywania problemów opisano rozwiązywanie problemów z wykrywaniem obiektu fizycznego przy użyciu Azure Object Anchors. Oto kilka powiązanych artykułów: