2011-07-21 22 views
5

analizando el dispositivoMotion.timestamp vi que la frecuencia de actualización establecida en DeviceMotion no es la frecuencia real de la actualización.frecuencia de actualización establecida para deviceMotionUpdateInterval ¿es la frecuencia real?

¡Implementé una aplicación para probar, debajo de lo que vi!

update frequency  actual frequency  average time between two calls 
     1/10.000000   10.232265    0.097730 
     1/20.000000   19.533729    0.051194 
     1/30.000000   30.696613    0.032577 
     1/40.000000   42.975122    0.023269 
     1/50.000000   53.711000    0.018618 
     1/60.000000   53.719106    0.018615 
     1/70.000000   71.627016    0.013961 
     1/80.000000   71.627263    0.013961 
     1/90.000000   53.719365    0.018615 
     1/100.000000  107.442667    0.009307 
     1/110.000000  107.437022    0.009308 

alguien ha notado lo mismo? es un error?

Respuesta

1

Algunas personas están reportando el mismo fenómeno, por ejemplo Actual frequency of device motion updates lower than expected, but scales up with setting pero todavía no hay respuesta. Sorprendentemente, eres el primero en informar frecuencias más altas. Hice varias pruebas sobre esto y no hay diferencia en qué dirección seguir.

    Empuje
  • o tirar es decir de devolución de llamada manejador o propio bucle temporizador
  • 4,2x IOS, 4.3x iOS ([Actualización:] probado con tracción solamente)
  • datos de sensor en bruto o dispositivo de movimiento
  • giroscopio o acelerómetro
  • Correr en un hilo separado

supongo que es un pequeño insecto en el marco Core movimiento.

+1

estoy usando push (he leído en la documentación que es el método más preciso para tomar datos), iOS 4.3x iPhone4, solo en DeviceMotion la frecuencia real es diferente de ese conjunto, si uso [CMMotionManager startAccelerometerUpdatesToQueue: [ NSOperationQueue currentQueue] withHandler:^(CMAccelerometerData * accelerometerData, NSError * error) todo funciona bien, la frecuencia real es la misma que configuro, CoreMotion crea su propio hilo para: manejar datos brutos de sensores y ejecutar algoritmos de movimiento del dispositivo (estoy leyendo las diapositivas WWDC 2010/2011) – Batti

+0

Datos del Acelerómetro sin Procesar usando el método push para agarrarlo. [1/10,000000 9,988813 0,100112] [1/20,000000 19,957865 0,050106] [1/30,000000 29,902478 0,033442] [1/40,000000 39,825712 0,025109] [1/50,000000 49,725514 0,020110] [1/60,000000 59,608615 0,016776] [ 1/70.000000 69.477139 0.014393] [1/80.000000 79.321895 0.012607] [1/90.000000 88.883474 0.011251] [1/100.000000 98.643989 0.010137] – Batti

+0

Así te entiendo bien, que ahora se ha resuelto el problema mediante el uso de NSOperationQueue? Si es así, le sugiero que edite su pregunta y pegue la solución al final. Por lo tanto, otros pueden ver la solución a primera vista. – Kay

Cuestiones relacionadas