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

我当时正在考虑为 Android 手机实现一个惯性导航系统,我意识到,考虑到加速度计的准确性和读数的不断波动,这很难实现。

首先,我把手机放在一个平面上,从 X 和 Y 两个方向采集了1000个加速度计读数(与桌子平行,所以这两个方向没有重力作用)。然后我对这些读数进行平均,并使用这个值来校准手机(从后续的每个读数中减去这个值)。

然后,我再次把它放在桌子上,从 X 和 Y 两个方向采样5000个加速度计读数,测试了这个系统。我希望,根据校准,这些加速度在每个方向上应该加起来为0(大致)。然而,情况并非如此,超过5000次迭代的总加速度远远不及0(每个轴上的平均加速度约为10)。

我意识到如果没有看到我的代码,这可能很难回答,但从更一般的意义上来说..。

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

102923 次浏览

我不确定你的偏移量有多大,因为你忘了包括单位。(“每个轴上大约10个”并不能说明什么。: P)也就是说,这仍然可能是由于硬件不准确。

The accelerometer is fine for things like determining the phone's orientation relative to gravity, or detecting gestures (shaking or bumping the phone, etc.)

然而,使用加速度计进行航位推算会使你受到很多复合误差的影响。加速度计将需要疯狂的精确否则,这不是一个常见的用例,所以我怀疑硬件制造商正在优化它。

你得到的位置积分线性加速度两次,但 这个错误太可怕了,在实践中毫无用处。

这里是 解释为什么(谷歌技术谈话)23:20。我强烈推荐这个视频。

引起这个问题的不是加速度计的噪声,而是 陀螺仪白噪声陀螺仪白噪声,参见6.2.3误差传播小节。(顺便说一下,你还需要陀螺仪。)

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

基于 RSSI 的 Sigma-Point Kalman 平滑器室内定位跟踪

基于鞋载惯性传感器的行人跟踪

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

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

一个类似的问题是 这个

更新:

显然,还有一个比上面的奥利弗 · J · 伍德曼(Oliver J. Woodman)博士论文更新的版本: 《惯性导航入门》(A 绪论):

室内环境的行人本地化

Android 的加速度计是数字化的,它使用相同数量的“桶”来测量加速度,比如说有256个桶,加速度计能够感知从 -2 g 到 + 2 g 的加速度。这意味着您的输出将按照这些“桶”进行量化,并围绕一组值跳转。

要校准一个机器人加速度计,你需要采样超过1000点,并找到“模式”周围的加速度计是波动。然后根据输出波动的程度找出数字点的数目,并用它来进行过滤。

我建议卡尔曼滤波一旦你得到的模式和 +/-波动。

我知道这是相当古老的,但手头的问题没有解决的任何答案给出。

你看到的是装置的线性加速度包括重力的影响。如果你把手机放在一个平面上,传感器会报告由于重力的加速度,大约是 9.80665 m/s2,因此给你看到的10。传感器是不准确的,但他们没有那么不准确!请参阅 给你了解一些有用的链接和有关传感器的信息,您可能会后。

I am just thinking out loud, and I haven't played with an android accelerometer API yet, so bear with me.

首先,传统上,要从加速度计获得导航,你需要一个6轴加速度计。你需要 X,Y 和 Z 的加速度,还需要旋转 X,Y 和 Z 的加速度。没有旋转数据,你就没有足够的数据来建立矢量,除非你假设设备永远不会改变它的姿态,这将是相当有限的。反正也没人看服务条款。

你知道惯性导航系统是随着地球自转而漂移的吧?这也是原因之一。一个小时后,你就神秘地爬上了15度的斜坡进入太空。前提是你有一个移民局可以保持这么长时间的定位,而手机还做不到。

利用加速度计(即使是三轴加速度计)进行导航的更好方法是尽可能与全球定位系统连接校准惯性导航系统。全球定位系统不足的地方,移民局会很赞赏的。GPS 会突然把你射到三个街区外因为你离一棵树太近了。移民局虽然不怎么样,但至少知道你没被陨石击中。

