代码之家  ›  专栏  ›  技术社区  ›  Duck

iphone-Coremotion加速度始终为零!

  •  2
  • Duck  · 技术社区  · 14 年前

    用于设置

    if (motionManager == nil) 
            motionManager = [[CMMotionManager alloc] init];
    
    motionManager.deviceMotionUpdateInterval = framesPorKeyframes / 60.0; //60 Hz
    motionManager.accelerometerUpdateInterval =  framesPorKeyframes / 60.0; //60 Hz
    
    [motionManager startDeviceMotionUpdates];
    referenceAttitude = nil;
    

    供阅读

    vec3f_t translation = {0.0f, 0.0f, 0.0f};
    CMRotationMatrix rotation;
    CMAcceleration userAcceleration;
    
    
    CMDeviceMotion *deviceMotion = motionManager.deviceMotion;      
    attitude = deviceMotion.attitude;
    
    rotation = attitude.rotationMatrix;
    
    userAcceleration = deviceMotion.userAcceleration;
    [userAccelerationLpf addAcceleration:userAcceleration withTimestamp:deviceMotion.timestamp];
    
    // The user acceleration we want to use is the one computed by userAccelerationLpf
    userAcceleration.x = userAccelerationLpf.x;
    userAcceleration.y = userAccelerationLpf.y;
    userAcceleration.z = userAccelerationLpf.z; 
    
    NSLog(@"acc = %f, %f, %f", userAcceleration.x, userAcceleration.y, userAcceleration.z);
    

    读取方法在30赫兹重复。

    这是从苹果的样品,不应该给我零! 有线索吗?

    1 回复  |  直到 14 年前
        1
  •  3
  •   westsider    14 年前

    如果你放下低通滤波器,只记录原始加速度,你会看到什么?(我肯定我知道答案:)