2012-12-20 28 views
4

可能重复:
Getting displacement from accelerometer data with Core Motion
Android accelerometer accuracy (Inertial navigation)是否可以使用核心运动距离测量

我想使用核心运动用户的加速度值,然后双击将其集成到派生距离覆盖。我沿着它的Y轴线将我的iPhone线性移动到桌子上的30厘米的原木尺上。首先,我让设备静止10秒,然后通过平均相应的用户加速度值来计算沿三个轴的偏移量。 当我尝试计算覆盖距离时,从加速度值中减去X,Y和Z偏移量。减去偏移量后,这些值分别通过低通滤波器和中值滤波器。滤波器是线性滤波器,截止频率由平均值为低通的相邻值的数量和中值滤波器的中值来确定。我已经试验了从1到100这个数字的不同值。最后,这些滤波值使用梯形法则进行双重积分以获得距离。但是,计算出的距离不是接近30厘米的地方。我得到的最接近的值是一些-22厘米(我想知道为什么我会得到负值,即使我沿正Y方向移动设备)。我也遇到过这种情况: http://ajnaware.wordpress.com/2008/09/05/accelerating-iphones/ 它的旧帖子讲述的是同样的事情,这表明返回的加速度计读数似乎以约0.18m/s^2的量级(即约0.018g),导致一个大的累积错误很快。因此,对于这个错误实际上并不重要,人们将不得不加速器近1.8m/s^2,这对于距离/长度测量目的来说实际上是不可能的。对于小的运动,看起来不存在通过使用最优滤波器和更高阶数值积分方法来计算距离的可能性,而没有像这样的不切实际的速度/加速度约束。可能吗? 如何使用我的加速度vs时间戳数据插值随时间增长的多项式,因为我获得了越来越多的运动更新,它近似表示加速度与时间曲线。多项式的双积分将是一块蛋糕。但是,对于小距离,多项式将具有很大的误差分量。使用可预测的已知运动,我的设备将受到影响,我希望拍摄大量快照(计算距离与实际已知距离),以类似的方式计算我的误差多项式,然后从我的第一个多项式中减去它。这可以工作吗?

+2

这是一个很好的问题,但它会很高兴看到您的随行代码... – foundry

+0

@SonuJha上述问题是关于Android,但同样适用于ios核心运动。总之,不,你不能做双积分,这些传感器不够准确。 – Ali

+0

这是另一个:[需要使用陀螺仪加速度计找到距离](http://stackoverflow.com/questions/6647314/need-to-find-distance-using-gyroaccelerometer)。在底线上,由于可怕的错误是不可能的。 – Kay

回答

3

虽然这不适合StackOverflow,因为它不是一个问题,而是一个讨论,我会尽量总结我的想法。

如前所述,加速度计非常不准确,您需要非常好的精度来完成这类任务,尤其是在您要测量这种短距离时。此外,加速度计因设备而异,因此对于使用不同设备的相同移动,您将得到不同的结果。再加上一个非常大的随机错误。

我的猜测是,您可以通过校准设备并使“测量移动”执行几次(例如10次)来消除大部分随机性/错误。之后,你有足够的数据来获得可能接近实际价值的平均值。

校准是一个关键部分,您必须考虑一种聪明的校准方式,比如让用户以不同的速度在不同的距离上移动设备。

但这一切都只是理论。我真的很想看到你的结果,但是我怀疑你使用最好的滤波器/算法能够工作得很好,因为噪声太多了。