如何使用加速度计计算步数

时间:2010-01-23 06:09:02

标签: accelerometer

我想知道如何使用Accelerometer计算步数。实际上我计算加速度并使用此代码计算步骤

length = sqrt(x * x + y * y + z * z);
if(length>=2){
   stepcount+=1;
}

其中length使用acceleration.x,acceleration.y,acceleration.z计算加速度 但是我在启动应用程序时的主要问题是stepcount给出了正确的步长值,但是随着时间的推移,它的值不正确.Plz帮帮我

2 个答案:

答案 0 :(得分:5)

基本上你使用超过一定值的突然加速作为某人正在结束或开始一步的标志。

首先,您必须确保最终经常对加速度计进行采样,以免错过任何一步。那么你将不得不确保你正确猜测你的门槛应该是什么。

这需要大量的反复试验。

我建议的是绘制长度随时间变化的长度,看看你是否能想出一个通常正确的良好阈值。

但是,无论如何,它永远不会真正准确。我认为真正准确测量步数的唯一方法是使用鞋内的鞋跟传感器。

答案 1 :(得分:2)

编辑:我似乎误解了这个问题。请参阅Omnifarious的答案,这是更适合的。


如果你取加速度矢量的长度,那就不会给你总的行进距离。这将比那更复杂:

  • 将距离(标量)和速度(矢量)设置为0以开始。
  • 在每个时间间隔,将当前加速度矢量添加到速度矢量以计算更新的速度矢量。
  • 在每个时间间隔,将速度矢量的大小添加到距离以累积行进距离。
  • 如果在您使用的任何时间坐标系中这些间隔不是单位间隔,则适当地缩放加速度和速度矢量。例如,如果加速度以m / s ^ 2表示并且采样间隔为100ms,则在将加速度矢量添加到速度矢量之前将其加速度为0.1。同样在将速度累积到距离时。

例如,假设你加速了一点,然后以稳定的速度行驶,加速度矢量将为0.但是,由于某些速度已经增加,所以行进的距离应该稳定地继续增加。

如果要跟踪实际位置,请将其保持为矢量,并在每个时间间隔内向其添加当前速度矢量。

这是航位推算的惯性导航,随着时间的推移,误差将开始累积(在速度矢量中,因此在距离上)。你需要做一些实验来看看你希望得到什么样的准确性。