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)
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.
- Kekayaan texture
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.
- Device heat
Langkah 2: Analisis kualitas map dan localization (menggunakan external tools)
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.
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
Pose update:
- Periksa apakah Anda menerapkan smoothing tambahan yang tidak perlu pada pose data, seperti
LerpatauSmoothDampyang 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.
- Periksa apakah Anda menerapkan smoothing tambahan yang tidak perlu pada pose data, seperti
Coordinate system matching:
- Pastikan hubungan node antara virtual object, scene camera,
MegaTracker, dan object sejenis sudah benar, dan nilailocal transformdari node di bawahMegaBlockstidak pernah dimodifikasi. - Setup node yang salah dapat menyebabkan transformasi coordinate system yang tidak benar, sehingga rendering content berperilaku tidak terduga.
- Pastikan hubungan node antara virtual object, scene camera,
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.