Estoy usando CoreMotion para obtener el encabezado de ccompass y noté algunos problemas con el título de la brújula.Valores incorrectos de encabezado de brújula con CoreMotion
Al principio mi inicialización de CoreMotion. Obtuve un objeto CMMotionManager, locationManager, que es una instancia de CMMotionManager.
// initialize CoreMotion
motionManager = [CMMotionManager new];
[motionManager setDeviceMotionUpdateInterval:1.0/30.0];
[motionManager setShowsDeviceMovementDisplay:YES];
[self.motionManager startDeviceMotionUpdatesUsingReferenceFrame:CMAttitudeReferenceFrameXTrueNorthZVertical];
Los datos de posición se actualiza cada 1/20 segundos.
Para depuración tengo un UILabel que me muestra el encabezado de la brújula actual actualizado en cada intervalo de actualización. Mientras la aplicación está comenzando, siempre tengo que hacer el mágico 8 para calibrar la brújula.
Después de calibrar la brújula, el rumbo para norte y sur es correcto durante casi 2-5 segundos.
Inmediatamente después de un par de segundos, la brújula se vuelve loca y los ángulos están saltando. Mayormente está flotando alrededor de 10-20 grados desde la posición inicial en ambas direcciones. Intentó tener un resultado extraño. Después de 30-60 segundos, de vez en cuando, el sur y el norte se intercambian o se muestran hacia el este y el oeste.
En la WWDC 2011, se ha hablado de cómo calculan cada sensor con otro para compensar este problema. ¿Hay algo que eché de menos en la configuración de CoreMotion que tengo este problema masivo de resultados de encabezado precisos?
He probado la brújula ahora con 3 dispositivos (2 iPhone 4s y iPhone 4) dentro y fuera de los edificios. Estaba en campos, pequeñas ciudades y grandes ciudades. Pasa todo el tiempo. La aplicación de brújula de muestra de Apple es casi precisa, con un 90% de precisión en mis pruebas. Desafortunadamente, no está abierto por Apple.
Gracias por leer.
Gracias por su respuesta. El lunes recibí una fecha límite para otro proyecto y no puedo probarlo en este momento. Verificare su sugerencia. Suena bastante bien. Te dejaré saber más en unos días. ¡Gracias! – DasFuxx
disculpa la demora. iam lo estoy probando en este momento =) – DasFuxx
¿Qué quieres decir con "Usar CoreMotion a través de CoreLocation"?Tengo un problema similar y las uniones que se dirigen desde CoreLocation son en su mayoría correctas, pero en CoreMotion si establecemos el marco de referencia en el norte verdadero, los datos de movimiento del dispositivo parecen saltar y/o derivar. – pzo