Obtén la pose geoespacial de la cámara del dispositivo

Una vez que hayas configurado la configuración de tu app para usar la API de Geospatial, puedes llamar a Earth.getCameraGeospatialPose() para obtener un GeospatialPose que describa el posicionamiento geoespacial del dispositivo para la cámara en el fotograma más reciente. Esta pose, administrada en un objeto Earth, contiene la siguiente información:

  • Ubicación, expresada en latitud y longitud
  • Altitud
  • Una orientación que se aproxima a la dirección hacia la que apunta el usuario en el sistema de coordenadas del EUS, con X+ apuntando hacia el este, Y+ hacia arriba y Z+ hacia el sur

Cómo comprobar el estado de seguimiento

Los valores geoespaciales solo son válidos si Earth.TrackingState es TrackingState.TRACKING. Asegúrate de unir todas las llamadas a la API de Geospatial en un bloque de control Earth.TrackingState.

Java

if (earth != null && earth.getTrackingState() == TrackingState.TRACKING) {
  GeospatialPose cameraGeospatialPose = earth.getCameraGeospatialPose();
  // cameraGeospatialPose contains geodetic location, rotation, and confidences values.
}

Kotlin

if (earth.trackingState == TrackingState.TRACKING) {
  val cameraGeospatialPose = earth.cameraGeospatialPose
  // cameraGeospatialPose contains geodetic location, rotation, and confidences values.
}

Si Earth.TrackingState no se convierte en TrackingState.TRACKING, Earth.TrackingState puede ser TrackingState.PAUSED o TrackingState.STOPPED. Si ninguna de estas condiciones es verdadera, verifica Earth.Earthstate, que muestra otros estados de error que pueden impedir que el objeto Earth realice un seguimiento.

Ajusta la pose para mayor precisión

Cuando el dispositivo está en posición vertical en la orientación predeterminada, los ángulos de inclinación (X+) y de balanceo (Z+) suelen ser precisos debido a una alineación natural con el seguimiento de RA. Sin embargo, los ángulos de guiñada (Y+) pueden variar según la disponibilidad de los datos de VPS y las condiciones temporales en la ubicación. Es posible que tu app deba realizar ajustes para mejorar la precisión.

GeospatialPose.getOrientationYawAccuracy() proporciona una estimación de precisión para los ángulos de guiñada (Y+) para un GeospatialPose determinado. La precisión de la guiñada de orientación es un número que describe el radio, en grados, del nivel de confianza del percentil 68 alrededor de los ángulos de guiñada que se muestran de GeospatialPose.getEastUpSouthQuaternion(). En otras palabras, hay una probabilidad del 68% de que el ángulo de guiñada real de GeospatialPose sea preciso.

Los valores más altos indican una menor precisión. Por ejemplo, si el ángulo de guiñada estimado es de 60 grados y la precisión de la guiñada es de 10 grados, hay un 68% de probabilidad de que el ángulo de guiñada verdadero esté entre 50 y 70 grados.

¿Qué sigue?