2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ソフトウェアテストAdvent Calendar 2024

Day 9

ARのテストでAR位置合わせの精度検証を行ったときの話

Last updated at Posted at 2024-12-08

こんにちは、uechanです。

ソフトウェアテスト Advent Calendar 2024 9日目の記事です。

今回は私がQAエンジニアとして働いているSTYLYで行ったARの位置合わせの精度検証についてお話します

ARの位置合わせって?

AR(Augmented Reality)はすごい感単にいうと以下の画像のように現実に対して3Dオブジェクトを配置することができる機能です
image.png

ぞうさんの遊具に対して青い炎という3Dのエフェクトを配置しています

つまりこの時、ぞうさんの遊具を目印に3Dエフェクトを出しているんです

この、目印を何にするか?≒ARの位置合わせをどのようにおこなうか?を
弊社「STYLY」にでは以下の5機能出しています

  • 平面検知
    • 1番オーソドックスな機能です
    • 平面(床など)を自動検知して、平面の好きな場所に置くというものです
      • image.png
    • ただしこれではどこでも体験できる反面、場所やものに紐づいた体験は作ることは難しいです
  • AR on City (都市テンプレート)
    • 特定の都市の特定の場所に対してARオブジェクトを配置することのできる機能です
    • 対応都市は増えており、2024年12月の時点で日本国内の12都市に対応してます
      • 詳しくはこちらの記事にあります

  • AR on Sky
    • 空を自動で検知し、空のみに3Dオブジェクトを映し出す機能です

  • immersal
    • 特定のものを3Dスキャンの容量でマップ(目印)とし、3Dオブジェクトを出す機能です

  • ロケーションマーカー
    • これが今回の記事で検証した機能です
    • 古くからある機能でSTYLYマーカーと呼ばれる画像を目印に3Dオブジェクトを出す機能です
    • image.png

事の始まり

社内のクリエイターおよび、取引先からの連絡で
以下の問い合わせが度々来るようになりました。

2年前にくらべてロケーションマーカー機能の位置合わせの精度が悪い!

もともとUIリニューアルを行う2022年より前からある機能であり、度重なるリニューアル時にも
計算ロジックをほぼ変えないようにしてアップデートをしてきた機能だったので精度が悪くなったのがとても不思議でした

じゃあ検証しましょう!

具体的にどのぐらいの精度で位置合わせができているのか?
それを検証する話が社内で持ち上がりました

ちなみにロケーションマーカーの機能は画像認識がメインで使われています

STYLYアプリ内で画像認識の目安に使っている画像はこちら
{6C2B1FCD-EF3F-478B-8C97-E834276B3E77}.png

実際に使われる時は真ん中の白い部分にQRコードが入ります

中身は適当ですがこんな感じ↑

これ、真ん中のQRコードが画像検知の邪魔して精度が悪いんじゃね??

検証していきましょう

検証手順

{73E260AD-D6E4-4073-930D-9F9BAF16D348}.png
真ん中の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がより精度が悪いのか?
向上する手立てはないのか?を調査してもらいました

image.png

結果が届き、検証用の新たなビルドが届きました

早速上記と同じ検証をしてみました

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話っぽい感じになってしまいましたがテストアドカレに出してます、、、(苦情来たら書き換えます)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?