【问题标题】:Trying to calibrate accelerometer试图校准加速度计
【发布时间】:2011-10-18 03:15:39
【问题描述】:

我正在编写一个应用程序,它将使用加速度计来计算施加在手机上的平均 geforce。思考这个问题,我得出的结论是,当手机处于静止状态时,将所有轴值相加会得到 +9.8(重力加速度)的答案。

我现在假设,如果我从所有轴的总和中减去 9.8,它将得到施加在手机上的合力,而不考虑重力。因此,如果手机处于固定位置,它将返回值 0。

现在,如果手机直接放在一个轴上,这确实是正确的,但如果手机以约 45 度角靠在某物上,它会返回 4-5 的值(大约是重力)角度越接近轴,记录的力越小(继续假设它是成比例的)

据我了解,这不应该发生,它应该返回 0,因为所有轴都会相互抵消,不是吗?因为手机是静止的,所以手机应该没有用力记录吧?

【问题讨论】:

  • 如果您需要,我可以发布代码

标签: android accelerometer calibration


【解决方案1】:

4-5 m/s2 的值表示您的计算中存在小错误或硬件缺陷。你说你正在添加所有值,但是你是怎么做的呢?您必须将幅度计算为 sqrt(x*x + y*y + z*z)。这是因为速度、位置等加速度是矢量,它们的length 是根据Pythagorean theorem 计算的。

一般来说,这些传感器并不像您想象的那么精确。在 iPhone 上,我测量的 g 力值介于 9.75 和 9.87 之间。值取决于温度(把它放在冰箱里,你会得到更低的值 - 我检查过它;-) 并且在改变方向时确实存在差异。我发现值增量为 0.3 m/s2。为了解决这个问题,您需要大量的数学运算(Kalman-Filter 或类似的东西),当然还有第二个传感器(陀螺仪,因为磁力计,即指南针反应太慢)。

【讨论】:

  • 啊好吧,我只是用((x+y+z)-9.8)计算的,为什么要像sqrt(xx + y y + z*z)?如果我按照你的方式做,我还需要减去 9.8 吗?
  • 查看更新的答案。 g 的量是恒定的(在一个地方),但我认为您的意思是用户加速度。如果是这样,是的。
  • 啊,是的,你把我带回物理课了!哈哈非常感谢你的帮助! :D
猜你喜欢
  • 1970-01-01
  • 2011-01-07
  • 1970-01-01
  • 2011-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多