Obtain the device camera's Geospatial pose

  • Access the device camera's geospatial pose, including location, altitude, and orientation, using the AREarthManager.CameraGeospatialPose after configuring the Geospatial API.

  • Ensure the AREarthManager.EarthTrackingState is in the TrackingState.Tracking state before using geospatial values to avoid issues caused by limited or no tracking.

  • Account for potential inaccuracies in the yaw (Y+) angle of the orientation, especially when the device isn't upright, and utilize GeospatialPose.OrientationYawAccuracy to estimate the yaw accuracy.

  • Understand that the GeospatialPose.OrientationYawAccuracy value represents the radius, in degrees, of the 68th percentile confidence level around the yaw angles, with larger values indicating lower accuracy.

Once you have configured your app's settings to use the Geospatial API, you can obtain the device camera's AREarthManager.CameraGeospatialPose. This pose, managed in an AREarthManager object, contains the following information:

  • Location, expressed in latitude and longitude
  • Altitude
  • An orientation approximating the direction the user is facing in the EUS coordinate system with X+ pointing east, Y+ pointing up, and Z+ pointing south

Check the tracking state

Geospatial values are only valid while AREarthManager.EarthTrackingState is TrackingState.Tracking. Make sure to wrap all Geospatial API calls in a AREarthManager.EarthTrackingState control block.

var earthTrackingState = EarthManager.EarthTrackingState;
if (earthTrackingState == TrackingState.Tracking)
{
  // camera_geospatial_pose contains geodetic location, rotation, and
  // confidences values.
  var cameraGeospatialPose = EarthManager.CameraGeospatialPose;
}

If AREarthManager.EarthTrackingState does not become TrackingState.Tracking, AREarthManager.EarthTrackingState may be TrackingState.Limited or TrackingState.None. If neither of these conditions are true, check TrackingState.EarthTrackingState, which shows other error states that may keep the AREarthManager object from tracking.

Adjust the pose for accuracy

When the device is upright in the default orientation, the pitch (X+) and roll (Z+) angles tend to be precise due to a natural alignment with AR tracking. However, the yaw (Y+) angles can vary depending on VPS data availability and temporal conditions at the location. Your app may have to make adjustments for accuracy.

GeospatialPose.OrientationYawAccuracy provides an accuracy estimate for the yaw (Y+) angles for a certain AREarthManager.CameraGeospatialPose. The orientation yaw accuracy is a number that describes the radius, in degrees, of the 68th percentile confidence level around the yaw angles in GeospatialPose.EunRotation. In other words, there is a 68% chance that the AREarthManager.CameraGeospatialPose’s true yaw angle is accurate within the number of degrees returned by GeospatialPose.OrientationYawAccuracy.

Larger values indicate lower accuracy. For example, if the estimated yaw angle is 60 degrees and the yaw accuracy is 10 degrees, then there is a 68% probability that the true yaw angle is between 50 and 70 degrees.

What's next