Modelo de dominio de Google ARCore por ejemplo

Estoy tratando de leer y entender el modelo de dominio de Google ARCore, particularmente elAndroid SDK paquetes Actualmente este SDK está en "avance"modo, por lo que no hay tutoriales, blogs, artículos, etc. disponibles para comprender cómo usar esta API. Incluso Google mismo sugiere simplemente leer el código fuente, los comentarios del código fuente y los Javadocs para comprender cómo usar la API. El problema es: Si aún no es un experto en visión por computadora, el modelo de dominio se sentirá un poco extraño y desconocido para usted.

Específicamente, estoy interesado en comprender las diferencias fundamentales y los usos adecuados de las siguientes clases:

FrameAnchorPosePointCloud

De acuerdo aAnchorJavadoc:

"Describe una ubicación y orientación fijas en el mundo real. Para permanecer en una ubicación fija en el espacio físico, la descripción numérica de esta posición se actualizará a medida que mejore la comprensión del espacio por parte de ARCore. Use getPose () para obtener la ubicación numérica actual de este ancla. Esta ubicación puede cambiar cada vez que se llama a update (), pero nunca cambiará espontáneamente."

EntoncesAnclas tener unActitud. Suena como tu "soltar un ancla"en algo que es visible en la cámara, y luego ARCore rastrea ese anclaje y actualiza constantemente suPose para reflejar la naturaleza de sus coordenadas en pantalla, tal vez?

Y dePoseJavadoc:

"Representa una transformación rígida inmutable de un marco de coordenadas a otro. Como lo proporcionan todas las API de ARCore, las Poses siempre describen la transformación del marco de coordenadas local del objeto al marco de coordenadas del mundo (ver más abajo) ... Estos cambios significan que cada marco debe considerarse en un marco de coordenadas del mundo completamente único."

Por lo quesuena como unPose es algo que solo es exclusivo de "marco actual"de la cámara y que cada vez que se actualiza el marco, ¿se recalculan todas las poses para todos los anclajes? Si no, ¿cuál es la relación entre un ancla, su pose, el marco actual y el marco de coordenadas del mundo? ¿Y qué es una pose?De Verdadde todos modos? ¿Es una "Pose" solo una forma de almacenar datos de matriz / punto para que pueda convertir un Anchor del marco actual al marco mundial? ¿O algo mas?

Finalmente, veo una fuerte correlación entre marcos, poses y anclas, pero luego hayPointCloud. La única clase que puedo ver adentrocom.google.ar.core que usa estos es elFrame. PointClouds parece ser(x, y, z)-coordina con una cuarta propiedad que representa la "confianza" de ARCore de que los componentes x / y / z son realmente correctos. Entonces, si un Ancla tiene una Pose, me hubiera imaginado que una Pose también tendría un PointCloud que representa las coordenadas y la confianza del Ancla en esas coordenadas. Pero poseno tener un PointCloud, por lo que debo estar malentendiendo por completo los conceptos que modelan estas dos clases.

La pregunta

He planteado varias preguntas diferentes anteriormente, pero todas se reducen a una pregunta única, concisa y responsable:

¿Cuál es la diferencia en los conceptos detrás de Frame, Anchor, Pose y PointCloud y cuándo utiliza cada uno de ellos (y para qué fines)?

Respuestas a la pregunta(1)

Su respuesta a la pregunta