3

特定の間隔で加速度計とジャイロスコープの更新を収集するアプリを作成しようとしています。間隔は加速度計とジャイロスコープの両方で同じであるため、両方のデータが一致することを期待しています。ただし、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 秒あたりのデータ ポイント数が指定された時間間隔と一致しないのはなぜですか?

4

0 に答える 0