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

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

然后将其再次放在桌子上并在5000个加速度计读数中进行采样以测试系统X和Y方向。在校准的情况下,我希望这些加速度在每个方向上的总和为0(大约)。但是,情况并非如此,并且5000次迭代的总加速度远不为0(每个轴平均约为10)。

我意识到,不看代码,这可能很难回答,但是更一般的意思...

这仅仅是手机(HTC Desire S)上的加速度计读数有多么不准确的一个例子,还是我在我的编码?

评论

webvr-polyfill是一个很好的灵感来源:github.com/borismus/webvr-polyfill/tree/master/src看看他们如何使用加速度计数据来填充VR传感器:github.com/borismus/webvr-polyfill/blob/master / src /…

还考虑陀螺仪的问题:stackoverflow.com/questions/8264518/…

#1 楼

通过对线性加速度进行两次积分可以得到位置,但误差是可怕的。实际上,它是没有用的。

这里是为什么(Google Tech Talk)在23:20的解释。我强烈推荐此视频。

不是引起问题的加速度计噪声而是陀螺仪白噪声,请参阅第6.2.3节“错误传播”。 (顺便说一下,您还将需要陀螺仪。)对于室内定位,我发现这些功能非常有用:

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

装有鞋内惯性传感器的行人跟踪

使用单个加速度计增强计步器的性能

我不知道这些如何方法将在现实生活中的应用程序中执行,或者如何将其转换为一个不错的Android应用程序。

与此类似的问题。

UPDATE:

显然有比上述奥利弗·伍德曼(Oliver J. Woodman)更高版本的“惯性导航简介”,他的博士论文是:

室内环境的行人定位

评论


我知道这是很久以前的事,但是我有一个后续问题。 Android JB中的相机具有“全景”功能,可让您通过移动手机,旋转手机或沿一个轴线性移动手机来拍摄全景照片。为此,它必须相对准确地跟踪手机的位置-至少比此答案链接的视频中提到的20cm / s错误更好。它是如何做到的?它是否可以改善惯性跟踪的质量?还是使用聪明的图像处理功能仅使用相机?

–汤姆
13年6月14日在10:56

@Tom我相信后者,电话纯粹是通过图像处理算法将图片连接在一起。是什么让您认为手机必须跟踪其位置才能生成全景图片?可以使用90年代的普通相机来做到这一点,显然,那时我们的相机中没有加速度计:)当然,这些图片是连接在普通PC上的。但是您不需要这个位置,图像处理算法就足够了。希望这可以帮助。

–阿里
2013年6月14日11:09



这与旧的手动拍摄一些照片然后缝制它们的工作完全不同。它确实以某种方式实时跟踪其位置。不进行演示就很难解释。您无需手动拍照-手机会确定您何时移动足够远的距离来拍照。拍照时,它会在底部显示一个小栏,并提供全景预览。例如,如果您将相机指向下方,则它会发出哔哔声并显示向上箭头,告诉您需要将其向上移动。

–汤姆
13年6月14日在11:39

实际上,它似乎确实使用了图像处理功能-启动全景图,然后在相机前挥动您的手,将使其位置跟踪系统非常混乱!

–汤姆
13年6月14日在11:40

@汤姆我认为它主要使用图像处理(正如您的最后评论所建议的那样),但它可能与跟踪方向(而不是位置)结合在一起。

–阿里
13年6月14日在12:53

#2 楼

我只是想大声一点,而且还没有使用android加速度计API,所以请多多包涵。

首先,传统上,要从加速度计获取导航,您需要使用6-轴加速度计。您需要X,Y和Z的加速度,还需要Xr,Yr和Zr的旋转。没有旋转数据,您将没有足够的数据来建立向量,除非您假设设备永远不会改变其姿态,这将是非常有限的。反正没人会读TOS。

哦,你知道INS随着地球的旋转而漂移,对吗?所以也有。一小时后,您正在以15°的坡度神秘地爬升到太空。假设您拥有的INS能够保持很长的位置,而手机尚无法做到这一点。

