5

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

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

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

4

2 回答 2

5

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

首先,您必须确保最终对加速度计进行足够频繁的采样,以免错过任何一步。然后你必须确保你正确猜测你的阈值应该是多少。

这将需要大量的试验和错误。

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

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

于 2010-01-23T06:20:33.487 回答
2

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


如果您采用加速度矢量的长度,那将不会为您提供行驶的总距离。这将比这更复杂一些:

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

例如,假设您稍微加速,然后以稳定的速度行驶,加速度矢量将为 0。但是,由于已经建立了一些速度,因此行驶的距离应该不断增加。

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

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

于 2010-01-23T06:18:53.020 回答