你能做的就是记录手机的加速度计数据,还有很多。大概几个星期吧。将它与好的(我的意思是真正好的) GPS 数据进行比较,并使用数据挖掘来建立加速度计数据和已知 GPS 数据之间趋势的相关性。(专业提示: 你会想要检查 GPS 年鉴几天良好的几何和许多卫星。有时候你可能只有4颗卫星,这还不够)你可以做的是发现当一个人把手机放在口袋里走路的时候,加速计的数据记录了一个非常特殊的模式。基于数据挖掘,你建立一个设备的轮廓,与该用户,以及什么样的速度模式表示,当它有 GPS 数据,以便随着它。你应该能够检测转弯,爬楼梯,坐下(校准到0速度时间!)以及其他各种任务。手机的使用方式需要完全作为独立的数据输入进行处理。我觉得有人在用神经网络进行数据挖掘。换句话说,对输入的含义视而不见的东西。该算法只会寻找模式中的趋势,而不会真正关注惯性导航系统的实际测量。它所知道的就是 historically, when this pattern occurs, the device is traveling and 2.72 m/s X, 0.17m/s Y, 0.01m/s Z, so the device must be doing that now.它会相应地向前移动棋子。这是很重要的,它是完全盲目的,因为只是把一个手机放在你的口袋可能会朝向4个不同的方向之一,8如果你切换口袋。而且还有很多拿手机的方法。我们说的是大量的数据。

很明显,你仍然会有很多漂移,但我认为你会有更好的运气,因为设备会知道你什么时候停止行走,位置漂移将不会是一个永久性的。它根据历史数据知道你站在原地不动。传统的惯性导航系统没有这个功能。这种漂移以指数形式延续到所有未来的测量和化合物。对于传统的惯性导航系统来说,不可思议的精确性,或者有一个定期检查的辅助导航系统是绝对重要的。

每个设备,每个人都必须有自己的个人资料。这需要大量的数据和计算。每个人走路的速度不同,步伐也不同,把手机放在不同的口袋里等等。当然,要在现实世界中实现这一点,需要在服务器端处理数字处理。

如果你确实使用 GPS 作为初始基线,那么问题的一部分就是 GPS 随着时间的推移会有自己的迁移,但是它们是非永久性的错误。将接收器放在一个位置并记录数据。如果没有 WAAS 修正,你可以很容易地得到位置修正,随机方向漂移100英尺周围。用 WAAS 的话,也许能降到6英尺。你可能实际上有一个子米 RTK 系统的背包更好的运气,至少得到人工神经网络的算法下来。

使用我的方法,你仍然会和惯性导航系统有角度漂移。这是个问题。但是,如果你建立一个人工神经网络,在 n 个用户之间倾注数周价值的 GPS 和 INS 数据,并且实际上让它工作到这一点,你显然不介意大数据到目前为止。继续沿着这条路走下去,并使用更多的数据来帮助解决角度漂移: 人是习惯的生物。我们基本上做着同样的事情,比如走在人行道上,穿过门,上楼梯,不做疯狂的事情,比如穿过高速公路,穿过墙壁,或者从阳台上下来。

因此,让我们假设您从“老大哥”那里获取了一个页面,并开始存储关于人们将要去哪里的数据。您可以开始绘制期望人们步行的地图。可以肯定的是,如果使用者开始走上楼梯,她所在的楼梯底部与之前的人所在的楼梯底部是同一个。经过1000次迭代和一些最小二乘调整,您的数据库非常准确地知道那些楼梯在哪里。现在你可以纠正角度漂移和位置的人开始行走。当她走上楼梯,或者转过走廊,或者沿着人行道行走时,任何漂移都可以被纠正。您的数据库将包含一些区域,这些区域的权重取决于一个人是否有可能走到那里,或者该用户是否曾经走过那里。为此,空间数据库使用 divide and conquer进行了优化,只分配有意义的扇区。这有点像麻省理工学院的项目,装备激光的机器人从一个黑色的图像开始,通过每个转弯来描绘记忆中的迷宫,照亮所有墙壁的位置。

Areas of high traffic would get higher weights, and areas where no one has ever been get 0 weight. Higher traffic areas are have higher resolution. You would essentially end up with a map of everywhere anyone has been and use it as a prediction model.

如果你能用这种方法确定一个人在电影院的座位,我不会感到惊讶。如果有足够多的用户前往影院,并且有足够的分辨率,就会有数据映射影院的每一行,以及每一行的宽度。访问一个地点的人越多,你就能越准确地预测出那个人所在的位置。

此外,我强烈建议你得到一个(免费)订阅全球定位系统杂志,如果你有兴趣目前的研究这类东西。每个月我都带着它出去玩。

您假设加速度计在 X 和 Y 方向的读数,在这种情况下完全是硬件噪声,将在您的平均值周围形成正态分布。显然事实并非如此。

您可以尝试将这些值绘制在一个图表上,看看是否会出现任何模式。如果没有,那么噪音是统计随机的,无法校准-至少对您的特定手机硬件。