Sdílet prostřednictvím


Řešení potíží s rozpoznáváním objektů

Tento článek předpokládá, že jste už převedli 3D model na model detekce Azure Object Anchors a úspěšně jste model načetli do aplikace.

Postup při řešení potíží

  • Ujistěte se, že model, který detekujete, je v podporované velikosti (1–10 metrů) pro co nejlepší prostředí.
  • Ujistěte se, že místnost má dostatek textur přidáním několika plakátů.
  • Odeberte aktuální hologramy a resetujte mapu, jak je popsáno níže.
  • Naskenujte objekt úplněji.
  • Zadejte těsné ohraničující pole jako vyhledávací oblast, která obsahuje celý nebo většinu objektu.
  • Vymažte mezipaměť prostorového mapování a znovu prohledat objekt.
  • Ujistěte se, že se při převodu modelu použil správný směr závažnosti a rozměr aktiva, jak je popsáno níže.
  • Vizuálně zkontrolujte model detekce, jak je popsáno níže.
  • Upravte hodnoty dotazu modelu, jak je popsáno níže.
  • Zachyťte diagnostiku, jak je popsáno níže.

Odebrání hologramů pro resetování mapy

Pokud dochází k zjištěnému objektu s některým z následujících problémů, odstraněním a resetováním mapy můžete problém vyřešit:

  • Invertovaná orientace
  • Nesprávná pozice
  • Nakloněný model

Pokud chcete odebrat hologramy a resetovat mapu, otevřete aplikaci Nastavení a přejděte do části System ->Hologramy. Potom vyberte Odebrat všechny hologramy a začněte novou mapou.

Vymazání hologramů zajišťuje, že objekty lze správně rozpoznat v jejich aktuálních pozicích v případě, že byly nedávno přesunuty.

Znovu prohledejte své prostředí tím, že se v prostředí nacházíte s HoloLensem. Projděte si všechny objekty, které chcete zjistit několikrát od 1-2 metrů.

Ujistěte se, že směr závažnosti a jednotka dimenze prostředku jsou správné.

Když odešlete 3D model pro převod pomocí sady Object Anchors Conversion SDK (viz zde), budete muset zadat správný směr závažnosti (Gravity) a měrnou jednotku (AssetDimensionUnit) pro váš 3D model. Pokud tyto hodnoty nejsou správné, objektové ukotvení pravděpodobně správně nerozpozná.

Směr závažnosti je vektor dolů směřující na zemi. U modelů CAD je směr závažnosti obvykle opakem směru nahoru. Například v mnoha případech +Z představuje nahoru, v takovém případě -Z nebo Vector3(0.0, 0.0, -1.0) by představovalo směr závažnosti. Při určování závažnosti byste také měli zvážit orientaci, ve které bude model během běhu vidět. Pokud se snažíte rozpoznat židli ve skutečném světě na plochém povrchu, může být Vector3(0.0, 0.0, -1.0)závažnost . Nicméně, pokud židle je na sklonu 45 stupňů, může být Vector3(0.0, -Sqrt(2)/2, -Sqrt(2)/2)závažnost .

Směr závažnosti lze určit pomocí 3D vykreslovacího nástroje, jako je MeshLab.

Měrná jednotka představuje měřítko modelu. Podporované jednotky najdete pomocí výčtu Microsoft.Azure.ObjectAnchors.Conversion.AssetLengthUnit .

Můžete také postupovat podle zde uvedených pokynů a vizualizovat model detekce v Unity a vizuálně zkontrolovat, že směr závažnosti a měřítko vypadají správně.

Vizuální kontrola sítě modelu detekce

Někdy může být užitečné vizuálně zkontrolovat síť modelu detekce, abyste viděli jakékoli problémy s orientací, škálováním nebo funkcemi. Postupujte podle zde uvedených pokynů a vizualizujete převedený model v Unity.

Úprava hodnot dotazu objektu

  • Poskytněte těsné oblasti hledání, které ideálně pokrývají celý objekt, aby se zlepšila rychlost a přesnost detekce.
  • Výchozí ObjectQuery.MinSurfaceCoverage hodnota je často dostatečná, ale k rychlejší detekci můžete použít menší hodnotu.
  • Pokud se očekává, že objekt bude v pořádku, použijte malou hodnotu ObjectQuery.ExpectedMaxVerticalOrientationInDegrees .
  • Aplikace by měla k detekci vždy používat objektový 1:1 model. Odhadované měřítko by mělo být v ideálním případě blízko 1 % chyby. Aplikace může nastavit ObjectQuery.MaxScaleChange 0 nebo 0.1 zakázat nebo povolit odhad měřítka a kvalitativní vyhodnocení pozice instance.
  • Další informace naleznete v tématu Jak rozpoznat složitý objekt.

Zachytávání diagnostiky

Aplikace může zachytit a uložit diagnostické archivy pomocí ObjectDiagnosticsSession objektu.

Ukázková aplikace Unity s MRTK zapisuje diagnostiku do složky TempState. Diagnostickou relaci můžete spustit tak, že otevřete nabídku ruky, vyberete Spustit trasování, reprodukujete pokus o detekci a pak vyberete Zastavit trasování a uložíte archiv diagnostiky. Pak můžete pomocí portálu zařízení s Windows načíst archiv diagnostiky ze složky TempState aplikace.

Archiv diagnostiky se s námi pak může sdílet, abychom mohli problém ladit.

Další kroky

V tomto průvodci odstraňováním potíží jste zjistili, jak řešit potíže s detekcí fyzického objektu pomocí Azure Object Anchors. Tady je několik souvisejících článků: