我想知道我是否可以使用(线性)加速计和指南针来计算速度而不使用位置服务。我想通过北/西/上轴计算加速度分量并随时间积分来实现这一点。
那会有用吗?
答案 0 :(得分:3)
一般来说,Android设备上的加速度计噪音太大,无法整合信号并获得速度。此外,您还需要对器件方向进行几乎完美的估算,即使使用陀螺仪(少数设备)也常常太嘈杂。
主要问题是从加速度计信号中减去重力,因为重力通常是信号的一个非常大的分量。如果手机方向估计稍微偏离,则会以错误的方向减去重力。这使得加速度的分量在错误的方向上,并且您的速度估计很快变得无用。
当您知道设备没有移动时,基本上需要定期(每秒一次)重置速度估计。实现此目的的一种方法是,如果设备的用户正在行走,则将设备安装在脚上并尝试检测脚何时在地面上(速度在所有方向上为零)。但是,将设备安装在用户的脚上通常是对实际使用而言过于严格的限制。
可以采取其他方法来跟踪运动。例如,使用步进检测和陀螺仪,我已经能够跟踪一两分钟的步行者,精确度为几米。
答案 1 :(得分:2)
理论上,你可以这样做;在实践中,没有。
你必须假设你知道一个初始速度,但假设你从0开始速度并不是一个错误的假设。
您还必须知道整个时期内设备的实际方向。否则,您无法区分由于实际加速而导致的加速度变化,而不仅仅是旋转设备。
(请记住,你必须从读数中取出因重力引起的加速度!)
最后,错误会在一段时间内增加,不仅因为加速度的测量不完美,而且因为随着时间的推移你只得到离散的样本。
除了所有这些东西,当然,它有效! API确实告诉您读数的单位(m / s ^ 2)。您可以要求传感器进行快速更新。我认为通过编写一个应用程序执行此操作,然后将手机放平,然后向前走并停止使用它,看看它是如何准确的。那么阅读的接近0是多少?
答案 2 :(得分:0)
可能不是,因为如果你以慢速恒速行驶,我认为加速计没有检测到任何东西。