我正在写一个应用程序,将使用加速度计来计算平均geforce施加在手机上。思考这个问题,我得出的结论是,当手机处于休眠状态时,将所有轴值加在一起将得到+9.8 (重力引起的加速度)。
我现在假设,如果我从所有轴的总和中减去9.8,就会得到在不考虑重力的情况下对手机施加的合力。因此,如果电话处于固定位置,它将返回值0。
现在,如果手机直接躺在一个轴上,这确实是正确的,但是如果手机以大约45度的角度躺在物体上,它返回的值是4-5 (大约是重力的一半)角度越接近轴,注册力就越小(继续前进,并假设它是成比例的)
根据我的理解,这不应该发生,它应该返回0,因为所有的轴都会相互抵消,不是吗?由于手机是静止的,所以手机应该不会记录任何力,对吗?
发布于 2011-08-02 18:40:17
值为4-5 m/s2表示您的计算中存在小错误或硬件缺陷。你说你正在添加所有的值,但是你是如何做到的呢?你必须用sqrt(x*x + y*y + z*z)来计算大小。这是因为加速度像速度,位置,..。是向量,它们的length是根据Pythagorean theorem计算的。
一般来说,这些传感器并不像您期望的那样精确。在iPhone上,我测得的g力值在9.75到9.87之间。数值取决于温度(把它放到冰箱里,你会得到更低的数值-我检查过了;-),当改变方向时确实存在差异。我发现值增量为0.3m/s2。为了解决这个问题,你需要繁重的数学运算(Kalman-Filter或类似的东西),当然还有第二个传感器(陀螺仪,因为磁力计,即指南针反应太慢)。
https://stackoverflow.com/questions/6910457
复制相似问题