Table of Contents

Mendiagnosis dan memperbaiki masalah content jitter dan drift dalam aplikasi

"Virtual content drifting", "object shaking", dan "position unstable" adalah masalah yang sering ditemui developer dalam aplikasi AR. Content yang tidak stabil dapat sangat merusak immersion, bahkan menyebabkan user experience yang buruk.

Artikel ini membantu Anda memahami penyebab content jitter dan drift, serta menyediakan proses troubleshooting dan optimisasi yang sistematis.

Membedakan "jitter normal" dan "drift abnormal"

Pertama, kita perlu menetapkan ekspektasi yang wajar. Mewujudkan AR tracking presisi tinggi pada mobile device pada dasarnya memang penuh tantangan. Kondisi berikut termasuk rentang normal. Kondisi ini tidak dapat sepenuhnya dihilangkan, tetapi dapat dioptimalkan:

  • Tiny high-frequency jitter:

    • Gejala: Virtual object memiliki getaran halus pada level milimeter.
    • Penyebab: Ini disebabkan oleh physical noise pada device sensor, batas presisi visual tracking algorithm, dan getaran kecil tangan saat memegang device.
    • Contoh: Saat mengamati dari jarak dekat, misalnya menempatkan virtual object di atas meja lalu mendekat untuk melihatnya, jitter halus seperti ini normal.
  • Drift singkat:

    • Gejala: Saat user menggerakkan atau memutar device dengan cepat, virtual object mengalami offset posisi dalam waktu singkat (0.5-1 detik), lalu pulih.
    • Penyebab: Saat bergerak cepat, accumulated error IMU (inertial measurement unit) dan latency visual localization pada device SLAM system dapat menyebabkan position drift singkat.
    • Contoh: Dalam scene dinamis, ini dapat diterima. Jika object dapat cepat "ditarik kembali" ke posisi yang benar, berarti system bekerja efektif.

Sedangkan kondisi berikut termasuk masalah abnormal yang perlu ditroubleshoot dan diperbaiki:

  • Persistent large position drift: Virtual object perlahan dan terus-menerus menyimpang dari posisi seharusnya, dan tidak pulih, atau baru pulih setelah waktu lama.
  • Jumping atau flickering yang parah: Virtual object meloncat jauh di layar, atau muncul dan hilang.
  • Relative position terhadap real object tidak konsisten: Virtual object tidak dapat stabil "dipaku" pada real object.
Catatan

Selain itu, ada satu poin penting yang perlu diperhatikan:
Untuk device yang berjalan dalam mode 0DoF, 3DoF, atau 5DoF, sense of fit dan realism secara alami lebih lemah daripada device 6DoF. Saat user bergerak cepat, berbelok, atau naik turun tangga, virtual object tidak dapat mengikuti dengan sempurna.
Karena itu, dalam mode ini, fenomena seperti content "mengambang di udara" atau "position offset" adalah batas fundamental kemampuan device, bukan fault "content jitter atau drift" yang dibahas dalam artikel ini.
Untuk perbedaan pengalaman antara berbagai mode xDoF, lihat pengantar di Navigation best practices.

Proses troubleshooting sistematis

Lakukan troubleshooting dengan urutan berikut, mulai dari penyebab yang paling mungkin.

Langkah 1: Faktor lingkungan eksternal dan hardware (tidak perlu mengubah code)

  1. Pemeriksaan physical environment:

    • Kekayaan texture
      Apakah test environment Anda terlalu monoton? Dinding putih polos yang luas, lantai halus, dan permukaan kaca semuanya dapat membuat visual localization gagal atau menghasilkan error.
    • Dynamic object
      Apakah ada banyak object bergerak di environment, seperti kerumunan orang atau kendaraan yang bergerak? Dynamic object dapat mengganggu visual localization, tetapi masalah seperti ini biasanya sementara.
    • Scene confusion
      Apakah ada area yang sangat mudah tertukar dalam environment, seperti area lift di pintu masuk yang berbeda? Area yang mirip secara visual dapat memengaruhi localization, sehingga localization result melompat bolak-balik di antara area yang mirip. Masalah seperti ini dapat dihindari dengan menetapkan prior information yang sesuai sebelumnya.
  2. Pemeriksaan device hardware:

    • Device heat
      Setelah berjalan lama, apakah device menjadi sangat panas? Overheating dapat menyebabkan CPU/GPU throttling dan memengaruhi tracking performance dari SLAM system bawaan device. Ini adalah penyebab paling umum dari persistent drift.
    • Device performance
      Beberapa device lama dibatasi oleh hardware performance dan component precision, sehingga lebih mudah mengalami scale drift dan menyebabkan virtual content ikut drift. Anda dapat mencoba mengganti device untuk comparative test agar dapat menilai apakah masalah disebabkan oleh batas device itu sendiri.

