我想知道如何使用加速度计计算步数。实际上,我会计算加速度,然后使用以下代码来统计步数:
length = sqrt(x * x + y * y + z * z);
if(length>=2){
stepcount+=1;
}
在计算加速度时使用加速度.x、加速度.y和加速度.z来计算长度。 但是我的主要问题是,在开始应用程序时,步数会给出正确的步数值,但随着时间的推移,其值不正确。请帮忙解决。
我想知道如何使用加速度计计算步数。实际上,我会计算加速度,然后使用以下代码来统计步数:
length = sqrt(x * x + y * y + z * z);
if(length>=2){
stepcount+=1;
}
在计算加速度时使用加速度.x、加速度.y和加速度.z来计算长度。 但是我的主要问题是,在开始应用程序时,步数会给出正确的步数值,但随着时间的推移,其值不正确。请帮忙解决。
编辑:我似乎误解了问题。请参考Omnifarious的答案,那更为恰当。
如果你仅仅计算加速度向量的长度,那么这不会给你总行驶距离。这个问题会比较复杂:
例如,假设你稍微加速一下,然后以匀速行驶,加速度向量将为0。但是,由于已经建立了一些速度,因此行驶距离应该稳步增加。
如果你想跟踪实际位置,则将其作为向量维护,并在每个时间间隔内将当前速度向量添加到其上。
这是通过死算法进行的惯性导航,随着时间的推移,误差会开始积累(在速度向量中,因此在行驶距离上也会有所积累)。你需要进行一些实验以了解你可以获得什么样的精度。