iOS 4+: Verzögerung in CMDeviceMotion-Zeitintervallen

  • Ich arbeite an einer rechenintensiven App, die gerade Sensordaten (Beschleunigung, aber auch Winkelgeschwindigkeit) hört. Nach ein paar Filtern werden diese Vektoren integriert, um die Verschiebung zu verfolgen.

    Ich habe festgestellt, dass die mit CMDeviceMotion und CMGyroData verknüpften Zeitmarken spät sind, da die Handler meines CMMotionManagers bei 100 nicht ausgelöst werden Hz, wie von seinem accelerometerUpdateInterval und gyroUpdateInterval angegeben. Es beginnt um 60 Hz und geht auf und ab. Dies hat erhebliche Auswirkungen auf die Integrationen.

    Derselbe Code in einer eigenständigen App macht 100 Hz wie ein Charm.

    Es sieht also so aus, als würden Berechnungsspitzen von anderen Modulen der großen App die Sensoraktualisierungen verzögern. Was mich wundert, da der Sensor-Manager einen eigenen Thread hat und ich aus dem Doc verstanden habe, dass die Sensor-Events von der Hardware ausgelöst wurden.

    Meine Frage ist: wann das Zeitstempel ist wie beschrieben unzuverlässig, können die Daten trotzdem verwendet werden? Kann es mit einer anderen Uhr extrapoliert werden?

    Und ich bin verwirrt, warum große asynchrone Berechnungen in anderen Threads die Beschleunigeraktualisierungen verzögern können.

    Vielen Dank, Antho

    22 November 2011
    antho
0 answers