Skip to main content
Version: Next

VLSDK を使用する理由

VLSDK とは?

VLSDK は、ARC eye を通じて構築された 3 次元空間でデバイスの 6DOF をリアルタイムで推定するのに使用されるパッケージです。

下の映像は、VLSDK を利用してリアルタイムでグローバル位置を計算する様子です。黒い物体は VLSDK を通じて計算されたカメラのリアルタイム位置を示し、赤色、青色、緑色の物体は画像を基に認識された VL 応答結果です。VLSDK を使用すると、コードを 1 行も書かずに下のようにリアルタイムで 3 次元空間でのカメラ位置を得ることができます。

vlsdk overview

これは、VLSDK の内部で様々な機能を自動的に実行しているためです。次は、VLSDK で実行する機能についての説明です。

VL リクエスト

VLSDK は、ARC eye VL APIのリクエストを内部で処理して、別途の対応なしに VL API を簡単に使用できるようにします。カメラ画像バッファ取得、地域別 Invoke URL 設定、応答有効判断、リクエスト周期設定など各種複雑な作業をコード作成なしに実行できるようにします。このように計算された結果は、Main Camera に即座に適用されてレンダリング結果に反映されます。

座標系変換

ARC eye VL で受信し応答を送信する際に使用する座標系は ROS 座標系です。この座標系は Unity で使用する座標系と異なるため、VL 応答結果を Unity でそのまま使用する場合、予想と異なる結果を得ることになります。VLSDK では座標系変換を内部で実行し、SDK 使用者は常に Unity 座標系を使用できる環境を提供します。

coordinate

ネットワーク遅延補正

ネットワーク環境によって VL リクエストと応答の間の時間が長くかかる場合が発生する可能性があります。これにより、ユーザーが現在のグローバル位置ではなく過去のグローバル位置値を応答として受け取ることがあります。VLSDK ではネットワーク遅延補正アルゴリズムを通じて、応答遅延に関わらず常に現在のグローバル位置値を応答として受け取ることができるフィルタリング機能が実装されています。

VL + VIO 融合アルゴリズム

VLSDK は、リアルタイムで計算されるローカル位置と高い精度を持つグローバル位置情報を融合してリアルタイムでグローバル位置を計算する機能を実行します。

下の図で一番左側の映像は、VL のみを利用して位置を推定した結果です。空間上の位置を正確に推定しましたが、位置をリアルタイムで推定できないため、拡張される物体の位置が大きく跳ねることが見られます。中央の映像は、VL とスマートフォンの VIO を融合した結果です。VL のみを使用したときよりは位置が安定的ですが、依然として位置が跳ねることが見られます。一番右側の映像は、VL と VIO を融合し VLSDK に実装された各種補正アルゴリズムが適用された結果です。空間上での位置を安定的かつ正確に推定していることが見られます。

AR原理2

GPS ベース VL リクエスト地域選択

一つのサービスで数十個の VL API を使用する場合、地域に応じて適切な VL API を選択してリクエストを送信する方式を実装する必要があります。VLSDK では、GPS Guide機能を通じて GPS 領域ごとに VL API を割り当て、地域に応じて予め設定した VL API を使用できる機能を提供します。

データセットモード

VLSDK では、実際の環境データを記録してこれを活用できる特殊なデータセットモードをサポートします。これを基に現場に直接出向かなくても実際の環境と同様に開発およびテストを進めることができます。

dataset mode