我正在编写一个应用程序,它将使用加速度计来计算手机上施加的平均 geforce。考虑这个问题,我得出结论,当手机静止时,将所有轴值加在一起会得到 +9.8(重力加速度)的答案。
我现在假设,如果我从所有轴的总和中减去 9.8,它会给出施加在手机上的合力,而不考虑重力。因此,如果手机处于固定位置,它将返回值 0。
现在,如果手机直接放在一个轴上,这确实是正确的,但如果手机以约 45 度角靠在某物上,它返回的值是 4-5(大约是重力)角度越接近轴,记录的力越小(继续并假设它是成比例的)
根据我的理解,这不应该发生,它应该返回 0,因为所有轴都会相互抵消,不是吗?因为手机是静止的,所以手机应该没有记录力,对吧?
最佳答案
4-5 m/s2 的值表示您的计算中存在小错误或硬件缺陷。你说你正在添加所有值,但是你是怎么做到的?您必须将幅度计算为 sqrt(x*x + y*y + z*z)。这是因为速度、位置等加速度是矢量,它们的 length是根据Pythagorean theorem计算的.
一般来说,这些传感器并不像您预期的那样精确。在 iPhone 上,我测得的重力值介于 9.75 和 9.87 之间。值取决于温度(将它放在冰箱中,你会得到较低的值 - 我检查过 ;-) 并且在改变方向时确实存在差异。我发现值增量为 0.3 m/s2。为了解决这个问题,您需要大量的数学运算(Kalman-Filter 或类似的东西),当然还有第二个传感器(陀螺仪,因为磁力计,即罗盘 react 太慢)。
关于android - 试图校准加速度计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6910457/