Table of Contents

Diagnostiquer et corriger les problèmes de jitter et de drift du contenu dans une application

"Le contenu virtuel dérive", "les objets tremblent" et "la position est instable" sont des problèmes fréquents dans les applications AR. Un contenu instable peut fortement nuire à l'immersion, voire dégrader l'expérience utilisateur.

Cet article vous aide à comprendre les causes du jitter et du drift du contenu, et propose une démarche systématique de troubleshooting et d'optimisation.

Distinguer le "jitter normal" du "drift anormal"

Il faut d'abord établir des attentes raisonnables. Obtenir un AR tracking de haute précision sur mobile est, par nature, difficile. Les cas suivants relèvent de la plage normale. Ils ne peuvent pas être totalement éliminés, mais peuvent être optimisés :

  • Petit jitter haute fréquence :

    • Symptôme : L'objet virtuel présente de légères vibrations de l'ordre du millimètre.
    • Cause : Cela provient du bruit physique des capteurs de l'appareil, des limites de précision des algorithmes de visual tracking et des petits tremblements de la main qui tient l'appareil.
    • Exemple : Lors d'une observation rapprochée, par exemple si l'on place un objet virtuel sur une table et que l'on s'approche pour le regarder, ce léger jitter est normal.
  • Drift bref :

    • Symptôme : Lorsque l'utilisateur déplace ou fait pivoter rapidement l'appareil, l'objet virtuel présente un offset de position pendant une courte durée (0.5-1 seconde), puis revient.
    • Cause : Lors des mouvements rapides, l'erreur cumulée de l'IMU (inertial measurement unit) et la latence de visual localization dans le système SLAM de l'appareil peuvent provoquer un bref position drift.
    • Exemple : Dans les scènes dynamiques, cela est acceptable. Si l'objet peut être rapidement "ramené" à la bonne position, cela indique que le système fonctionne efficacement.

Les cas suivants sont en revanche des problèmes anormaux qui doivent être diagnostiqués et corrigés :

  • Drift de position persistant et important : L'objet virtuel s'écarte lentement et continuellement de sa position attendue, sans revenir, ou seulement après un long moment.
  • Sauts ou scintillements importants : L'objet virtuel saute largement à l'écran, ou apparaît et disparaît.
  • Position relative incohérente par rapport aux objets réels : L'objet virtuel ne peut pas rester "fixé" de façon stable sur un objet réel.
Note

Il existe également un point essentiel à garder en tête :
Pour les appareils fonctionnant en modes 0DoF, 3DoF ou 5DoF, la sensation d'alignement et de réalisme est intrinsèquement plus faible que sur les appareils 6DoF. Lorsque l'utilisateur se déplace rapidement, tourne ou monte et descend des escaliers, les objets virtuels ne peuvent pas suivre parfaitement.
Par conséquent, dans ces modes, les phénomènes comme un contenu qui "flotte dans l'air" ou un "décalage de position" relèvent des limites fondamentales des capacités de l'appareil, et non du défaut de "jitter ou drift du contenu" traité dans cet article.
Pour les différences d'expérience entre les différents modes xDoF, consultez l'introduction de Bonnes pratiques de navigation.

Processus systématique de troubleshooting

Effectuez le troubleshooting dans l'ordre suivant, en commençant par les causes les plus probables.

Étape 1 : Facteurs d'environnement externe et de hardware (aucune modification de code requise)

  1. Vérification de l'environnement physique :

    • Richesse des textures
      Votre environnement de test est-il trop monotone ? De grands murs blancs uniformes, des sols lisses et des surfaces vitrées peuvent tous faire échouer visual localization ou produire des erreurs.
    • Objets dynamiques
      L'environnement contient-il beaucoup d'objets en mouvement, comme des foules ou des véhicules ? Les objets dynamiques perturbent visual localization, mais ce problème est souvent temporaire.
    • Confusion de scènes
      Existe-t-il dans l'environnement des zones très faciles à confondre, comme des halls d'ascenseur à différentes entrées ? Les zones visuellement similaires peuvent affecter localization et faire sauter le résultat entre des zones semblables. Ce type de problème peut être évité en définissant au préalable une prior information appropriée.
  2. Vérification du hardware de l'appareil :

    • Échauffement de l'appareil
      Après une longue exécution, l'appareil chauffe-t-il fortement ? La surchauffe peut entraîner un throttling CPU/GPU et affecter la tracking performance du système SLAM propre à l'appareil. C'est la cause la plus fréquente de drift persistant.
    • Performance de l'appareil
      Certains appareils anciens sont limités par leurs performances hardware et la précision de leurs composants, ce qui facilite le scale drift et entraîne le drift du contenu virtuel. Vous pouvez essayer un autre appareil pour un test comparatif afin de déterminer si le problème vient des limites de l'appareil lui-même.

