我正在开发一个自行车电脑应用程序。我希望使用加速度计计算出斜坡的倾斜度,但事情并不顺利。
我已经输入了测试代码来获取传感器数据,我只是以 UI 速率进行扫描,并保持 128 个样本的移动平均值,这大约是 6 秒的价值。拿着手机,数据很好,与校准平面矢量相比,我可以计算出一个很好的角度。
将电话安装在自行车上时,情况一点都不好。我希望得到一点噪音,但我希望大时间窗口内的大量样本能够消除振动效应和一般的自行车运动。不幸的是,这不起作用,加速度矢量的幅度并没有真正保持在 9.8 左右,而是下降得更低,这对我来说表明某处有问题。
这是来自部分试驾的数据图。
正如你所看到的,当开始时静止时,幅度还可以,但一旦我开始,它就会下降。我相当确定问题与振动有关。我最初下降时振动很大,然后爬升,振动较小,震级回到 9.8,但随后我在糟糕的道路上迅速下降,震级小于 3 .
这是与使用BMA250 传感器的 SonyErricson Xperia Active 一起使用的,datasheat 看起来传感器应该有能力。我对问题原因的唯一理论是范围设置为 2g 范围并且振动导致数据超出范围,这导致了我的问题。
有没有人见过这样的事情?有没有人对问题的原因有任何想法?
有什么方法可以改变我没有找到的敏感度吗?
附加信息。
好的,我在过滤之前记录了原始传感器数据。这里展示了一个非常小 的部分 主轴是绿色的,并且在我相信这应该没有振动的情况下它应该是大约 8.5 的平面上。数据没有明显的限制,但我得到的低于 8.5 的值多于高于 8.5 的值。即使传感器设置为最灵敏的 2g 范围,它看起来振动应该没问题 我这里的最大值刚刚超过 15 并且最小值为 -10 以及 +- 20 ragnge 只是没有正确居中在8.5应该是。
我会挖出我的另一部手机,它看起来有一个稍微不同的传感器 BMA150 并尝试使用它,但除非它是完美的,否则我认为我将不得不放弃这个想法。