5

Con iOS5, la frecuencia de actualización de la lectura de datos brutos de Compass, CLHeading, disminuyó drásticamente. Esto hizo que mi aplicación de realidad aumentada fuera inutilizable, ya que depende de una lectura cercana a tiempo real de los datos brutos de la brújula.iOS5: baja tasa de actualización de las lecturas CLHeading -> cambiar a CoreMotion es problemático

Por lo tanto, ahora estoy tratando de cambiar a CoreMotion. Esto proporciona los datos del magnetómetro más actualizada con frecuencia:

cmManager = [[CMMotionManager alloc] init];  
[cmManager startMagnetometerUpdates]; 

A continuación, puedo acceder al momento magneticField datos que quiero durante el juego:

CMMagneticField magneticField = cmManager.magnetometerData.magneticField; 

El problema que tengo es la siguiente: Los datos de CMMagneticField se en una unidad diferente, entonces datos CLHeading x/y/z.

Me gustaría convertir los datos CMMagneticField x/y/z a las mismas unidades que CLHeading/CLHeadingComponentValue son - para poder usar mi código AR existente.

aquí un par de lecturas:

7.3 /17.64/-39.58   CLHeadingComponentValue X/Y/Z 
-103.12/88.51/-20.05   CMMagneticField 

-10.81/-34.9/-18.6   CLHeadingComponentValue X/Y/Z 
-121.00/ 33.29/3.1   CMMagneticField  

-20.8/-38.0/ -4.0   CLHeadingComponentValue X/Y/Z 
-132.9/ 32.2/14.4   CMMagneticField 

Respuesta

0

La única referencia en la documentación relativa a esto es que CLHeadingComponentValue informó se normaliza a entre -128 y +128 a . Pero a mí me parece que se aplica algún otro tipo de calibración.

Cuestiones relacionadas