使用核心运动技术进行距离测量是否可行?

4

可能重复:
使用Core Motion从加速度计数据获取位移
Android加速度计精度(惯性导航)

我试图使用核心运动用户加速度值,并对其进行双重积分以推导出覆盖的距离。我沿着桌子上的30厘米日志尺沿着iPhone的Y轴线性移动。首先,我让设备静止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,这在距离/长度测量目的上实际上是不可能的。对于小运动,似乎没有可能使用最佳过滤器和更高阶数值积分方法来计算距离,而不需要像那样的不切实际的速度/加速度限制。这可行吗? 如何使用我的加速度与时间戳数据来插值随时间增长而增长的多项式,该多项式大致表示加速度与时间曲线。双重积分这个多项式将是一件轻而易举的事情。但是,对于小距离,多项式将具有大的误差成分。使用我设备将遭受的可预测已知运动,我希望拍摄大量快照(计算距离与实际已知距离),以类似的方式计算我的误差多项式,然后从我的第一个多项式中减去它。这可行吗?

2
这是一个好问题,但如果能看到您的相关代码就更好了... - foundry
这里还有一个问题:需要使用陀螺仪+加速度计来找到距离。归根结底,由于可怕的误差,这是不可能的。 - Kay
是的,我同意不能仅通过集成加速度值来直接计算。但是,使用加速度值来插值一个函数,比如高阶多项式,怎么样?需要进行大量的实验,但我只是想知道是否可以通过这种技术来抵消如此巨大的采样误差以获得一些有效结果。我的问题就在于此。或者基于系数的模拟之类的东西? - Sonu Jha
@Ali 是的 :) 目前我忙于完成我的游戏。但是当它发布时,我会做并发布一些我在游戏中使用的运动检测的新见解和特殊情况。 - Kay
嘿,大家有关于那个话题的任何更新吗?现在2017年情况怎么样了?任何信息都会很有用(@Kay,Sonu)。 - oluckyman
显示剩余4条评论
1个回答

3
尽管这不适用于StackOverflow,因为它不是一个问题而是一个讨论,但我会试着总结一下我的想法。
如前所述,加速度计非常不准确,对于这种任务,您需要非常高的准确性,特别是如果您试图测量如此短的距离。此外,加速度计因设备而异,您将在不同设备上获得相同运动的不同结果。此外还有一个非常巨大的随机误差。
我猜想,您可以通过校准设备并进行“测量移动”多次(例如10次)来消除大部分随机性/误差。之后,您就有足够的数据来获得可能接近真实值的平均值。
校准是关键部分,您必须考虑一种聪明的方法来校准,例如让用户以不同速度在不同距离上移动设备。
但这一切都只是理论。我真的很想看到您的结果,但我怀疑即使使用最好的滤波器/算法,您也无法获得足够好的效果,因为噪声太大了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接