UIAccelerometer距离计算

Posted

技术标签:

【中文标题】UIAccelerometer距离计算【英文标题】:UIAccelerometer distance calculation 【发布时间】:2012-09-12 12:20:48 【问题描述】:

我已经使用下面的代码来计算设备从一个地方移动到另一个地方的距离。是否正确请看我的代码。

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration

    NSDate *now = [NSDate date];
    NSTimeInterval intervalDate = [now timeIntervalSinceDate:now_prev];

    sx = acceleration.x * kFilteringFactor + sx * (1.0 - kFilteringFactor);
    sy = acceleration.y * kFilteringFactor + sy * (1.0 - kFilteringFactor);
    sz = acceleration.z * kFilteringFactor + sz * (1.0 - kFilteringFactor);

    [xLabel setText:[NSString stringWithFormat:@"%.2f",sx]];
    [yLabel setText:[NSString stringWithFormat:@"%.2f",sy]];
    [zLabel setText:[NSString stringWithFormat:@"%.2f",sz]];

    float aValue = sqrtf(sx*sx+sy*sy+sz*sz);
    [gLabel setText:[NSString stringWithFormat:@"%.2f g",aValue]];

    velX += (sx * intervalDate);
    distX += (velX * intervalDate);

    velY += (sy * intervalDate);
    distY += (velY * intervalDate);

    velZ += (sz * intervalDate);
    distZ += (velZ * intervalDate);

    float distance = sqrtf(distX*distX+distY*distY+distZ*distZ);
    [distanceLabel setText:[NSString stringWithFormat:@"%.2f",distance*0.0006213f]];

    now_prev = [now retain];


【问题讨论】:

无论哪种方式,您都会遇到问题。这种“死机侦察”是非常不准确的,更不用说你也没有处理手机的减速。 我没听明白。你能告诉我一些计算与 UIAccelerationValues 的距离吗? 我不知道为什么有些人对这个问题投反对票。如果有任何问题,请回答我的问题?投反对票是可以的,如果有任何问题也可以纠正 【参考方案1】:

尝试从加速器数据中获取距离会非常低效的原因有很多。 为了跟踪您的初始位置,您需要不断地将所有加速度值集成到一个向量中,并且最好以非常高的采样率(计算中的大间隙会导致不准确)

方法本身并不难弄清楚(或者谷歌); This question explains how to do the maths and pseudocode for such an integration approach

【讨论】:

我对不准确的评论不谈,这没关系。 “摇动手势”识别的起点。

以上是关于UIAccelerometer距离计算的主要内容,如果未能解决你的问题,请参考以下文章

如何校准 UIAccelerometer?

UIAccelerometer 和 UIScrollView

UIAccelerometer 已弃用 ios7

UIAccelerometer 和 UIScrollView

iPhone中的UIAccelerometer

UIAccelerometer 在摇晃