我正在考虑为 Android 手机实现惯性导航系统,但我意识到考虑到加速度计的准确性和读数的不断波动,这很难。
首先,我将手机放在平坦的表面上,并在 X 和 Y 方向(与 table 平行,因此在这些方向上没有重力作用)对 1000 个加速度计读数进行采样。然后我对这些读数进行平均,并使用这个值来校准手机(从每个后续读数中减去这个值)。
然后我再次将系统放在 table 上并在 X 和 Y 方向上采样 5000 个加速度计读数来测试该系统。我希望,考虑到校准,这些加速度在每个方向上应该加起来(大约)为 0。然而,情况并非如此,超过 5000 次迭代的总加速度远不接近 0(每个轴上平均约为 10)。
我意识到在没有看到我的代码的情况下,这可能很难回答,但在更一般的意义上......
这仅仅是一个例子,说明手机 (HTC Desire S) 上的加速度计读数有多不准确,还是更有可能是我在编码中犯了一些错误?
最佳答案
您可以通过两次积分线性加速度来获得位置,但 错误非常可怕。在实践中是没有用的。
这里是 an explanation why (Google Tech Talk)在 23:20 .我强烈推荐这个视频。
导致问题的不是加速度计噪声,而是 gyro white noise ,请参阅第 6.2.3 小节的错误传播。 (顺便说一句,你也需要陀螺仪。)
至于室内定位,我发现这些很有用:
RSSI-Based Indoor Localization and Tracking Using Sigma-Point Kalman Smoothers
Pedestrian Tracking with Shoe-Mounted Inertial Sensors
Enhancing the Performance of Pedometers Using a Single Accelerometer
我不知道这些方法在实际应用程序中的表现如何,也不知道如何将它们变成一个不错的 Android 应用程序。
一个类似的问题是this .
更新:
显然有比上面的 Oliver J. Woodman 更新的版本,“惯性导航简介”,他的博士论文:
关于Android 加速度计精度(惯性导航),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829097/