MoTLab -GO Inc. Engineering Blog-MoTLab -GO Inc. Engineering Blog-

ARCoreの改善した機能と新機能についての紹介

Android
November 22, 2022

タクシーアプリ「GO」の Android アプリを開発しているザックです。

今回Google I/O 2022に発表された、ARCoreの改善した機能と新機能について紹介します。


概要

すでに Google I/O 2022 カンファレンスのビデオを見たり、対応するドキュメントを読んだりしている場合は、既存のテクノロジーが大幅に改善され、いくつかの分野でまったく新しい開発が行われたことをご存知でしょう。私が特に興味を持った分野の 1 つは、ARCoreの開発でした。この記事では、最初に ARCoreの既存の機能に加えられた改善点の概要を簡単に説明し、その後、新機能である Long Range Depth と Geospatial API について詳しく説明します。

An image from Notion

「What’s new in Google AR | YouTube 」

Motion Tracking(アップグレード)

  • 約17% 高速な初期化
  • オブジェクト追跡の遮断が約15%減少しました
  • MLによる改善が一般に公開された後、パフォーマンス向上が期待されます

Depth API (アップグレード)

  • 15% 高速な初期化
  • 深度マップの平均カバー率 95%
  • オクルージョン (occlusion)アップグレード
  • 特に改善されたのは、大きな同じ色のフラットな表面

デュアルカメラ (アップグレード)

デュアル カメラのサポートにより、初期化がはるかに高速になり、深度の範囲が広がります。 2 つの異なるレンズを使用すると、デバイスの周囲の世界についてより多くの推論を行うことができ、正確な測定を行うための移動が少なくて済みます。また、このパフォーマンスの向上の多くは、2 台目のカメラを常に実行する必要はなく、重要な瞬間にオンにするだけです。これは、電力をほとんど消費せずに、パフォーマンスを向上させることを意味します。

Plane(アップグレード)

平面(Plane)を使用すると、サーフェスを平面に変換することで、現実世界のオブジェクトと対話 (ヒット テスト) できます。 ARCoreドキュメントから提供される以下のビデオを参照して、以前およびアップグレードされた Plane 機能の能力を実証してください。緑色の Android は以前のバージョンの制限を示し、赤色の Android は 2022 年の変更後の機能を示しています。

「ヒットテストの改善, Depth adds realism | ARCore」

オクルージョン(アップグレード)

これにより、プログラマーは、仮想オブジェクトの深度と現実世界のオブジェクトの深度に基づいて、シーン内により自然にオブジェクトを配置できます。

「オクルージョンを有効にする, Depth adds realism | ARCore」

Long Range Depth (新規)

これは、Depth APIの新しい機能です。 実現するためには、新しいメソッドを呼ぶだけです。次の例では、既存のメソッドを新しいメソッドに切り替えるだけで、深さの測定値を最大約 8 メートルから 65 メートルに自動的に増やします。

// Old
Frame.acquireDepthImage()
Frame.acquireRawDepthImage()
// New
Frame.acquireDepthImage16Bits()
Frame.acquireRawDepthImage16Bits()

おそらく、新しい関数名の末尾が 16Bits() になっていることに気付いたでしょう。 Depth API の以前の実装では、深度を表すためにピクセルの 13 ビットしか使用していませんでしたが、現在は 16 ビットすべてを使用しています。これらの変更は、長距離の深度測定に役立つだけでなく、屋外での作業をより現実的にしました。

Geospatial API (新規)

Geospatial API を使用すると、地球規模で AR 体験を作成できます。ユーザーのデバイスの位置とカメラの向きを簡単かつ自信を持って取得できます。次に、仮想オブジェクトをアンカーとして配置して、仮想世界と現実世界のオブジェクトをメッシュ化できます。

ARCoreのGeospatial API を可能にする支援技術の 1 つは、Google のストリート ビューです。 15 年以上にわたり、ストリートビューは現実世界の情報を収集しており、人々が住む場所の約 98% をマッピングしています。したがって、ARCoreのGeospatial API は、サポートされているデバイスを持つほぼすべてのユーザーが使用できます。ストリート ビューによって生成されたデータは、ディープ ニューラル ネットワークを利用して現実世界のオブジェクトを識別し、ユーザーのデバイスの相対的な位置と方向を特定する Google の Visual Positioning System (VPS) に必要な情報を提供します。

An image from Notion

「ARCore Geospatial API」

プロジェクトで Geospatial API を使用できるようにすると、緯度、経度、垂直位置を使用するだけで仮想オブジェクトを配置できます。さらに、緯度と経度のみを必要とし、オブジェクトを地表レベルに配置するterrain anchorを使用することで、垂直パラメータを省略できます。

Geospatial API を使用せずにこの機能を模倣できますか?

  • 1 つのオプションは、内蔵センサーと GPS 位置情報を使用することです。ただし、この方法での回転精度は約 45 度で、GPS 位置は数メートルであるため、この実装はこのユースケースには理想的ではありません。
  • もう 1 つのオプションは、Google の Cloud Anchors API を使用することです。ただし、このルートでは、この API で使用するターゲットの場所と特別なアンカーの事前定義されたマップが必要です。ユーザーがやり取りできる範囲を非常に限定したい場合や、自分でマッピングを行う意思がある場合を除き、このオプションは実装方法としては理想的とは言えません。

Geospatial APIの般的なユースケースは何でしょう?

  • 明らかにゲームです。 プラグインまたは AR Foundation を使用すると、Unreal Engine および Unity で地理空間情報を使用できます。
  • ユーザーを場所に案内したり、現実世界のオブジェクトを識別できるようにします。
  • 周囲の世界に関するより多くの情報をユーザーに提供します。
  • ユーザーが共通のスペースで他のユーザーと対話できるようにします。

簡単なまとめ

ARCoreは、コードをほとんど変更することなしに、機能が大幅に改善されています。 さらに、Geospatial API により、まったく新しい可能性の世界が開発者とユーザーに開かれました。


We're Hiring!

📢
Mobility Technologies ではともに働くエンジニアを募集しています。

興味のある方は 採用ページ も見ていただけると嬉しいです。

Twitter @mot_techtalk のフォローもよろしくお願いします!