Diagnose und Behebung von Inhaltszittern und Drift in einer Anwendung
"Virtuelle Inhalte driften", "Objekte zittern" und "Positionen sind instabil" sind häufige Probleme, auf die Entwickler in AR-Anwendungen stoßen. Instabile Inhalte können die Immersion stark beeinträchtigen und sogar zu einer schlechten Benutzererfahrung führen.
Dieser Artikel hilft Ihnen, die Ursachen für Inhaltszittern und Drift zu verstehen, und bietet einen systematischen Prozess zur Fehlersuche und Optimierung.
"Normales Zittern" von "abnormalem Drift" unterscheiden
Zunächst müssen realistische Erwartungen gesetzt werden. Hochpräzises AR tracking auf mobilen Geräten ist von Natur aus anspruchsvoll. Die folgenden Situationen liegen im normalen Bereich. Sie lassen sich nicht vollständig beseitigen, aber optimieren:
Sehr kleines hochfrequentes Zittern:
- Symptom: Das virtuelle Objekt zeigt ein feines Zittern im Millimeterbereich.
- Ursache: Dies entsteht durch physisches Rauschen der Gerätesensoren, Genauigkeitsgrenzen der visual tracking Algorithmen und kleine Handbewegungen beim Halten des Geräts.
- Beispiel: Bei Betrachtung aus kurzer Distanz, etwa wenn ein virtuelles Objekt auf einem Tisch platziert und aus der Nähe betrachtet wird, ist dieses leichte Zittern normal.
Kurzzeitiger Drift:
- Symptom: Wenn der Benutzer das Gerät schnell bewegt oder dreht, zeigt das virtuelle Objekt für kurze Zeit (0.5-1 Sekunde) eine Positionsabweichung und erholt sich danach.
- Ursache: Bei schneller Bewegung können kumulierte Fehler der IMU (inertial measurement unit) und Latenz der visual localization im SLAM-System des Geräts kurzzeitigen Positionsdrift verursachen.
- Beispiel: In dynamischen Szenen ist dies akzeptabel. Wenn das Objekt schnell an die richtige Position "zurückgezogen" wird, arbeitet das System effektiv.
Die folgenden Situationen sind dagegen abnormale Probleme, die untersucht und behoben werden müssen:
- Anhaltender, großflächiger Positionsdrift: Das virtuelle Objekt weicht langsam und kontinuierlich von seiner vorgesehenen Position ab und erholt sich nicht oder erst nach langer Zeit.
- Starkes Springen oder Flackern: Das virtuelle Objekt springt stark auf dem Bildschirm oder erscheint und verschwindet.
- Inkonsistente relative Position zu realen Objekten: Das virtuelle Objekt kann nicht stabil an einem realen Objekt "fixiert" werden.
Anmerkung
Zusätzlich gibt es einen wichtigen Punkt:
Bei Geräten, die im 0DoF-, 3DoF- oder 5DoF-Modus laufen, sind Passgefühl und Realismus grundsätzlich schwächer als bei 6DoF-Geräten. Wenn Benutzer sich schnell bewegen, drehen oder Treppen hinauf- und hinuntergehen, können virtuelle Objekte nicht perfekt folgen.
Daher sind in diesen Modi Phänomene wie "in der Luft schwebende" Inhalte oder "Positionsversatz" grundlegende Einschränkungen der Gerätefähigkeit und nicht der in diesem Artikel behandelte Fehler "Inhaltszittern oder Drift".
Informationen zu den Erlebnisunterschieden zwischen verschiedenen xDoF-Modi finden Sie in der Einführung unter Best Practices für Navigation.
Systematischer Fehlersuchprozess
Führen Sie die Fehlersuche in der folgenden Reihenfolge durch und beginnen Sie mit den wahrscheinlichsten Ursachen.
Schritt 1: Externe Umgebung und Hardwarefaktoren (keine Codeänderung erforderlich)
Prüfung der physischen Umgebung:
- Texturreichtum
Ist Ihre Testumgebung zu monoton? Große einfarbig weiße Wände, glatte Böden und Glasflächen können visual localization fehlschlagen lassen oder Fehler verursachen. - Dynamische Objekte
Gibt es viele bewegte Objekte in der Umgebung, etwa Menschenmengen oder fahrende Fahrzeuge? Dynamische Objekte können visual localization stören, aber dieses Problem ist meist kurzzeitig. - Szenenverwechslung
Gibt es in der Umgebung Bereiche, die sehr leicht verwechselt werden können, zum Beispiel Aufzugsvorräume an verschiedenen Eingängen? Visuell ähnliche Bereiche können localization beeinflussen und dazu führen, dass Localization-Ergebnisse zwischen ähnlichen Bereichen hin und her springen. Diese Probleme können durch vorheriges Setzen geeigneter prior information vermieden werden.
- Texturreichtum
Prüfung der Gerätehardware:
- Geräteerwärmung
Wird das Gerät nach längerem Betrieb stark heiß? Überhitzung kann CPU/GPU throttling verursachen und die tracking performance des geräteeigenen SLAM-Systems beeinträchtigen. Dies ist die häufigste Ursache für anhaltenden Drift. - Geräteleistung
Einige ältere Geräte sind durch Hardwareleistung und Komponentengenauigkeit eingeschränkt, wodurch scale drift leichter auftreten kann und virtuelle Inhalte mitdriften. Sie können zum Vergleich ein anderes Gerät verwenden, um zu beurteilen, ob das Problem durch Einschränkungen des Geräts selbst verursacht wird.
- Geräteerwärmung
Schritt 2: Analyse von Karten- und localization-Qualität (mit externen Tools)
Mega Toolbox verwenden:
- Führen Sie Mega Toolbox am selben Ort aus und beobachten Sie die Stabilität der localization.
- Wenn die Toolbox localization ebenfalls driftet oder springt: Das Problem liegt an der Karte selbst oder daran, dass die aktuelle Umgebung nicht für localization geeignet ist.
- Wenn die Toolbox localization stabil ist: Das Problem liegt in Ihrer Anwendung. Fahren Sie mit Schritt 3 fort.
EIF data in der PC-Simulation ausführen:
- Spielen Sie die vor Ort aufgezeichneten EIF data ab.
- Wenn die Wiedergabe ebenfalls driftet oder springt: Dies bedeutet, dass die Szene selbst nicht für localization geeignet ist, dass die Karte selbst ein Problem hat oder dass das Gerät, das EIF aufgezeichnet hat, scale drift im motion tracking aufweist.
- Wenn die Wiedergabe stabil ist: Dies bedeutet, dass die Szene selbst für localization geeignet ist und das Problem möglicherweise durch Faktoren beim Echtzeitbetrieb Ihrer Anwendung entsteht, etwa Geräteerwärmung und throttling.
Schritt 3: Prüfung der internen Anwendungslogik
Pose-Aktualisierung:
- Prüfen Sie, ob Sie unnötige zusätzliche Glättung auf pose data anwenden, etwa übermäßiges
LerpoderSmoothDamp, was stattdessen Latenz und ein Driftgefühl verursachen kann. - In den meisten Fällen ist die direkte Verwendung der von Mega zurückgegebenen ursprünglichen Pose der stabilste Ansatz.
- Prüfen Sie, ob Sie unnötige zusätzliche Glättung auf pose data anwenden, etwa übermäßiges
Abgleich des coordinate system:
- Bestätigen Sie, dass die node-Beziehungen zwischen Ihren virtuellen Objekten, der scene camera,
MegaTrackerund ähnlichen Objekten korrekt sind und dass dielocal transformWerte der nodes unterMegaBlocksnicht verändert wurden. - Eine falsche node-Einrichtung kann zu falschen coordinate system Transformationen führen und unvorhersehbares Rendering-Verhalten des Inhalts verursachen.
- Bestätigen Sie, dass die node-Beziehungen zwischen Ihren virtuellen Objekten, der scene camera,
Besonderer Hinweis: visual overlay Probleme auf OST-Headset-Geräten
Nach Abschluss der Prüfung von localization und rendering logic müssen Sie bei Verwendung eines OST (optical see-through) Headset-Geräts zusätzlich eine besondere Problemkategorie berücksichtigen.
Auch wenn das Gerät selbst gute 6DoF motion tracking Fähigkeiten besitzt, kann es manchmal dennoch vorkommen, dass virtuelle Objekte beim Überlagern mit dem physical space nicht gut passen. Dies ist normalerweise kein Fehler des Mega localization service, sondern ein inhärentes Phänomen, das durch die optischen Prinzipien von OST-Geräten verursacht wird, etwa optical alignment Fehler oder Unterschiede in der eye calibration.
Ausführliche Erklärungen und Bewertungsmethoden für diese Art von Problem finden Sie unter Besondere Hinweise für OST-Geräte.
Zusammenfassung und Best Practices
Nach der obigen Fehlersuche sollten Sie die Hauptursache für Inhaltszittern oder Drift gefunden haben. Damit Sie schnell überprüfen und handeln können, fasst die folgende Tabelle typische Symptome, mögliche Ursachen und Best Practices zusammen. Suchen Sie entsprechend Ihrem Ergebnis die passende Lösung in der Tabelle.
| Problemtyp | Mögliche Ursache | Best Practice |
|---|---|---|
| Kleines Zittern | Sensorrauschen, Algorithmusgrenzen | Diese Art von kleinem Zittern ist normal und erfordert normalerweise keine besondere Aufmerksamkeit |
| Drift nach schneller Bewegung | SLAM-Latenz, Algorithmuskorrektur | Benutzer können angeleitet werden, das Gerät gleichmäßig zu bewegen. Wenn keine schnelle Erholung erfolgt, ist zusätzliche Aufmerksamkeit nötig |
| Anhaltender großflächiger Drift | SLAM-Fehler, Geräteunterschiede | Verwenden Sie ein anderes Gerät zur Cross-Validation |
| Starkes Springen/Flackern | Verwechselbare Szene, localization-unfreundliche Umgebung | Setzen Sie auxiliary prior information oder leiten Sie Benutzer an |
| Inkonsistente relative Position zu realen Objekten | localization/map Fehler, code logic Fehler | Testen Sie aus mehreren viewpoints, beobachten Sie die Position des virtual object und beheben Sie mögliche Codefehler |
Wenn Ihr Problem nach der obigen Fehlersuche und Behebung weiterhin besteht, reichen Sie über Issue reporting einen detaillierten Bericht zusammen mit Bildschirmaufzeichnungen, EIF data recordings und detaillierten Logs ein.