Table of Contents

Bring-up der headset-Erweiterung

Die wichtigste und gleichzeitig heikelste Aufgabe, um EasyAR auf einem Gerät zum Laufen zu bringen, ist die Sicherstellung der korrekten Eingabedaten. Bei der erstmaligen Ausführung von EasyAR auf einem neuen Gerät sind über 90% der Probleme auf fehlerhafte Daten zurückzuführen.

Wenn möglich, wird empfohlen, die Datenkorrektheit ohne EasyAR zu überprüfen, indem nur das Gerät und seine Schnittstellen mit Testmethoden verwendet werden. Dieser Artikel beschreibt einige empirische Methoden zur Datenüberprüfung unter Verwendung von EasyAR-Funktionen. Dieser Prozess hilft beim Verständnis von externen Eingaberahmendaten. Da EasyAR jedoch selbst Ungenauigkeiten aufweist, ist die Verwendung dieses gekoppelten Systems zur Überprüfung der Datenkorrektheit nicht die optimale Wahl.

Vorbereitung

Ausführen der grundlegenden funktionsbeispiele

Beim ersten Ausführen von EasyAR auf dem Gerät zur Validierung, müssen diese Funktionen in der angegebenen Reihenfolge ausgeführt werden. Besonders wichtig ist es, nicht voreilig Mega auszuführen, da Mega eine gewisse Fehlertoleranz aufweist und Probleme bei kurzen Laufzeiten oder in einzelnen realen Szenarien schwer zu erkennen sind.

  1. Beobachten Sie die angezeigten session-Informationen vor Ihren Augen. Stellen Sie sicher, dass keine unerwarteten Ereignisse auftreten und dass der frame count kontinuierlich ansteigt.

  2. Führen Sie Image aus, also die Funktion Bildverfolgung, und vergleichen Sie die Ergebnisse mit der Ausführung auf einem Smartphone (iPhone wird als Referenz empfohlen). Achten Sie auf den tracking-Status und die korrekte Überlagerungsdarstellung des Ziels.

    Wenn die Bewegungsfusion nicht aktiviert ist, wird die Bildverfolgung eine merkliche Verzögerung aufweisen – dies ist erwartungsgemäß. Wichtig ist, dass die Bewegung korrekt erfasst wird und die Position nach dem Anhalten des Geräts korrekt ausgerichtet ist.

  3. Führen Sie Dense aus, also die Funktion dichte räumliche Kartierung, und vergleichen Sie die Ergebnisse mit der Ausführung auf einem Smartphone (iPhone wird als Referenz empfohlen). Achten Sie auf die Position des Gitters, die Erzeugungsgeschwindigkeit und die Qualität.

    Bei einer niedrigen Eingangsdaten-Framerate verlangsamt sich die Gittererzeugung, die Qualität verschlechtert sich jedoch nicht signifikant.

    Diese Funktion kann auf einigen Android-Geräten nicht ausgeführt werden, und die Gitterqualität variiert je nach Gerät.

Wichtig

Die für das Headset-Erweiterungspaket verwendete Eingabeerweiterung ist eine Implementierung einer benutzerdefinierten Kamera.

Verwendung von Testprodukten (Personal-Lizenz, Testversion der XR-Lizenz oder Testversion des Mega-Service usw.) auf benutzerdefinierten Kameras oder Headsets: EasyAR Sense reagiert nicht mehr, nachdem es 100 Sekunden nach jedem Start ausgeführt wurde (Mega-Benutzer können die Dauer nach Genehmigung durch den EasyAR-Geschäftsbereich anpassen). Die Verwendung der kostenpflichtigen Version von EasyAR Sense und des kostenpflichtigen EasyAR Mega-Service unterliegt dieser Einschränkung nicht.

Wenn Image und Dense die gleiche oder eine bessere Leistung zeigen wie auf dem Smartphone, funktionieren die meisten EasyAR-Funktionen auf dem Gerät einwandfrei, und Sie können mit dem Testen von Mega beginnen.

Beheben von laufenden Ausnahmen: Problemzerlegung

Wenn Sie die gleichen Ergebnisse wie auf dem Telefon nicht reproduzieren können, finden Sie im Folgenden einen detaillierten Problemzerlegungsprozess, an dem Sie sich orientieren können, um die Grundursache zu finden. Es wird empfohlen, sich stets auf die Systemprotokollausgabe zu konzentrieren.

