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

问题描述 投票:0回答:3

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

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

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

accelerometer
3个回答
6
投票

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

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

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

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

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


2
投票

编辑:我似乎误解了这个问题。看看Omnifarious的回答,比较合适。


如果您获取加速度矢量的长度,则不会给出总行驶距离。这会比这更复杂一点:

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

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

如果你想跟踪实际位置,则将其保持为向量,并在每个时间间隔不断向其添加当前速度向量。

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


0
投票

以及如何计算加速度大小。我正在尝试制作一个利用手机加速度计的计步网络应用程序

© www.soinside.com 2019 - 2024. All rights reserved.