0
我將開發基於CoreMotion和行人航位推測算法的iPhone應用程序。 我正在經歷一些讀取陀螺儀和加速度數據(設備:iPhone 5s)的奇怪行爲。 這裏是我的代碼:如何使用CoreMotion訪問原始數據
motionManager = [[CMMotionManager alloc] init];
motionManager.deviceMotionUpdateInterval=0.008;
[motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue mainQueue] withHandler:^(CMDeviceMotion * motion, NSError *error)
{
NSString *Acc_x = [[NSString alloc] initWithFormat:@"%f ",motion.userAcceleration.x];
NSString *Acc_y = [[NSString alloc] initWithFormat:@"%f ",motion.userAcceleration.y];
NSString *Acc_z = [[NSString alloc] initWithFormat:@"%f ",motion.userAcceleration.z];
NSData *AccData_x = [Acc_x dataUsingEncoding:NSUTF8StringEncoding];
NSData *AccData_y = [Acc_y dataUsingEncoding:NSUTF8StringEncoding];
NSData *AccData_z = [Acc_z dataUsingEncoding:NSUTF8StringEncoding];
NSString *Gyro_x = [[NSString alloc] initWithFormat:@"%f ",motion.rotationRate.x];
NSString *Gyro_y = [[NSString alloc] initWithFormat:@"%f ",motion.rotationRate.y];
NSString *Gyro_z = [[NSString alloc] initWithFormat:@"%f ",motion.rotationRate.z];
NSData *GyroData_x = [Gyro_x dataUsingEncoding:NSUTF8StringEncoding];
NSData *GyroData_y = [Gyro_y dataUsingEncoding:NSUTF8StringEncoding];
NSData *GyroData_z = [Gyro_z dataUsingEncoding:NSUTF8StringEncoding];
[HandleAcc seekToEndOfFile];
[HandleAcc writeData:AccData_x];
[HandleAcc writeData:AccData_y];
[HandleAcc writeData:AccData_z];
[HandleAcc writeData:GyroData_x];
[HandleAcc writeData:GyroData_y];
[HandleAcc writeData:GyroData_z];
NSDate *DataOra = [NSDate date];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"HH:mm:ss\r\n"];
NSString *dataString = [dateFormatter stringFromDate:DataOra];
NSData *data = [dataString dataUsingEncoding:NSUTF8StringEncoding];
[HandleAcc writeData:data];
}
];
這裏是我的日誌:
acc_x acc_y acc_z gyro_x gyro_y gyro_z time
0.006040 0.003147 -0.011406 0.001642 0.002079 -0.000864 01:04:40
0.006472 0.000715 -0.008345 -0.003239 -0.001569 -0.000839 01:04:40
後,我試着與其他來自Adafruit的的10DOF IMU相比iPhone的IMU數據,我得到這個日誌:
acc_x acc_y acc_z gyro_x gyro_y gyro_z time
-4.773060 -1.769106 8.427839 -0.030030 0.022133 0.002239 0.008333
-4.789249 -1.741337 8.442565 -0.028949 0.009581 0.000027 0.016667
我在做什麼錯? iPhone數據有偏差嗎?如果是這樣,我應該訪問公正的數據? 希望有人會幫助。謝謝,賈科莫。
你期望得到哪個結果? userAcceleration存在偏見。 – Mats
我期待像Adafruit的IMU這樣的原始數據。有沒有辦法訪問公正的數據? –