Android 加速度计精度(惯性导航)

标签 android physics accelerometer acceleration calibration

我正在考虑为 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 更新的版本,“惯性导航简介”,他的博士论文:

Pedestrian Localisation for Indoor Environments

关于Android 加速度计精度(惯性导航),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7829097/

相关文章:

iphone - 使用 iPhone 加速度计来计算抛在空中时的旋转次数

iphone - 如何使用Cocos2D检测iPhone的震动?

physics - Bullet 中的惯性张量为零有什么作用?

ios - 使用 Box2D、cocos2d 和物理编辑器在视网膜显示中的 PTM_RATIO

python - 在纯 NumPy 中重写 for 循环以减少执行时间

c++ - 方向传感器的 Windows Sensor API C++ COM 集成未在 Windows 10 上定期更新

android - 如何在 AOSP 中按名称查找 Android 模块?

android - 使用 glMultMatrixf 进行翻译,以及何时规范化

android - 将数据从 Intent 服务传递到 Activity

java - 按降序对 Firebase 数据进行排序