使用加速度计的更好方法(即使是3轴加速度计)也可以导航。系上GPS以尽可能校准INS。 GPS不足的地方,INS很好称赞。 GPS可能突然将您射离3个街区,因为您离树太近了。 INS并不是很好,但是至少它知道您没有被流星击中。

您可以做的是记录电话加速度计数据,以及其中的很多数据。像几周值得。将其与良好(我的意思是非常好的)GPS数据进行比较,并使用数据挖掘来建立加速度计数据与已知GPS数据之间趋势的相关性。 (专家提示:您需要检查几何形状好,卫星多的日子里的GPS年历。有时候,您可能只有4颗卫星,这还不够。)您可能要做的就是发现当一个人带着手机在口袋里走路时,加速度计数据记录了一个非常特定的模式。基于数据挖掘,您可以与该用户建立该设备的配置文件,以及该模式具有GPS数据时所代表的速度类型。您应该能够检测到转弯,爬楼梯,坐下(校准为0速度时间!)以及其他各种任务。电话的握持方式需要完全视为单独的数据输入。我闻到一个用于进行数据挖掘的神经网络。换句话说,有些东西看不到输入的含义。该算法只会寻找模式的趋势,而不会真正关注INS的实际测量。它只知道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个方向。还有很多方法来握住手机。我们在这里谈论很多数据。

显然,您仍然会有很多漂移,但是我认为您最好通过这种方式运气,因为设备会在您停止行走时知道,并且位置漂移不会永久存在。它知道您根据历史数据保持静止。传统的INS系统没有此功能。漂移永久地适用于所有未来的测量和化合物。对于传统的INS来说,过高的准确性或定期进行辅助导航至关重要,这对传统INS至关重要。

每个设备,每个人都必须拥有自己的个人资料。它包含大量数据和大量计算。每个人的步调不同,步调不同,手机放在不同的口袋里,等等。要在现实世界中实现,肯定需要在服务器端处理数字运算。

如果您这样做,将GPS用作初始基准,部分问题是GPS往往会随时间推移自行迁移,但这些误差是永久性的。将接收器放在一个位置并记录数据。如果没有WAAS改正,您可以轻松获得位置修正,该修正会在您周围100英尺的随机方向上漂移。使用WAAS,可能下降到6英尺。实际上,在背包上安装亚米RTK系统可能会带来更好的运气,至少可以降低ANN的算法。

使用我的方法,INS仍然会出现角度漂移。这是个问题。但是,如果您到目前为止已经建立了一个ANN,以在n个用户中倾倒数周的GPS和INS数据,并且实际上已经使它工作到了这一点,那么到目前为止,您显然并不介意大数据。继续走这条路,并使用更多数据来帮助解决角度漂移:人是习惯的生物。我们几乎做同样的事情,例如在人行道上走,穿过门,爬上楼梯,而不做疯狂的事情,例如穿过高速公路,穿过墙壁或离开阳台。

假设您要从“老大哥”那里获取一个页面,然后开始存储有关人们去向的数据。您可以开始绘制人们应该行走的地方。可以肯定的是,如果用户开始走楼梯,那么她将与走前的人处于同一楼梯台阶。经过1000次迭代和一些最小二乘调整后,您的数据库几乎可以准确地知道这些阶梯在哪里。现在,您可以在人开始走路时纠正角度漂移和位置。当她撞上那些楼梯,掉下那个大厅或沿着人行道行驶时,任何漂移都可以得到纠正。您的数据库将包含按某人可能会走到那里或该用户过去曾走过那里的可能性加权的扇区。为此,使用divide and conquer对空间数据库进行了优化,以仅分配有意义的扇区。就像那些MIT工程中,配备激光的机器人从黑色图像开始,然后每转一圈在迷宫中绘制迷宫,照亮所有墙壁的位置。

高流量将获得更高的权重,而从未有人去过的地区将获得0的权重。较高的交通区域具有较高的分辨率。从本质上讲,您最终会得到一张地图,其中包含任何人到过的地方,并将其用作预测模型。

如果您可以使用此方法确定某人在剧院中的座位,我不会感到惊讶。如果有足够的用户去剧院,并且有足够的分辨率,您将获得数据映射剧院的每一行以及每一行的宽度。访问该地点的人越多,您可以预测该人所处位置的保真度就越高。

