所以,我已经在这个问题上挣扎了一段时间,并且没有运气利用互联网的智慧和有关该主题的相关 SO 帖子。
我正在编写一个 Android 应用程序,它使用无处不在的加速度计,但即使在休息时,我似乎也会收到令人难以置信的大量“噪音”,而且似乎不知道如何处理它,因为我的读数需要相对准确的。我认为也许我的手机(HTC Incredible)出现了故障,但传感器似乎与我玩过的其他游戏和应用程序配合良好。
我尝试过使用各种“过滤器”,但我似乎无法全神贯注于它们。我知道必须以某种方式处理重力,也许这就是我出错的地方。目前我已经尝试过这个,改编自所以答案 https://stackoverflow.com/questions/1638864/filtering-accelerometer-data-noise,它引用了 iPhone SDK 中的示例:
accel[0] = event.values[0] * kFilteringFactor + accel[0] * (1.0f - kFilteringFactor);
accel[1] = event.values[1] * kFilteringFactor + accel[1] * (1.0f - kFilteringFactor);
double x = event.values[0] - accel[0];
double y = event.values[1] - accel[1];
海报说“玩弄” kFilteringFactor 值(示例中 kFilteringFactor = 0.1f)直到满意为止。不幸的是,我似乎仍然收到很多噪音,而这一切似乎只是让读数以小数形式出现,这对我没有多大帮助,而且似乎只是降低了传感器的灵敏度。我大脑的数学中心也因多年的忽视而萎缩,所以我不完全理解这个过滤器是如何工作的。
有人可以详细地向我解释如何获得useful从加速度计读取?简洁的教程将是一个令人难以置信的帮助,因为我还没有找到一个真正好的教程(至少针对我的知识水平)。我感到沮丧,因为我觉得所有这些对我来说应该更加明显。任何帮助或指导将不胜感激,当然,如果需要,我可以从我的代码中提供更多示例。
我希望我没有要求太多的勺子喂食;除非我已经尝试了一段时间,否则我不会问。其他 SO 成员似乎也有一些兴趣。
要从加速度计获得正确的读数,您需要使用方程 speed = SQRT(x*x + y*y + z*z)。使用此功能,当手机静止时,速度将是重力速度 - 9.8m/s。因此,如果减去 (SensorManager.GRAVITY_EARTH),那么当手机静止时,您的读数将为 0 m/s。至于噪音,Blrfl 对于廉价加速计的看法可能是正确的,即使我的手机处于静止状态,它也会持续每秒闪烁几分之一米。您可以设置一个小阈值,例如 0.4m/s,如果速度不超过该阈值,则它处于静止状态。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)