特定の間隔で加速度計とジャイロスコープの更新を収集するアプリを作成しようとしています。間隔は加速度計とジャイロスコープの両方で同じであるため、両方のデータが一致することを期待しています。ただし、CMMotionManger を使用すると、加速度計とジャイロスコープのデータは指定された間隔で完全に更新されず (1 秒あたり 20 回の更新が必要で、範囲は 15 ~ 20 です)、加速度計のポイントとジャイロスコープのポイントの数は、同じ更新間隔。これは、データ収集を開始するための私のコードです:
- (void)startDataCollect {
CMMotionManager *motionManager = [MainViewController sharedCMMotionManager];
motionManager.accelerometerUpdateInterval = 1.0/20.0;
motionManager.gyroUpdateInterval = 1.0/20.0;
acc_data = [[NSMutableArray alloc] init];
gyro_data = [[NSMutableArray alloc] init];
time_stamp = [[NSMutableArray alloc] init];
[motionManager startAccelerometerUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMAccelerometerData *accelerometerData, NSError *error) {
[self recordAccelerometer:accelerometerData.acceleration];
}];
[motionManager startGyroUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:^(CMGyroData *gyroData, NSError *error) {
[self recordGyroscope:gyroData.rotationRate];
}];
}
ハンドラー メソッドは、ファイルに書き込まれるまでデータを格納する配列にデータを配置するだけです。前回アプリをテストしたとき、240 個の加速度計データ ポイントと 366 個のジャイロスコープ データ ポイントが得られました。間隔が同じなら、なぜ収集ポイント数に大きな違いがあるのですか? また、1 秒あたりのデータ ポイント数が指定された時間間隔と一致しないのはなぜですか?