Schritt Null: Verständnis der systemeigenen Fehler der Head-Mounted-Displays

Erinnern Sie sich an die in Vorbereitung der Geräte für AR/MR beschriebenen Anforderungen an Bewegungsverfolgung und Darstellung?

Wichtig

Bewegungsverfolgungs-/VIO-Fehler beeinflussen stets die Stabilität der EasyAR-Algorithmen auf unterschiedliche Weise.

Wichtig

Anzeigesystemfehler können dazu führen, dass virtuelle und reale Objekte nicht perfekt ausgerichtet sind.

In einigen Fällen mit größeren Fehlern können virtuelle Objekte ober- oder unterhalb des realen Objekts zu schweben scheinen und dann (scheinbar) kontinuierlich driften. Dieses Phänomen ist auf dem Pico 4E beobachtbar, selbst wenn EasyAR nicht verwendet wird und nur dessen eigenes VST aktiviert ist.

Schritt eins: Sitzungsstatus prüfen

Für die Anzeige des Sitzungsstatus in UI-Nachrichten müssen folgende Funktionen oder Daten normal funktionieren:

Falls die Sitzungsstatusinformationen nicht angezeigt werden, versuchen Sie die Option auf Log zu ändern und lesen Sie den Sitzungsstatus sowie den Namen der verwendeten Frame-Quelle im Systemprotokoll.

Sie können versuchen, alle anderen Frame-Quellen unter dem ARSession-Knoten zu löschen und zu prüfen, ob sich etwas ändert.

Schritt zwei: Bestätigen der empfangenen Kameraframezähler von EasyAR

Notwendige funktionierende Funktionen oder Daten:

  • Der Kameraframedaten-Durchgang von ExternalFrameSource auf der Unity-Codeebene (schließt die Datenkorrektheit und den Durchgang zur nativen Ebene nicht ein)

Diese Zahl sollte mit der Zeit ansteigen, sonst wird nach einigen Sekunden eine Warnmeldung angezeigt.

Wenn festgestellt wird, dass diese Zahl nicht ansteigt, sollte dies zuerst gelöst werden.

Schritt drei: Aufnahme des EIF auf dem Gerät und anschließende Wiedergabe im Unity-Editor

Erforderliche funktionierende Funktionen oder Daten:

  • Der Übergang der Kamerarahmendaten von ExternalFrameSource in die native Ebene (ohne Korrektheit der Daten)
  • Die raw camera image data innerhalb der Kamerarahmendaten
  • Der timestamp innerhalb der Kamerarahmendaten (ohne Zeitpunkt und Datensynchronisation)

Klicken Sie auf EIF, um die Aufnahme zu starten. Klicken Sie erneut, um sie zu stoppen.

Tipp

Die Aufnahme muss ordnungsgemäß gestoppt werden, um eine zufällig indexierbare EIF-Datei zu erhalten.

Verwenden Sie am besten eine saubere EasyAR-Szene oder ein EasyAR-Beispiel, wenn Sie EIF-Daten im Unity-Editor abspielen, um falsche Konfigurationen in der Szene zu vermeiden.

Sie können die Wiedergabe der Kamerarahmendaten im Unity-Editor sehen. Die Bilddaten sind nicht byteweise identisch; im gesamten Prozess findet eine verlustbehaftete Kodierung statt.

EasyAR verwendet Verzerrungsparameter in Berechnungen, wendet jedoch keine Entzerrung auf die Bilder bei der Anzeige an. Wenn Sie also diese Daten eingeben, werden Sie bei der Wiedergabe der EIF-Datei in Unity unentzerrte Daten beobachten, was erwartungsgemäß ist.

Tipp

Passen Sie das Seitenverhältnis des Unity-Game-Fensters an das Eingabeverhältnis an, da sonst die Daten beschnitten dargestellt werden.

Wenn die Daten zu schnell oder zu langsam abgespielt werden, müssen Sie die timestamp-Eingabe überprüfen.

Anmerkung

Mit EIF können Sie viele Dinge tun. Sie können im Unity-Editor mit EIF Bildverfolgung und dichte räumliche Kartierung ausführen. Beachten Sie, dass die Darstellung bei der Ausführung auf einem Gerät möglicherweise anders ist.

Schritt vier: Ausführen der Bildverfolgung mit eif

