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

问题描述 投票:6回答:3

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

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

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

android accelerometer compass-geolocation sensor
3个回答
5
投票

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

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

我不知道它对你的应用是否有益。


3
投票

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

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

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


0
投票
  1. 你可以将它与microTesla中的磁场传感器相关联
  2. 你可以使用dist =加速度积分的积分= sigma~summation =速度积分+常数
© www.soinside.com 2019 - 2024. All rights reserved.