蓝牙定位中遇到的问题和解决思路

前言

又到一年毕业季。

蓝牙定位也断断续续做了快一年多了,以后可能不会再做这一块了,趁记忆还新的时候把遇到的一些问题稍微总结一下,帮助后来的朋友少走一点弯路。

补充点小知识

ibeacon和蓝牙

Ibeacon是一项低耗能蓝牙技术技术,工作原理类似之前的蓝牙技术。iBeacon 是苹果公司2013年9月发布的移动设备用OS(iOS7)上配备的新功能。(来自百度百科)
目前做定位的蓝牙其实都是基于ibeacon的。

算法的意义

理论上来说,已知不在同一条直线的三个点坐标,以及定位点分别到三点的距离,我们是可以直接求出定位点的。

那么还需要算法有何用呢?因为蓝牙定位信号不稳定(跟蓝牙发射端和蓝牙接收端的质量还有环境有关),计算蓝牙信标到定位点的距离往往非常不精确,所以无法直接确定定位点,需要通过算法来模糊定位。

主流算法

主要是三点定位法和指纹法。

三点定位法:此三点已非彼三点了。三点定位法原本是已知三点坐标和三点到未知点的距离,求未知点用的方法,但是由于在实际运用中三点距离并不是精确距离,所以只能求到一个模糊解,三点法也就有了各种各样的变种,当然还是可以统称三点定位法。三点不是真的指三点,实际运用中可以用多点,不过在蓝牙这个领域常用的是3~5点,具体的实现方式有很多种,比如权值法、最小二乘法、均值法。根据具体的实现可以分成很多方法。

指纹法:指纹法就是先采集蓝牙在不同位置的信号强度保存在数据库,通过对比数据库数据和采集的信号来找到可能性最大的位置。

两种算法各有优缺点,首先精度方面是指纹法更好,计算速度方面三点法更快。指纹法前期需要采集数据,这点很麻烦。

问题与解决思路

先声明,解决方式有只是我个人思路,不提供具体的做法,有兴趣的可以在评论留言。

蓝牙问题

首先成本上并不便宜,一个完整的蓝牙设备大概在40~60RMB之间,质量也参差不齐。有实力的朋友建议自己做,成本相信就非常可观了。

肯定大部分的人还是会选择买现成的蓝牙设备,毕竟开发也需要时间。这个时候一款好的蓝牙会帮助你省不少时间,这里非常重要的一点就是要货比三家,名气大的厂家不一定设备就好,亲身体会。

蓝牙质量怎么鉴定,采集足够长时间的信号,观察信号的波动情况。蓝牙定位最重要的就是信号的稳定度,稳定度越高,定位越精准。

算法问题

蓝牙设备再好,多多少少都会出现信号失真的情况。这时候就需要设计滤波器来过滤错误信号。滤波器首推的是卡尔曼滤波器了,其次就是均值滤波器。

如果用的是三点定位法,那么从理论上来说,需要选取平均信号最强的三个信标点来做计算,然而会出现一种情况,即选取的三个信标点不完全是实际距离定位点最近的三个信标点。实际运用过程中,可能由于障碍物或者信号失真,导致某些信号衰落严重或者异常增强(多径效应),导致我们直接计算的定位点并不是完全正确的,这时候要做抗噪的准备

而如果是指纹法,那么对不同定位点之间的区分度就要求要高了,区分度越高定位越精准。举个例子,有蓝牙A,我们站在蓝牙A前方1米和后方1米的位置,测得蓝牙A的信号是基本一致的,这时候算法并不能知道我们在A的前方还是后方,这时候我们如果在蓝牙A前方加上蓝牙B,蓝牙B的信号在刚才两个位置是不一致的,那么我们通过对比蓝牙B的信号,就能知道我在A的前方还是后方了。这是信号采集中的一些小窍门。然而这时候对于指纹法来说有一个难点,即是不同的设备采集的信号会不一致,设备1采集十分钟是5.5,设备2采集十分钟可能是6.5。这个时候需要考虑设备适配的问题,或者算法自适应问题

设备适配

蓝牙设备需要适配,功率,频率,功耗。功率频率越强,设备接收越好,定位越精准,相对功耗越大;反之设备接收差,定位偏差,但是功耗低。

总结

蓝牙定位实际上是一个最优化问题,在各种资源限制下做权衡,找到一个最佳平衡点。

发布了63 篇原创文章 · 获赞 73 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/jjwwwww/article/details/91370897