Étape 2 : Analyse de la qualité de la map et de localization (avec des outils externes)

  1. Utiliser Mega Toolbox :

    • Exécutez Mega Toolbox au même endroit et observez la stabilité de sa localization.
    • Si la localization de Toolbox dérive ou saute également : Le problème vient de la map elle-même ou du fait que l'environnement actuel n'est pas adapté à localization.
    • Si la localization de Toolbox est stable : Le problème vient de votre application. Passez à l'étape 3.
  2. Exécuter des EIF data en simulation PC :

    • Relisez les EIF data enregistrées sur site.
    • Si la relecture dérive ou saute également : Cela indique que la scène elle-même n'est pas adaptée à localization, que la map elle-même présente un problème, ou que l'appareil ayant enregistré l'EIF présente un scale drift dans son motion tracking.
    • Si la relecture est stable : Cela indique que la scène elle-même est favorable à localization, et que le problème peut provenir de facteurs lors de l'exécution temps réel de votre application, comme l'échauffement de l'appareil et le throttling.

Étape 3 : Vérification de la logique interne de l'application

  1. Mise à jour de la pose :

    • Vérifiez si vous avez appliqué un smoothing supplémentaire inutile aux pose data, comme un Lerp ou un SmoothDamp excessif, ce qui peut au contraire introduire de la latence et une sensation de drift.
    • Dans la plupart des cas, utiliser directement la Pose originale retournée par Mega est l'approche la plus stable.
  2. Correspondance du coordinate system :

    • Confirmez que les relations de node entre vos objets virtuels, la scene camera, MegaTracker et les objets similaires sont correctes, et que les valeurs de local transform des nodes sous MegaBlocks n'ont pas été modifiées.
    • Une mauvaise configuration des nodes peut entraîner des transformations incorrectes du coordinate system et provoquer un comportement imprévisible du rendering du contenu.

Rappel spécial : problèmes de visual overlay sur les appareils headset OST

Après avoir vérifié localization et rendering logic, si vous utilisez un appareil headset OST (optical see-through), vous devez également tenir compte d'une catégorie particulière de problèmes.

Même si l'appareil possède une bonne capacité de 6DoF motion tracking, il peut parfois exister une mauvaise sensation d'alignement lorsque les objets virtuels sont superposés au physical space. Il ne s'agit généralement pas d'un défaut du Mega localization service, mais d'un phénomène inhérent aux principes optiques des appareils OST, par exemple des erreurs d'optical alignment ou des différences de eye calibration.

Pour une explication détaillée et les méthodes de jugement de ce type de problème, consultez Notes spéciales pour les appareils OST.

Résumé et bonnes pratiques

Après le troubleshooting ci-dessus, vous devriez avoir identifié la cause racine du jitter ou du drift du contenu. Pour vous aider à récapituler rapidement et à agir, le tableau suivant résume les symptômes courants, les causes possibles et les bonnes pratiques. Selon le résultat de votre troubleshooting, trouvez la solution correspondante dans le tableau.

Type de problème Cause possible Bonne pratique
Petit jitter Bruit des capteurs, limites de l'algorithme Ce type de petit jitter est normal et ne nécessite généralement pas beaucoup d'attention
Drift après déplacement rapide Latence SLAM, correction de l'algorithme Guidez l'utilisateur pour déplacer l'appareil en douceur. S'il ne revient pas rapidement, une attention supplémentaire est nécessaire
Drift large persistant Défaut SLAM, différences entre appareils Utilisez un autre appareil pour une cross-validation
Sauts/scintillements importants Scène confuse, environnement peu favorable à localization Définissez une auxiliary prior information ou guidez l'utilisateur
Position relative incohérente par rapport aux objets réels Erreur de localization/map, erreur de code logic Testez depuis plusieurs viewpoints, observez la position du virtual object et corrigez les erreurs de code possibles

Si votre problème persiste après le troubleshooting et les corrections ci-dessus, envoyez un rapport détaillé via Issue reporting avec des screen recordings, des enregistrements EIF data et des logs détaillés.