CMMotion Manager陀螺仪和加速度计更新间隔有误吗?

时间:2015-03-30 18:28:01

标签: objective-c accelerometer gyroscope cmmotionmanager

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

0 个答案:

没有答案