我正在使用 android OS 开发一个应用程序,我需要知道如何计算设备在垂直方向上的移动。
例如,设备处于静止状态(A 点),用户将其拿在手中(B 点),现在 A 点和 B 点之间的高度发生了变化,我该如何计算呢?
我已经阅读了有关传感器和加速度计的文章,但我真的找不到任何可以帮助我的文章。有人有想法么?
我正在使用 android OS 开发一个应用程序,我需要知道如何计算设备在垂直方向上的移动。
例如,设备处于静止状态(A 点),用户将其拿在手中(B 点),现在 A 点和 B 点之间的高度发生了变化,我该如何计算呢?
我已经阅读了有关传感器和加速度计的文章,但我真的找不到任何可以帮助我的文章。有人有想法么?
如果您将加速度积分两次,您将获得位置,但错误是可怕的。在实践中是没有用的。这是23:20的原因(Google Tech Talk)的解释。我强烈推荐这个视频。
现在,您不需要任何准确的东西,那是另一回事。如视频中所述,传感器融合后可使用线性加速度。请参阅Sensor.TYPE_LINEAR_ACCELERATION
SensorEvent 。我会首先尝试使用高通滤波器来检测沿垂直轴的线性加速度的突然增加。
我不知道它是否适合您的应用程序。
您实际上可以(仅)建立垂直位置,而无需随时间测量加速度。这是通过测量地心方向与磁北极方向之间的夹角来实现的。
这仅在手机的高度(高度)发生变化时(显着)发生变化。你所做的是使用accelerometer
andmagnetometer
得到两个 float[3] 数组,将它们视为向量,使它们成为单位向量,然后任何两个单位向量之间的角度为 arccos(AxM)。
请注意,这是点积,即。math.acos(A[0]*B[0]+A[1]*B[1]+A[2]*B[2])
该角度的任何变化都对应于高度的变化。另请注意,这必须根据实际单位进行校准,并且角度与高度的变化比在不同的经度上会有所不同;但这是一种获得高度绝对值的方法;当然,当进行加速或附近有磁铁时,角度也会倾斜:)
您可以将其与 microTesla 中的磁场传感器相关联
您可以使用 dist= 加速度积分的积分 ~ sigma ~ summation = 速度积分+常数