Geospatial APIのAREarthManagerについて調べる
背景
Geospatial APIを使う際、緯度経度などの情報はこのAREarthManagerクラスから取得する。なのでどんな中身か調べたい
Summary
ARCoreExtensionsConfig.GeospatialMode must be GeospatialMode.Enabled in order to make use of the Geospatial API. Not all devices support GeospatialMode.Enabled, use AREarthManager.IsGeospatialModeSupported to find whether the current device supports enabling this mode.
AREarthManager.CameraGeospatialPose should only be used when AREarthManager.EarthTrackingState is Tracking, and otherwise should not be used. If the EarthTrackingState does not become Tracking, then AREarthManager.EarthState may contain more information on this failure.
ARCoreExtensionsConfig.GeospatialMode
は、Geospatial API を使用するために GeospatialMode.Enabled
である必要があります。すべてのデバイスが GeospatialMode.Enabled
をサポートしているわけではないので、現在のデバイスがこのモードを有効にすることをサポートしているかどうかを調べるには AREarthManager.IsGeospatialModeSupported
を使用してください。
AREarthManager.CameraGeospatialPose
は AREarthManager.EarthTrackingState
がTracking
の時のみ使用されるべきで、それ以外は使用しないで下さい。EarthTrackingState
がTracking
にならない場合、AREarthManager.EarthState
にこの失敗に関する詳細な情報が含まれている可能性があります。
つまり
- AREarthManager.IsGeospatialModeSupportedで、現在のデバイスがGeospatialModeをサポートしているか調べる
- GeospatialMode.Enabledになっているか調べる
- AREarthManager.EarthTrackingStateがTrackingになっているか調べる
- AREarthManager.CameraGeospatialPoseを取得することができる
Inheritance (継承)
Inherits from: UnityEngine::MonoBehaviour
MonoBehaviourを継承。
なので、何かのGameObjectにアタッチする必要がある。
AREarthManagerのプロパティ
プロパティ名 | 内容 |
---|---|
CameraGeospatialPose | GeospatialPose. 最新のフレームにおけるカメラの GeospatialPoseを取得し、デバイスの地理的な位置を記述します。 |
EarthState | 最新フレームのGoogle.XR.ARCoreExtensions.EarthStateを取得します。 |
EarthTrackingState | 最新フレームにおける地球のトラッキング状態を取得します。 |
AREarthManagerの関数
関数名 | 内容 |
---|---|
IsGeospatialModeSupported(GeospatialMode mode) | 提供された GeospatialMode がこのデバイスでサポートされているかどうかを確認する。 |
CameraGeospatialPose
GeospatialPose CameraGeospatialPose
最新のフレームにおけるカメラの GeospatialPoseを取得し、デバイスの地理的な位置を記述します。
ポーズの位置はデバイスのカメラに位置し、向きはディスプレイの向きに密接に近似しています。
注意:このポーズは、EarthTrackingState が TrackingState.Tracking の時のみ有効で、それ以外の場合は使用しないでください。
Google.XR.ARCoreExtensions.GeospatialPose
地球からの相対的な位置、標高、コンパスの方位を記述する。
Summary
以下の構成になっています
- Latitude(緯度)・longitude(経度)は度数で指定し、正の値はWGS84仕様で定義された赤道より北、本初子午線より東を意味する。
- Altitude(標高)はWGS84楕円体からの高さで、海抜メートルとほぼ等しい値で指定します。
- Heading (方位)は北から時計回りの度で指定します。詳しくはGeospatialPose.Headingを参照してください。
- 緯度、経度、高度、方位の精度は信頼区間の数値で見ることができ、数値が大きい(信頼区間大)ほど信頼度が低く、数値が小さい(信頼区間小)ほど信頼度が高いことを示します。
GeospatialPose は AREarthManager.CameraGeospatialPose から取得することができる。
Public attributes (publuc変数)
GeospatialPoseの変数名 | 型 | 内容 |
---|---|---|
Altitude | double | WGS 84楕円体からの高さでのポーズの高度(単位:メートル) |
Heading | double | ポーズの方位(単位:度数) |
HeadingAccuracy | double | 推定方位精度(単位:度数) |
HorizontalAccuracy | double | 緯度・経度に対する水平精度の推定値(単位:メートル) |
Latitude | double | ポーズの緯度(単位:度数) |
Longitude | double | ポーズの経度(単位:度数) |
VerticalAccuracy | double | 水平精度の推定値(単位:メートル) |
Altitude (高度)
WGS 84楕円体からの高さでのポーズの高度。
Heading (方位)
ポーズのヘディングを度数で示す。
Headingは真北から時計回りで指定され、デバイスが向いている方向を近似する。北向きの場合は 0°、東向きの場合は 90°、南向きの場合は +/-180°、西向きの場合は -90° が返されます。
ヘディングの近似は、デバイスの現在のオリエンテーションモード(すなわち、縦または横)での回転とピッチに基づきます。例えば、デバイスが垂直または直立に保持されている場合、方位はカメラ光軸に基づきます。デバイスが水平に保持され、下を向いている場合、方位は、オリエンテーションモードに関して、デバイスの上部に基づきます。
HeadingAccuracy (方位の精度)
推定方位精度を度単位で表示します。
低いほど精度が高い
Heading
精度はHeading
を中心とした68%信頼度の半径と定義しています。言い換えると、真のHeading
がHeadingAccuracy
の範囲内にある確率は68%です。値が大きい程、精度が低いことを示します。
例えば、推定されたheading
が60°でHeadingAccuracy
が10°の場合、真のヘディングが50°から70°の間にある確率は68%です。
HorizontalAccuracy (水平精度)
緯度・経度に対する水平精度の推定値(メートル)。
つまり、円の半径の精度。低いほど精度が高い
水平精度は、推定された水平位置の周りの68パーセンタイル信頼度の半径と定義しています。つまり、緯度と経度を中心とし、水平精度と同じ半径の円を描くと、68%の確率で真の位置が円の内側にあることになります。数字が大きくなるほど精度は低くなります。
例えば、緯度が10°、経度が10°で、返されたHorizontalAccuracy値が15であれば、真の位置が(10°, 10°)の緯度経度座標から15m以内にある確率は68%であることを示しています。
VerticalAccuracy (垂直精度)
緯度・経度に対する垂直精度の推定値(単位:メートル)。
つまり、高さの精度。低いほど精度が高い
垂直方向の精度を、推定高度を中心とした68%信頼度の半径と定義します。言い換えれば、真の高度がこのAltitudeの出力値(メートル単位)以内である確率は68%です(上か下か)。数値が大きいほど精度が低いことを示します。
例えば、Altitudeが100メートルで、VerticalAccuracyが20メートルの場合、真の高度が100メートルから20メートル以内 (高度80m ~ 120m)にある確率は68%です。
Latitude (緯度)
ポーズの緯度(度)。
正の値は、WGS84仕様で定義された赤道より北にあることを意味する。
Longitude (経度)
ポーズの経度(度数)。
正の値は、WGS84仕様で定義された本初子午線より東である。
EarthState
EarthState EarthState
最新フレームの Google.XR.ARCoreExtensions.EarthStateを取得します。
Google.XR.ARCoreExtensions.EarthState
地球ローカライゼーションの現状を説明します。
AREarthManager.EarthTrackingStateがTrackingState.Trackingにならない場合、EarthStateはこの失敗の原因を含む場合があります。
EarthStateのプロパティ
EarthStateのプロパティ名 | 内容 |
---|---|
Enabled | 地球ローカライズは有効であり、問題は発生していない。AREarthManager.EarthTrackingStateを確認し、Geospatial APIが使用可能かどうかを判断してください。 |
ErrorGeospatialModeDisabled | このセッションでは、地球のローカライズが無効になっています。このセッションで作成されたすべての ARGeospatialAnchor は、TrackingState が None に設定され、破棄されるはずです。 |
ErrorInternal | 地球のローカライズは内部エラーに遭遇しました。アプリはこのエラーから回復しようとしないでください。詳細については、アプリケーションログを参照してください。 |
ErrorNotAuthorized | アプリケーションから提供された認証は有効ではありません。(API Keyなど確認) |
ErrorPackageTooOld | パッケージが対応バージョンより古い。 |
ErrorResourcesExhausted | Google Cloudプロジェクトに割り当てられた割り当て枠を使い果たしたアプリケーション。 |
EarthTrackingState (Enum)
Namespace
UnityEngine.XR.ARSubsystems
名前 | 説明 |
---|---|
Limited | 一部のトラッキング情報は入手可能だが、限定的であったり、質が悪かったりする。 |
None | トラッキングできていません |
Tracking | トラッキングは正常に動作しています。 |