問題診断と報告
本章では、ARアプリケーションを構築する際に発生する可能性のある問題、主要な分析方法、および問題報告に必要な情報収集と連絡手段について説明します。
AR シーンにおける問題分析の課題
ARシーンにおける問題分析には、いくつかの特有の課題が存在します。
入力の不確実性
従来のアプリケーションでは、入力は通常、確定したクリックやキーボードイベントです。一方、ARでは、入力が変動する物理環境に由来するため、分析が非常に困難になります。ARアプリケーションは物理環境と組み合わせて使用されますが、開発やテスト時には、物理環境で毎回同じ入力を得ることはできません。同じルートを移動したとしても、取得されるカメラ画像、加速度計、ジャイロスコープなどのセンサーデータには変動が生じる可能性があり、これが追跡結果に大きな影響を与えることがあります。
EasyARでは、EIFファイルの録画と再生機能を提供しており、入力の不確実性をある程度緩和できます。しかし、アルゴリズム自体に不確実性があるため、最終的な追跡結果は本質的に不確かです。同時に、EIF録画データの網羅性不足、照明変化、歩行者や車両による動的遮蔽なども、実際の使用時の追跡品質に影響を与えます。
アルゴリズムの不確実性
ARの中核となるアルゴリズムは、SLAM(Simultaneous Localization and Mapping:自己位置推定と環境地図作成)などの視覚アルゴリズムです。これらのアルゴリズムは本質的に確率的であり、決定的ではありません。
入力されるカメラ画像に顕著な特徴が不足している場合、アルゴリズムは履歴位置姿勢と加速度計、ジャイロスコープなどのセンサーデータを使用して予測を行うことがあります。予測された位置と姿勢の結果は時間の経過とともに蓄積され、ドリフト(漂移)を生じさせます。そして、各予測結果とデータの入力タイミング、デバイスの温度、CPUの周波数、ネットワーク伝送速度などの外部要因は動的に変化し、蓄積されるため、同じ入力であっても複数回の実行結果には大きなばらつきが生じる可能性があります。
異なる問題に対する分析方法
問題の種類によって、必要となる分析方法は異なる場合があります。
ログ
プログラムが正常に動作しない状況、例えば黒画面、正常な位置特定ができない、正常な追跡ができない場合など、最も基本的な方法はログを確認し、エラーメッセージがないか調べることです。EasyARで生成されるログはすべて、識別しやすいように特定のタグが付けられています。
クラッシュ
プログラムがクラッシュすることがあります。クラッシュが発生する場所は、ライブラリのコード内である場合もあれば、プログラム自身のコード内である場合もあります。クラッシュの原因は、プログラム自体の問題による可能性もあれば、ライブラリに問題がある可能性もあります。
揺れ、跳ねなどの視覚的異常
センサーデータの精度やアルゴリズムの適応性の問題により、位置特定の揺れや跳ねが発生することがあります。このような場合は、異なるデバイスを使用して問題を再現することを試み、スクリーンショット、画面録画、およびEIFファイルの録画を行ってください。
プラットフォーム別ガイド
問題の診断と報告はプラットフォームと密接に関連しています。対象プラットフォームに応じて、以下のガイドを参照して開発を行ってください:
- ログ分析 Android
- ログ分析 iOS/macOS/visionOS
- ログ分析 Windows
- クラッシュ分析 Android
- クラッシュ分析 iOS/macOS/visionOS
- クラッシュ分析 Windows
- 揺れ、跳ねなどの視覚的異常分析 スクリーンショットと画面録画
- 揺れ、跳ねなどの視覚的異常分析 XRヘッドセットの画面録画
- 揺れ、跳ねなどの視覚的異常分析 EIFを使用した異常の再現
- Unity 概要
- Unity UIメッセージ
- Unity 開発者モード
- Unity EEDダンプファイルの録画
- Unity 問題報告
- Unity Diagnostics Controller コンポーネントリファレンス