提高 iPhone 加速度计在计数步数方面的精度



我目前正在使用以下代码来计算用户在我的室内导航应用程序中采取的步骤数。当我将手机放在胸前水平,屏幕朝上时,它会很好地计算我走的步数。但是,点击屏幕或平移地图注册步骤等常见操作也计算在内。这非常令人沮丧,因为在平面图中跟踪我的移动将变得非常不准确。在这种情况下,有没有人知道我如何提高跟踪的准确性?任何意见将不胜感激!为了更好地了解我想要做什么,你们可以在 http://www.youtube.com/watch?v=wMgIa44mJXY 查看类似的Android应用程序。谢谢!

-(void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
float xx = acceleration.x;
float yy = acceleration.y;
float zz = acceleration.z;
float dot = (px * xx) + (py * yy) + (pz * zz);
float a = ABS(sqrt(px * px + py * py + pz * pz));
float b = ABS(sqrt(xx * xx + yy * yy + zz * zz));
dot /= (a * b);
if (dot <= 0.9989) {
    if (!isSleeping) {
        isSleeping = YES;
        [self performSelector:@selector(wakeUp) withObject:nil afterDelay:0.3];
        numSteps += 1;
    }
}  
px = xx; py = yy; pz = zz;
}

来自加速度计的数据基本上是三维矢量信号的单维(时间)非均匀采样。弄清楚如何计算步数的最佳方法是编写一个应用程序,在一段时间内记录和存储样本,然后将数据导出到 Wolfram 的 Mathematica 等数学应用程序中进行分析和可视化。请记住,采样是不均匀的,您可能希望也可能不希望将其转换为均匀采样的数字信号。

然后,您可以尝试不同的信号处理算法,看看哪种算法效果最好。

一旦你知道加速度计数据中步长的基本形状,你就可以通过简单的卷积来识别它们。

最新更新