我只是在胡思乱想,并且我还没有使用过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的实际测量值。所有它知道的是“历史上当出现这种模式时,设备以2.72 m/s X,0.17m/s Y,0.01m/s Z的速度移动,所以现在设备必须正在这样做。”然后它会相应地推进。这种完全盲目非常重要,因为仅仅将手机放在口袋里可能会朝4个不同的方向定位,如果你换背包就有8种方式。而且还有很多持手机的方法。这里涉及到很多数据。
显然,您仍将具有很多漂移,但我认为通过这种方式,您会更有成功率,因为设备知道您何时停止行走,并且位置漂移不会一直存在。它知道你静止不动是基于历史数据。传统INS系统没有这样的功能。漂移会影响所有未来测量值并呈指数级增长。对于传统的INS系统,非常准确或者定期检查的第二导航系统是绝对必要的。每个设备和每个人都必须有自己的配置文件。这是大量数据和计算。每个人走路的速度不同,步伐也不同,将手机放在不同的口袋里等等。要在现实世界中实现这一点,需要处理服务器端的大量数字计算。
如果您使用GPS进行基准测试,其中部分问题是GPS往往会随着时间的推移而具有自身迁移,但它们是非永久性的错误。在一个位置放置接收器并记录数据。如果没有WAAS校正,您可以轻松地得到围绕您100英尺范围内以随机方向漂移的位置修复。通过WAAS,可能降至6英尺。使用背包上的亚米级RTK系统可能更容易让ANN算法下降。
使用我的方法仍然会有INS角度漂移的问题。这是一个问题。但是,如果您已经如此远地构建了一个ANN来逐周研究n个用户的GPS和INS数据,并且实际上使其工作到了这个水平,那么显然您不介意到目前为止使用更多的数据来帮助解决角度漂移问题:人类是有习惯的生物。我们几乎都做同样的事情,例如在人行道上行走,穿过门,上楼梯,而不会做疯狂的事情,例如穿越高速公路,穿过墙壁或从阳台上跳下来。假设您像Big Brother一样开始储存人们的行动数据,我们可以开始绘制人们行走的地图。如果用户开始走上楼梯,那么她就站在前一个人爬过的楼梯底部,这是很确定的。经过1000次迭代和一些最小二乘调整后,您的数据库可以准确地知道这些楼梯的位置。现在,当人们开始行走时,您可以纠正角度漂移和位置。当她走到楼梯、拐弯或沿着人行道行走时,任何漂移都可以被纠正。您的数据库将包含按照人们行走可能性加权的区域,或者该用户曾经在那里行走过的区域。空间数据库使用“分而治之”的方法进行优化,只分配有意义的区域。这有点像那些麻省理工学院项目,其中装备激光器的机器人从黑色图像开始,通过每个转弯来在内存中绘制迷宫。
高交通量区域将获得更高的权重,而没有人去过的区域则具有0权重。高交通量区域具有更高的分辨率。最终您将获得一个地图,标注出每个人到访的地方,并将其用作预测模型。
使用这种方法,我不会感到惊讶,您可以确定一个人在电影院的哪个座位上。如果有足够多的用户去电影院,并具备足够的分辨率,您将获得每排座位的数据映射,以及每排座位的宽度。访问地点的人越多,您就越能准确地预测该人所处的位置。
此外,如果您对目前的研究感兴趣,我强烈建议您获取(免费)的GPS World杂志订阅服务。我每个月都会沉迷其中。