こんにちは、uechanです。
ソフトウェアテスト Advent Calendar 2024 9日目の記事です。
今回は私がQAエンジニアとして働いているSTYLYで行ったARの位置合わせの精度検証についてお話します
ARの位置合わせって?
AR(Augmented Reality)はすごい感単にいうと以下の画像のように現実に対して3Dオブジェクトを配置することができる機能です
ぞうさんの遊具に対して青い炎という3Dのエフェクトを配置しています
つまりこの時、ぞうさんの遊具を目印に3Dエフェクトを出しているんです
この、目印を何にするか?≒ARの位置合わせをどのようにおこなうか?を
弊社「STYLY」にでは以下の5機能出しています
- 平面検知
- AR on City (都市テンプレート)
- 特定の都市の特定の場所に対してARオブジェクトを配置することのできる機能です
- 対応都市は増えており、2024年12月の時点で日本国内の12都市に対応してます
- 詳しくはこちらの記事にあります
- AR on Sky
- 空を自動で検知し、空のみに3Dオブジェクトを映し出す機能です
- immersal
- 特定のものを3Dスキャンの容量でマップ(目印)とし、3Dオブジェクトを出す機能です
事の始まり
社内のクリエイターおよび、取引先からの連絡で
以下の問い合わせが度々来るようになりました。
2年前にくらべてロケーションマーカー機能の位置合わせの精度が悪い!
もともとUIリニューアルを行う2022年より前からある機能であり、度重なるリニューアル時にも
計算ロジックをほぼ変えないようにしてアップデートをしてきた機能だったので精度が悪くなったのがとても不思議でした
じゃあ検証しましょう!
具体的にどのぐらいの精度で位置合わせができているのか?
それを検証する話が社内で持ち上がりました
ちなみにロケーションマーカーの機能は画像認識がメインで使われています
中身は適当ですがこんな感じ↑
これ、真ん中のQRコードが画像検知の邪魔して精度が悪いんじゃね??
検証していきましょう
検証手順
ロケーションマーカーを再生すると配置された3Dオブジェクトが何°傾いているのか?を測定してくれるデータが入っています
これを使って各色をiPhone 14 ProとPixel 7で各10回ずつ計測し、誤差の範囲を測定しました
結果は以下のようになりました
3Dオブジェクトの傾き(平均値)
機種名 | 通常 | 薄い灰色 | 黄緑色 | 水色 |
---|---|---|---|---|
iPhone 14 Pro | 2.24° | 2.15° | 1.67° | 1.36° |
Pixel 7 | 36.85° | 59.55° | 70.13° | 51.75° |
Androidはなかなかひどいですね
ただ、QRコードが邪魔しているわけではなさそうということがわかりました
検証側ではなんもわからんということで。。。
エンジニアのはむさんに依頼し、なぜAndroidがより精度が悪いのか?
向上する手立てはないのか?を調査してもらいました
結果が届き、検証用の新たなビルドが届きました
早速上記と同じ検証をしてみました
3Dオブジェクトの傾き(平均値)
機種名 | 通常マーカー |
---|---|
iPhone 14 Pro | 1.66° |
(参考)iPhone 14 Proの従来版 | 2.42° |
Pixel 7 | 2.15° |
(参考)Pixel 7 の従来版 | 36.85° |
Androidでの位置合わせの誤差がめちゃくちゃ改善された!
もちろんiPhoneでも改善してますね
何をおこなったのか
以下のような変更が入っているはずです
以下の条件を満たした場合に低精度として扱い
低精度状態の時はある程度状況が改善されるまで待ってからマーカーの画像検知を行いARの再生に移行する
- マーカーとカメラの距離が一定より遠い場合(マーカーをはっきりと認識するため)
- 自己位置推定が完了していない場合
- マーカートラッキングの内部状態がlimitedだった場合
- マーカーのY軸とグローバルY軸方向との角度差分をモニタし、変化が大きい場合
つまり、ARが安定して再生できる準備が整うまで待ってから位置合わせを行うようにしたってコト!
今までARの準備が整っているかを確認せずに再生していたので精度が悪かった
特にAndroidはARの準備が整うまでに時間がかかるのでより大きい誤差が出ていた!
iOSとAndroidのAR性能については結構差分があるのでこういうことになっていたみたいです
(この辺は別記事にしますが)
まとめ
結果として、内部実装が悪かったという結果でしたが
画像検知の特性を加味してARの精度検証を行うのは意外と珍しいのでは?
ということで記事にしてみました
AR話っぽい感じになってしまいましたがテストアドカレに出してます、、、(苦情来たら書き換えます)