如何计算手机在休息时垂直方向的运动?

时间:2011-06-09 10:04:14

标签: android accelerometer compass-geolocation sensor

我正在开发一个使用Android OS的应用程序,我需要知道如何计算设备在垂直方向上的移动。

例如,设备处于静止状态(A点),用户手拿它(B点),现在A点和B点之间有高度变化,我该如何计算?

我已经阅读了有关传感器和加速度计的文章,但我找不到任何可以帮助我的东西。有人有什么想法吗?

3 个答案:

答案 0 :(得分:5)

如果你将加速度积分两次得到位置,但错误是可怕的。它在实践中毫无用处。这是23:20的explanation why (Google Tech Talk)。我强烈推荐这个视频。

现在,你不需要任何准确的东西,这是一个不同的故事。传感器融合后可以使用线性加速度,如视频中所述。请参阅SensorEvent上的Sensor.TYPE_LINEAR_ACCELERATION。我首先尝试high-pass filter来检测沿垂直轴的线性加速度的突然增加。

我不知道它对你的申请是否有用。

答案 1 :(得分:3)

实际上,您可以建立(仅)垂直位置而不测量加速度。这是通过测量地球中心方向与磁北极方向之间的角度来实现的。

这仅在手机的高度(高度)发生变化时(显着)发生变化。你要做的是使用accelerometermagnetometer来获得两个float [3]数组,将它们视为向量,使它们成为单位向量,然后任意两个单位向量之间的角度为arccos(AxM)

注意点数产品即。 math.acos(A[0]*B[0]+A[1]*B[1]+A[2]*B[2])此角度的任何变化都对应于高度的变化。还要注意,这必须根据实际单位进行校准,角度与高度的变化比例在不同的经度上会有所不同;但这是一种获得高度绝对值的方法;当然,当加速时,或者附近有磁铁时,角度也会变得偏斜:)

答案 2 :(得分:0)

  1. 您可以将其与microTesla中的磁场传感器相关联

  2. 你可以使用dist =加法积分的积分=积分〜积分               =速度积分+常数