Я работаю над приложением с интенсивными вычислениями, которое прослушивает данные датчика (ускорение, но и угловую скорость).После пары фильтров эти векторы интегрируются для отслеживания смещения.
Я заметил, что временные метки, связанные с CMDeviceMotion и CMGyroData, запаздывают, потому что обработчики моего CMMotionManager не запускаются с частотой 100 Гц, как указано в его accelerometerUpdateInterval иgyroUpdateInterval.Он начинается около 60 Гц и идет вверх и вниз.Это в основном влияет на интеграцию.
Один и тот же код в автономном приложении делает 100Гц как брелок.
Похоже, что пики вычислений других модулей большого приложения приводят к задержке обновления сенсора.Это меня удивляет, поскольку диспетчер сенсоров находится в отдельном потоке, и я понял из документа, что события сенсора были вызваны аппаратным обеспечением.
Мой вопрос: когда метка времени ненадежна, как описано, можетданные все еще будут использоваться?Можно ли его экстраполировать, используя другие часы?
И я запутался, почему большие асинхронные вычисления в других потоках могут задерживать обновления ускорителя.
Спасибо, Antho