Erforderliche funktionale Komponenten oder Daten:

  • Rohdaten der Kamerabilder in den Kamerarahmendaten
  • Intrinsische Parameter in den Kamerarahmendaten (Datenkorrektheit nicht vollständig garantiert, da der Algorithmus eine gewisse Fehlertoleranz aufweist)

Um das Bildverfolgungsbeispiel ImageTracking_Targets mit eif im Unity-Editor auszuführen, müssen Sie eine eif aufnehmen, in der ein Bild verfolgbar ist.

Anmerkung

Bildverfolgung erfordert, dass das Verfolgungsziel einen bestimmten Anteil des gesamten Bildes einnimmt. Wenn das Bild nicht verfolgt werden kann, versuchen Sie, Ihren Kopf näher an das Bild heranzubewegen.

Wenn die Verfolgung wiederholt fehlschlägt oder virtuelle Objekte weit entfernt vom Ziel im Bild angezeigt werden, liegt höchstwahrscheinlich ein Problem mit den intrinsischen Parametern vor.

Falls die Bilddaten Verzerrungen aufweisen, kann es vorkommen, dass virtuelle Objekte das Verfolgungsziel auf dem Bild nicht perfekt überdecken. Dies ist erwartungsgemäß. Dieser Effekt ist deutlicher sichtbar, wenn sich das Verfolgungsziel am Bildrand befindet.

Schritt fünf: Ausführung des Bild-Trackings auf dem Gerät

Notwendige funktionierende Funktionen oder Daten:

  • Das eigene Anzeigesystem des Geräts
  • Rohdaten des Kamerabildes in den Kamerarahmendaten
  • Intrinsische Parameter in den Kamerarahmendaten (Datenkorrektheit nicht vollständig garantiert, da der Algorithmus eine gewisse Fehlertoleranz aufweist)
  • Extrinsische Parameter in den Kamerarahmendaten
  • Koordinatenkonsistenz der Gerätepose in Kamerarahmendaten und Render-Rahmendaten
  • Zeitdifferenz der Gerätepose in Kamerarahmendaten und Render-Rahmendaten
Anmerkung

Bild-Tracking erfordert, dass das Tracking-Ziel einen bestimmten Anteil des gesamten Bildes einnimmt. Wenn das Bild nicht getrackt werden kann, versuchen Sie, den Kopf näher an das Bild heranzubewegen.

Bild-Tracking erfordert, dass die horizontale Kantenlänge des Bildes mit der Größe des Objekts in der realen Welt übereinstimmt. Im Beispiel muss ein Bild getrackt werden, dessen horizontale Kantenlänge die lange Kante eines horizontal platzierten A4-Blattes vollständig ausfüllt. Verfolgen Sie daher kein Bild, das auf einem Computerbildschirm angezeigt wird, es sei denn, Sie verwenden ein Lineal und passen die horizontale Kantenlänge des Bildes entsprechend auf die A4-Größe an.

Wenn das Bild-Tracking mit dem EIF perfekt funktioniert, aber auf dem Gerät anders, muss dies gelöst werden, bevor Sie mit anderen Tests fortfahren. Es ist viel schwieriger, Probleme in späteren Schritten zu beheben.

Wenn das virtuelle Objekt an einem Ort weit entfernt vom realen Objekt schwebt angezeigt wird, und das auch dann, wenn sich die Person nicht bewegt, dann sind wahrscheinlich die intrinsischen oder extrinsischen Parameter inkorrekt, oder die Gerätepose in Kamerarahmendaten und Render-Rahmendaten befindet sich nicht im selben Koordinatensystem, oder das Anzeigesystem verursacht diesen Fehler.

Wenn sich das virtuelle Objekt bei Kopfbewegungen kontinuierlich bewegt und so aussieht, als ob es eine Verzögerung aufweist, dann ist die Gerätepose höchstwahrscheinlich nicht gesund. Dies tritt häufig in folgenden Fällen auf (andere Probleme können nicht ausgeschlossen werden):

  • Die Gerätepose ist nicht mit dem Zeitstempel der Rohdaten des Kamerabildes synchronisiert.
  • Die gleiche Pose wurde in Kamerarahmendaten und Render-Rahmendaten verwendet.

Schritt sechs: EIF verwenden und dichte raumkarten auf dem Gerät ausführen

