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
- Abschließen der Entwicklung für Head-Mounted-Display-Unterstützung mit EasyAR.
- Lesen Sie Schnellstart zur Nutzung des EasyAR Sense Unity Plugins.
- Erlernen der Nutzung von Head-Mounted-Display-Beispielen.
- Verstehen der Android-Projektkonfiguration.
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.
Beobachten Sie die angezeigten session-Informationen vor Ihren Augen. Stellen Sie sicher, dass keine unerwarteten Ereignisse auftreten und dass der frame count kontinuierlich ansteigt.
Führen Sie
Imageaus, 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.
Führen Sie
Denseaus, 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:
Verfügbarkeitvon ExternalFrameSourceVirtuelle Kameravon ExternalFrameSource
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
Kamerarahmendatenvon ExternalFrameSource in die native Ebene (ohne Korrektheit der Daten)- Die
raw camera image datainnerhalb derKamerarahmendaten- Der
timestampinnerhalb derKamerarahmendaten(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 Kamerabilderin denKamerarahmendatenIntrinsische Parameterin denKamerarahmendaten(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 Kamerabildesin denKamerarahmendatenIntrinsische Parameterin denKamerarahmendaten(Datenkorrektheit nicht vollständig garantiert, da der Algorithmus eine gewisse Fehlertoleranz aufweist)Extrinsische Parameterin denKamerarahmendaten- Koordinatenkonsistenz der
GeräteposeinKamerarahmendatenundRender-Rahmendaten- Zeitdifferenz der
GeräteposeinKamerarahmendatenundRender-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äteposeist nicht mit dem Zeitstempel derRohdaten des Kamerabildessynchronisiert. - Die gleiche Pose wurde in
KamerarahmendatenundRender-Rahmendatenverwendet.
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 datain denKamerarahmendatenintrinsicsin denKamerarahmendaten(Datenkorrektheit nicht vollständig garantiert, da der Algorithmus fehlertolerant ist)extrinsicsin denKamerarahmendatendevice posein denKamerarahmendaten
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.
- Einführung in EasyAR Mega
- Ist meine lokalisierungsbibliothek verfügbar?
- Schnellstart mit dem EasyAR Mega Unity-Beispiel
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
KamerarahmendatenundRendering-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
KamerarahmendatenundRendering-Rahmendaten. - Achten Sie auf die Ausgabe des Bewegungs-Trackings/VIO-Systems. Das Panda-Modell unter
XR Originkann 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