iOS 4+: отставание во временных интервалах CMDeviceMotion - PullRequest
2 голосов
/ 22 ноября 2011

Я работаю над приложением с интенсивными вычислениями, которое прослушивает данные датчика (ускорение, но и угловую скорость).После пары фильтров эти векторы интегрируются для отслеживания смещения.

Я заметил, что временные метки, связанные с CMDeviceMotion и CMGyroData, запаздывают, потому что обработчики моего CMMotionManager не запускаются с частотой 100 Гц, как указано в его accelerometerUpdateInterval иgyroUpdateInterval.Он начинается около 60 Гц и идет вверх и вниз.Это в основном влияет на интеграцию.

Один и тот же код в автономном приложении делает 100Гц как брелок.

Похоже, что пики вычислений других модулей большого приложения приводят к задержке обновления сенсора.Это меня удивляет, поскольку диспетчер сенсоров находится в отдельном потоке, и я понял из документа, что события сенсора были вызваны аппаратным обеспечением.

Мой вопрос: когда метка времени ненадежна, как описано, можетданные все еще будут использоваться?Можно ли его экстраполировать, используя другие часы?

И я запутался, почему большие асинхронные вычисления в других потоках могут задерживать обновления ускорителя.

Спасибо, Antho

1 Ответ

2 голосов
/ 22 ноября 2011

Плохие временные метки так же плохи, как и неточные данные, поскольку они одинаково влияют на интеграцию.

Для отслеживания ориентации достаточно около 50 Гц.Мне было интересно, как вы отслеживаете смещение, потому что невозможно с датчиками тока.

...