Android 加速度计精度(惯性导航) [英] Android accelerometer accuracy (Inertial navigation)

查看:36
本文介绍了Android 加速度计精度(惯性导航)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在考虑为 Android 手机实施惯性导航系统,但鉴于加速度计的精度和读数的不断波动,我意识到这很难.

首先,我将手机放在平坦的表面上,并在 X 和 Y 方向(与桌子平行,因此没有重力作用于这些方向)上采样了 1000 个加速度计读数.然后我对这些读数求平均值,并使用这个值来校准手机(从每个后续读数中减去这个值).

然后我再次将系统放在桌子上并在 X 和 Y 方向上对 5000 个加速度计读数进行采样来测试该系统.根据校准,我希望这些加速度在每个方向上加起来应该是 0(大致).然而,事实并非如此,5000 次迭代的总加速度远不及 0(每个轴上平均约 10).

我意识到没有看到我的代码这可能很难回答,但在更一般的意义上......

这仅仅是说明移动电话 (HTC Desire S) 上的加速度计读数有多不准确的一个例子,还是更有可能是我在编码中犯了一些错误?

解决方案

你可以通过对线性加速度进行两次积分来获得位置,但错误很可怕.实践中没用.

这是解释原因(Google Tech Talk),位于23:20.我强烈推荐这个视频.

导致问题的不是加速度计噪声,而是 陀螺白噪声,参见第 6.2.3 小节的误差传播.(顺便说一下,你也需要陀螺仪.)

至于室内定位,我发现这些很有用:

使用 Sigma-Point Kalman 平滑器的基于 RSSI 的室内定位和跟踪/p>

使用安装在鞋上的惯性传感器的行人追踪

使用单个加速度计提高计步器的性能

我不知道这些方法在实际应用中的表现如何,也不知道如何将它们变成一个不错的 Android 应用.

一个类似的问题是这个.

更新:

显然还有比上面的更新版本 Oliver J. Woodman,惯性导航简介",他的博士论文:

室内环境行人定位

I was looking into implementing an Inertial Navigation System for an Android phone, which I realise is hard given the accelerometer accuracy, and constant fluctuation of readings.

To start with, I set the phone on a flat surface and sampled 1000 accelerometer readings in the X and Y directions (parallel to the table, so no gravity acting in these directions). I then averaged these readings and used this value to calibrate the phone (subtracting this value from each subsequent reading).

I then tested the system by again placing it on the table and sampling 5000 accelerometer readings in the X and Y directions. I would expect, given the calibration, that these accelerations should add up to 0 (roughly) in each direction. However, this is not the case, and the total acceleration over 5000 iterations is nowhere near 0 (averaging around 10 on each axis).

I realise without seeing my code this might be difficult to answer but in a more general sense...

Is this simply an example of how inaccurate the accelerometer readings are on a mobile phone (HTC Desire S), or is it more likely that I've made some errors in my coding?

解决方案

You get position by integrating the linear acceleration twice but the error is horrible. It is useless in practice.

Here is an explanation why (Google Tech Talk) at 23:20. I highly recommend this video.

It is not the accelerometer noise that causes the problem but the gyro white noise, see subsection 6.2.3 Propagation of Errors. (By the way, you will need the gyroscopes too.)

As for indoor positioning, I have found these useful:

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

I have no idea how these methods would perform in real-life applications or how to turn them into a nice Android app.

A similar question is this.

UPDATE:

Apparently there is a newer version than the above Oliver J. Woodman, "An introduction to inertial navigation", his PhD thesis:

Pedestrian Localisation for Indoor Environments

这篇关于Android 加速度计精度(惯性导航)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