5

Con iOS5 l'aggiornamento frequentemente della lettura dei dati grezzi Compass, CLHeading, è diminuito drasticamente. Ciò ha reso inutilizzabile la mia app per realtà aumentata, poiché dipende da una lettura quasi in tempo reale dei dati della bussola grezza.iOS5: bassa frequenza di aggiornamento delle letture CLHeading -> passaggio a CoreMotion è problematico

Pertanto, sto cercando di passare a CoreMotion. Ciò fornisce più frequentemente aggiornato i dati del magnetometro:

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

posso quindi accedere in qualsiasi momento i dati magneticField voglio durante il gioco:

CMMagneticField magneticField = cmManager.magnetometerData.magneticField; 

Il problema che ho è il seguente: I dati in CMMagneticField sono in un'unità diversa quindi i dati CLHeading x/y/z.

Desidero convertire i dati CMMagneticField x/y/z nelle stesse unità di CLHeading/CLHeadingComponentValue - per poter utilizzare il mio codice AR esistente.

Ecco un paio di letture:

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 

risposta

0

L'unico riferimento nella documentazione relativa a questo è che CLHeadingComponentValue segnalato è normalizzata alla gamma da -128 a +128 . Ma a me sembra che venga applicato un altro tipo di calibrazione.