Langkah 2: Analisis kualitas map dan localization (menggunakan external tools)

  1. Gunakan Mega Toolbox:

    • Jalankan Mega Toolbox di lokasi yang sama dan amati stabilitas localization-nya.
    • Jika localization Toolbox juga drift/jump: Masalah ada pada map itu sendiri atau current environment tidak cocok untuk localization.
    • Jika localization Toolbox stabil: Masalah ada pada aplikasi Anda. Lanjutkan ke langkah 3.
  2. Jalankan simulasi PC dengan EIF data:

    • Replay EIF data yang Anda rekam di lokasi.
    • Jika replay juga drift/jump: Ini menunjukkan scene itu sendiri tidak cocok untuk localization, atau map itu sendiri bermasalah, atau device yang merekam EIF memiliki scale drift dalam motion tracking.
    • Jika replay stabil: Ini menunjukkan scene itu sendiri ramah untuk localization, dan masalah mungkin berasal dari faktor saat aplikasi Anda berjalan realtime, seperti device heat dan throttling.

Langkah 3: Pemeriksaan internal application logic

  1. Pose update:

    • Periksa apakah Anda menerapkan smoothing tambahan yang tidak perlu pada pose data, seperti Lerp atau SmoothDamp yang berlebihan, yang justru dapat menyebabkan latency dan sense of drift.
    • Dalam sebagian besar kasus, langsung menggunakan Pose asli yang dikembalikan Mega adalah pendekatan paling stabil.
  2. Coordinate system matching:

    • Pastikan hubungan node antara virtual object, scene camera, MegaTracker, dan object sejenis sudah benar, dan nilai local transform dari node di bawah MegaBlocks tidak pernah dimodifikasi.
    • Setup node yang salah dapat menyebabkan transformasi coordinate system yang tidak benar, sehingga rendering content berperilaku tidak terduga.

Pengingat khusus: masalah visual overlay pada device headset OST

Setelah menyelesaikan pemeriksaan localization dan rendering logic, jika Anda menggunakan device headset OST (optical see-through), Anda juga perlu mempertimbangkan satu kategori masalah khusus.

Meskipun device itu sendiri memiliki kemampuan 6DoF motion tracking yang baik, terkadang virtual object dan physical space tetap terasa kurang pas saat dioverlay. Ini biasanya bukan fault pada Mega localization service, tetapi fenomena bawaan yang disebabkan oleh prinsip optik device OST, seperti optical alignment error atau perbedaan eye calibration.

Untuk penjelasan detail dan metode penilaian masalah jenis ini, lihat Catatan khusus device OST.

Ringkasan dan best practices

Setelah troubleshooting di atas, Anda seharusnya sudah menemukan root cause content jitter atau drift. Untuk membantu Anda meninjau dan mengambil tindakan dengan cepat, tabel berikut merangkum gejala umum, kemungkinan penyebab, dan best practices. Berdasarkan hasil troubleshooting Anda, temukan solusi yang sesuai dalam tabel berikut.

Jenis masalah Kemungkinan penyebab Best practice
Tiny jitter Sensor noise, batas algorithm Tiny jitter seperti ini normal dan umumnya tidak perlu terlalu diperhatikan
Drift setelah fast movement SLAM latency, algorithm correction Arahkan user untuk menggerakkan device dengan mulus. Jika tidak dapat pulih cepat, perlu perhatian tambahan
Persistent large drift SLAM fault, perbedaan device Gunakan device lain untuk cross-validation
Jumping/flickering parah Scene membingungkan, environment tidak ramah localization Tetapkan auxiliary prior information, atau arahkan user
Relative position terhadap real object tidak konsisten Localization/map error, code logic error Uji dari beberapa viewpoint dan amati posisi virtual object, lalu perbaiki kemungkinan code error

Jika setelah troubleshooting dan perbaikan di atas masalah Anda masih ada, kirim laporan detail melalui Issue reporting bersama screen recording, EIF data recording, dan log detail.