woo*_*365 108 android physics calibration accelerometer acceleration
我正在考虑为Android手机实施一个惯性导航系统,我意识到加速度计的准确性和读数的不断波动很难实现.
首先,我将手机放在一个平面上,并在X和Y方向上取样1000个加速度计读数(平行于工作台,因此没有重力作用于这些方向).然后我平均这些读数并使用该值来校准手机(从每个后续读数中减去该值).
然后我再次将它放在桌面上并在X和Y方向上采样5000个加速度计读数来测试系统.考虑到校准,我预计这些加速度应该在每个方向上加起来为0(大致).然而,情况并非如此,并且超过5000次迭代的总加速度远不及0(每个轴上平均大约10).
我意识到没有看到我的代码,这可能很难回答,但在更一般的意义上......
这只是移动电话(HTC Desire S)上加速度计读数不准确的一个例子,还是我在编码中出错的可能性更大?
Ali*_*Ali 124
通过将线性加速度积分两次得到位置,但误差很大.它在实践中毫无用处.
这是解释为什么(谷歌技术讲座)在23:20.我强烈推荐这个视频.
引起问题的加速度计噪声不是陀螺白噪声,请参阅6.2.3小节误差的传播.(顺便说一下,你也需要陀螺仪.)
至于室内定位,我发现这些有用:
基于RSSI的室内定位和跟踪使用Sigma-Point卡尔曼平滑器
我不知道这些方法在现实应用程序中的表现如何,或者如何将它们变成一个不错的Android应用程序.
类似的问题是这个.
更新:
显然有一个比上面的Oliver J. Woodman更新的版本,"惯性导航的介绍",他的博士论文:
Rya*_*wan 19
我只是在大声思考,我还没有使用过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来说绝对至关重要.
每个设备,每个人都必须拥有自己的个人资料.这是很多数据和大量的计算.每个人都走不同的速度,不同的步骤,并将他们的手机放在不同的口袋等.当然,要在现实世界中实现这一点,需要在服务器端处理数字运算.
如果您确实使用GPS作为初始基线,那么部分问题是GPS往往会随着时间的推移而自行迁移,但它们是非永久性错误.在一个位置坐一个接收器并记录数据.如果没有WAAS校正,您可以轻松地在您周围100英尺的随机方向上漂移定位.使用WAAS,可能低至6英尺.实际上,你可以在背包上使用亚米级RTK系统,但至少可以降低ANN的算法.
使用我的方法,你仍然会使用INS进行角度漂移.这是个问题.但是,如果你到目前为止构建一个人工神经网络,在n个用户中投入数周的GPS和INS数据,并且实际上已经达到了这一点,那么到目前为止你显然不介意大数据.继续走这条路,并使用更多数据来帮助解决角度漂移:人们是习惯的生物.我们几乎做同样的事情,比如走在人行道上,通过门,上楼梯,不做疯狂的事情,如穿过高速公路,穿过墙壁或阳台.
因此,假设您正在从Big Brother那里获取一个页面,并开始存储人们去哪里的数据.您可以开始映射人们应该走路的地方.这是一个非常明确的赌注,如果用户开始走楼梯,她就在她前面的人走上楼梯的同一个楼梯.经过1000次迭代和一些最小二乘调整后,您的数据库非常准确地知道这些楼梯的位置.现在,您可以在人开始行走时纠正角度漂移和位置.当她撞到那些楼梯,或者转向那个大厅,或者沿着人行道行进时,任何漂移都可以得到纠正.您的数据库将包含按一个人走在那里的可能性加权的扇区,或者该用户过去曾经走过那里的扇区.空间数据库针对此进行divide and conquer了优化,仅用于分配有意义的扇区.这有点像那些配备激光的机器人以黑色图像开始的麻省理工学院项目,并通过每一个转弯点亮记忆中的迷宫,照亮所有墙壁的位置.
高流量区域将获得更高的权重,以及没有人获得0重量的区域.较高的交通区域具有较高的分辨率.你最终会得到一张无处不在的地图,并将其用作预测模型.
如果你能确定一个人使用这种方法在剧院里坐哪个座位,我不会感到惊讶.如果有足够的用户去剧院,并且有足够的分辨率,您可以在剧院的每一行映射数据,以及每行的宽度.访问某个位置的人越多,您可以预测该人所在的更高保真度.
此外,如果您对目前对此类内容的研究感兴趣,我强烈建议您(免费)订阅GPS World杂志.每个月我都会嘲笑它.
我不确定你的偏移是多么好,因为你忘了包含单位.("每个轴上大约10个"并没有说太多.:P)也就是说,它仍然可能是由于硬件不准确造成的.
加速度计适用于确定手机相对于重力的方向,或检测手势(摇晃或撞击手机等).
但是,尝试使用加速度计进行航位推算会使您遇到很多复合误差.加速度计需要非常精确,否则,这不是一个常见的用例,所以我怀疑硬件制造商正在优化它.
Android加速度计是数字的,它使用相同数量的"桶"采样加速,假设有256个桶,加速度计能够从-2g到+ 2g进行感应.这意味着您的输出将根据这些"桶"进行量化,并且会跳过某些值.
要校准Android加速度计,您需要采样超过1000个点并找到加速度计波动的"模式".然后根据输出波动的数量找出数字点的数量,并将其用于过滤.
一旦你得到模式和+/-波动,我建议卡尔曼滤波.
| 归档时间: |
|
| 查看次数: |
92515 次 |
| 最近记录: |