ARCoreを使おうとしたら思いっきりハマった話

のえる のえる
2020.08.17

画像認識が普及し始めてきて、さまざまなライブラリやサービスが世の中に出てきました。

 

それぞれで特徴と強みがありますが、Googleが開発した拡張現実のソフトウェアキット ARCore は無料で使用することができる高品質・マルチプラットフォーム対応のツールです。

 

今回これを使用した調査の際、ハマってしまったことを備忘録みたいに残しておこうと思います。

 

注意

この情報は記事作成時点のものです。
読まれるタイミングによっては改善されている可能性があります。

カスタムするための情報が全然ない

タイトルはやや誇張表現となっていますが、実際に調べてみると世界中でほとんど同じことが質問・回答されています。

 

「うまく動かない」「認識されない」 etc.

 

ARCoreは登場から日が浅く、また日々更新されているため、バージョンごとなどによって異なります。

 

さらに Quickstart の内容で起動することはできても、そこから改修することのハードルが非常に高いです。
(「こういう風にしたい」を実装するための情報が調べづらい)

 

公式ドキュメントにも情報がないことが多々あり、痒いところに手が届かない、という印象でほとんど手探り状態でした。

機能が足りてない

これはAPIドキュメントを見ていて気付きました。

 

公式資料のサンプルでは、プログラム内でAR用のデータベースに画像を動的に追加することで、事前に作成したデータだけではなく、カメラで撮影したものもマーカーにする方法が記載されています。

 

しかし、この内容を読んでいると

 

AugmentedImageDatabase には addImage があるのに remove(delete) がない

 

ということが発覚。

 

このデータベースへは 最大1,000件(記事作成時点) まで という上限があります。

 

動的に追加できるのに削除できない

 

不思議ですね。

 

この件については海外の方が話し合っているサイトを1件だけ発見しましたが、そこに至るまでも時間がかかりました。

 

さらに 撮影した画像がマーカーとして最適かどうかをチェックする機能もありません
(後述のコマンドラインツールには最適度合を数値で取得する機能があります)

 

ではどうやって判断するのかというと……

 

DBにファイル突っ込んで例外処理(Exception)が発生したらアウト という力業

 

調べてみましたが、明確な機能も回答もありませんでした。

 

この辺はちょっと機能追加したほうが良いのでは?と思う部分です。

エミュレーターが使えない

ARCoreは最新技術を使用しており、対応デバイスもまだ少ない のが現状です。

 

公式資料にも Run AR Apps in Android Emulator がありましたので、エミュレーターで何とか代用しようと考えました。

 

資料通りにエミュレーターに対応デバイスを追加、ARCoreアプリもインストール完了、さぁやるぞ!と意気込んでいたら エミュレーターで動かない という事態。

 

資料も3回読み直し、手順もやり直しを行いましたが、結局私の環境ではエミュレーターで動くことはありませんでした。

 

そのため、対応している実機を用意することになってしまいました、残念・・・・。

コマンドラインツールのオプション説明が中途半端

Android の ARCore で使用する .imgdb というデータベースファイル。

 

このファイルを生成するためのツール arcoreimg公式サイト で配布、説明されていますが、その説明内容が中途半端です。

 

説明されているコマンドに無いのが eval-db

 

これは 構築されたデータベース内の個々の画像の品質を評価する というものです。

 

登録されたデータベース内の情報を確認できるのですが、公式資料では(記事作成時点では)紹介されていません。

 

ちなみにコマンドラインツールの詳細を知りたい場合はコマンドの最後に --help をつけることで、説明が表示されます。

 

さいごに

最新技術は不明なことが多く、壁にぶつかりながら進むことが多いですが、ARCoreは特に手探り感が強かった印象です。

 

ただ、それでも認識精度や速度が良いので、用途が決まっていればかなり使えるツールの一つではないかと思います。

 

以上、ARCoreを素直に使ってみた感想でした。

スポンサーリンク

POPULAR

のえる

のえる

Full-stack Developer