Erforderliche funktionierende Funktionen oder Daten:

  • Das eigene Anzeigesystem des Geräts
  • raw camera image data in den Kamerarahmendaten
  • intrinsics in den Kamerarahmendaten (Datenkorrektheit nicht vollständig garantiert, da der Algorithmus fehlertolerant ist)
  • extrinsics in den Kamerarahmendaten
  • device pose in den Kamerarahmendaten

Wenn die Mesh-Generierung extrem langsam ist und/oder die Bodenrekonstruktion löchrig erscheint, liegt sehr wahrscheinlich ein Problem mit dem device pose vor. Möglicherweise ist das Koordinatensystem der Pose falsch oder der Zeitpunkt der Pose unpassend.

Tipp

Bei niedriger Eingabedaten-Bildrate verlangsamt sich auch die Mesh-Generierung, aber die Qualität verschlechtert sich nicht merklich. Dieses Verhalten ist erwartungsgemäß.

Normalerweise ist es nicht einfach, die exakte Mesh-Position zu erkennen, daher sind Anzeigefehler bei der Nutzung von dichten Raumkarten nicht immer erkennbar.

Ausführen des mega-beispiels

Lesen Sie die folgenden Informationen, um zu erfahren, wie Sie Mega in Unity verwenden können. Wenn Sie den Mega-Dienst noch nicht aktiviert haben, wenden Sie sich an den EasyAR-Vertrieb, um eine Testversion zu erhalten.

Führen Sie dann Mega auf dem Gerät aus und vergleichen Sie die Ergebnisse mit der Darstellung auf einem Smartphone (iPhone wird als Referenz empfohlen). Achten Sie auf:

  • Ob Objekte korrekt positioniert sind
  • Ob Position und Größe entfernter Objekte (10M und weiter) korrekt sind
  • Ob Position und Größe von Objekten außerhalb des Blickzentrums korrekt sind
  • Ob Position und Größe von Objekten bei Kopfbewegungen stabil bleiben

Lösung von laufzeitausnahmen

Funktionen oder Daten, die ordnungsgemäß funktionieren müssen:

  • Das Anzeigesystem des Geräts selbst
  • Alle Daten in Kamerarahmendaten und Rendering-Rahmendaten

Nach Abschluss der Verifizierung der Funktionen Bildverfolgung und Dichte räumliche Abbildung sollte EasyAR Mega theoretisch unterstützt werden. Wenn die Leistung auf dem Headset deutlich schlechter ist als auf einem Smartphone, sollten folgende Punkte beachtet werden:

  • Achten Sie auf die Pose-Daten und Timestamps in Kamerarahmendaten und Rendering-Rahmendaten.
  • Achten Sie auf die Ausgabe des Bewegungs-Trackings/VIO-Systems. Das Panda-Modell unter XR Origin kann als gute Referenz dienen.

Darüber hinaus muss besonders auf das Anzeigesystem des Geräts selbst geachtet werden, insbesondere auf die Darstellung von Objekten in der Ferne, außerhalb der Blickrichtung und bei Kopfdrehungen. Solche Szenarien werden bei eigenen Gerätetests oft übersehen, aber die Ursache liegt meist im Anzeigesystem des Geräts selbst. Sie müssen EasyAR über diese Probleme und mögliche Auswirkungen informieren und Entwicklern realistische Erwartungen an die Darstellungsqualität vermitteln.

Wichtig

Benutzer achten sehr auf diese Darstellungsprobleme, und viele Geräte können in großen Szenarien tatsächlich keine perfekte Darstellung bieten. EasyAR kann anzeigebezogene Probleme des Geräts selbst nicht lösen; dies muss der Gerätehersteller durch Iterationen beheben. Gleichzeitig müssen Benutzer diese Einschränkungen verstehen.

Nächste Schritte

Verwandte Themen

Beispiele, die auf Mobiltelefonen ausgeführt werden können:

  • Bildverfolgungsbeispiel ImageTracking_Targets, um die erwartete Leistung der Bildverfolgungsfunktion zu verstehen
  • Dichtes räumliches Kartenbeispiel SpatialMap_Dense_BallGame, um die erwartete Leistung der dichten räumlichen Kartierung zu verstehen
  • Bewegungsfusionsbeispiel ImageTracking_MotionFusion, um die erwartete Leistung der Bewegungsfusion zu verstehen
  • Mega-Beispiel MegaBlock_Basic, um die erwartete Leistung der Mega-Funktion zu verstehen