我试图制作一个应用程序,以给定的间隔收集加速度计和陀螺仪更新。加速度计和陀螺仪的间隔相同,所以我期望两者的数据对齐。然而,使用CMMotionManger,加速度计和陀螺仪数据不会在给定的时间间隔内完美更新(我希望每秒更新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个陀螺仪数据点。如果间隔相同,为什么收集点的数量存在巨大差异?为什么每秒数据点的数量与提供的时间间隔不一致?