此外,如果您感兴趣,我强烈建议您(免费)订阅GPS World杂志在目前对这类东西的研究中。每个月我都会很讨厌它。

评论


“将尽可能与GPS结合来校准INS。在GPS不足的地方,INS会很好地称赞。”据我了解,这就是Kalman滤波的目的。它结合了每种方法的优势,以抵消其他方法的劣势

– Endolith
16/09/23在15:39

#3 楼

我不确定您的偏移量有多大,因为您忘记了包含单位。 (“在每个轴上绕10左右没什么。:P)也就是说,这仍然有可能是由于硬件的不精确所致。

加速度计可以很好地用于确定手机的相对方位重力或检测手势(摇晃或撞击手机等)。

但是,尝试使用加速度计进行航位推算会导致您遇到许多复合错误。否则,加速度计必须非常准确,而且这不是常见的用例,因此我怀疑硬件制造商是否为此进行了优化。

评论


感谢你的回答。静止时,加速度计在X和Y轴上的读数均为-0.8 ms ^ -2左右,因此我将其用作偏移量。通过“大约10”位,我的意思是经过5000次迭代,将来自传感器的单个轴上的每个加速度加起来总计不大约为0 ms ^ -2(就像在偏移上方和下方均匀波动一样)值),而是倾向于在一个方向上记录更多的加速度,经过两次积分找到位置后,随着手机在一分钟内移动3m左右,结果逐渐变好。

–woodstock365
2011年10月20日在18:21

+1用于航空航海术语“航位推算”。尽管航位推测法比INS更适用于使用相机导航。

– RyanJMcGowan
13年12月28日在7:14

#4 楼

Android加速度计是数字式的,它使用相同数量的“存储桶”对加速度进行采样,可以说有256个存储桶,并且该加速度计能够感应到-2g至+ 2g。这意味着您的输出将根据这些“桶”进行量化,并且会在一组值附近跳跃。

要校准android加速度计,您需要采样1000多个点,并且找到加速度计围绕其波动的“模式”。然后根据输出波动幅度找到数字点的数量,并将其用于滤波。

一旦获得模式和+/-波动,我建议进行卡尔曼滤波。

评论


我正在寻找校准方法。似乎您的建议是我所需要的。我只需要确认一下。找到模式后,说它是0.5。我没有得到“然后通过输出波动多少来找到数字点的数量,并将其用于滤波。”您能否再详细说明一下。

– Nazerke
13年3月26日在19:48

假设您的加速度计具有256个输出点,并且在两次读数之间波动0.015m / s ^ 2。将设备放在桌子上时,输出可能会以0.015m / s ^ 2的倍数波动。假设您的读数为0 +/-(X * 0.015)。您需要找到X(这将是一个偶数)。例如,我的X可能是3。在这种情况下,我会忽略加速度计读数小于0.045 m / s ^ 2的变化。

–亚历山大·斯通(Alex Stone)
2013年4月9日15:03

所以android手机的加速度计还不是很好。

– Techsin
13年13月13日下午4:57

#5 楼

我知道这已经很老了,但是给出的任何答案都没有解决当前的问题。

您所看到的是设备的线性加速度,包括重力作用。如果将手机放在平坦的表面上,传感器将报告由于重力而产生的加速度,约为9.80665 m/s2,因此给出您所看到的10。传感器不准确,但并非如此!有关可能有用的传感器的一些有用链接和信息,请参见此处。

评论


否-我认为您误解了这个问题:“ ...在X和Y方向上的读数(与表格平行,因此在这些方向上没有重力作用)”。 9.8 / s2将在Z轴上。

– teapot7
13年5月20日在23:45

#6 楼

您假设X和Y方向上的加速度计读数(在这种情况下完全是硬件噪声)将围绕平均值形成正态分布。显然不是这样。

您可以尝试做的一件事是将这些值绘制在图形上,看看是否出现任何模式。如果不是这样,则噪声在统计上是随机的,并且无法针对-至少对于您的特定电话硬件进行校准。