私は、たまたまセンサーデータ(加速度だけでなく角速度)をリッスンする計算集約型のアプリに取り組んでいます。いくつかのフィルターの後、これらのベクトルは変位を追跡するために統合されます。
CMMotionManager のハンドラーが accelerometerUpdateInterval と gyroUpdateInterval で指定された 100 Hz で起動されないため、CMDeviceMotion と CMGyroData に関連付けられたタイムスタンプが遅れていることに気付きました。60 Hz あたりから始まり、上下します。これは主に統合に影響します。
スタンドアロン アプリの同じコードは、100Hz を魔法のように実行します。
そのため、大きなアプリの他のモジュールからの計算ピークにより、センサーの更新が遅れているようです。センサーマネージャーは独自のスレッド上にあり、ドキュメントからセンサーイベントがハードウェアによってトリガーされたことを理解したので、これは私を驚かせます。
私の質問は次のとおりです。説明したようにタイムスタンプが信頼できない場合、データは引き続き使用できますか? 別のクロックを使用して外挿できますか?
そして、なぜ他のスレッドでの大規模な非同期計算がアクセラレータの更新に遅れることがあるのか 、私は混乱しています。
ありがとう、アント