同步操作将从 lan/beacon 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
一、理论基础 1、定位算法简介 采用的是蓝牙4.0 iBeacon定位技术,其原理是定位终端接收到iBeacon基站发来的信号强度,然后根据无线信号强度的渐变模型得出基站与被定位终端的直线距离,然后再根据高度补偿法,得出基站与终端的平面距离,当终端接收到三个以上不同基站的信号,即能得出与三个以上不同基站的水平距离,且这些基站的坐标坐标已知,就可以对这个终端进行定位。 1.1 建模与测量终端到基站的距离 实际中通常用来测得基站与终端距离的简化无线信号渐变模型如下: 式中,P(d )表示距离基站直线距离为d时终端接收到的信号强度,即RSSI值;P (d)表示距离基站为d时终端接收到的信号功率;为参考距离,为计算方便,通常选择一米处为参考距离;n是路径损耗(Pass Loss)指数,通常是由实际测量得到,障碍物越多,n值越大,从而接收到的平均能量下降的速度会随着距离的增加而变得越来越快 。 在实际应用中,通常需要实地测量得到基站在一米处接收到的功率值、环境衰减因子、高度补偿三个值,分别记为p0、n、h。其中,h根据终端一般使用时,与基站的垂直距离得到;p0、n测量时,由于具体室内模型的建立与优化,对定位效果影响最大,为使模型能够最大程度符合当前室内环境中的无线信号传播特性,使RSSI测距能获得更高的精度,需要对参数A和n进行优化进而得到当前室内环境下的最优值。一般通过线性回归分析来估计参数和的值,因为RSSI值在超过14m以后基本趋于平缓,不再符合接收信号强度随着距离增大而衰减的规律。所以为保证测距精度,基站固定后,以20 cm为间隔,在距离基站14m的范围内设置70个测量点,即距离基站0.2 m,0.4 m,…,14m等位置。在每个测试点接收100个数据包后,对100个RSSI值求平均值,再以平均后的RSSI值作为终端在该位置收到的信号强度。最后记录RSSI和d的对应关系,这样就得到了70组测量数据(),= 1,2,3,…,100,其中表示距离为时终端接收到的功率值。对所采集的70组测量数据使用线性回归分析,带入以下公式,即可求出p0、n(式中A表示p0): 1.2 定位 当接收到三个以上不同基站的信号时,由2.1得到终端与基站的距离之后,便可利用定位算法对基站进行定位。最广泛使用的是三边定位算法,在此基础之上,改进的算法有加权三边定位算法和加权质心定位算法。 1.2.1 三边定位算法 在基于测距的定位算法中,三边测量法是比较简单的算法,算法原理为:平面上有三个不共线的基站 A,B,C,和一个未知终端 D,并已测出三个基站到终端D的距离分别为R1,R2,R3,则以三个基站坐标为圆心,三基站到未知终端距离为半径可以画出三个相交的圆,如图下图所示,未知节点坐标即为三圆相交点。 然而,在实际测量中,往往由于测量的误差,使三个圆并不交于一点,而相交于一块区域,如下图所示。在此种情况下,便需用其他算法进行求解,如极大似然估计法,最小二乘法进行估计,或者使用三角形质心算法。 这里,我们的算法采用最小二乘法求近似解,并针对n个基站(n≥3),已知n个基站的坐标分别为 (),(),…,() ,未知终端坐标为() ,由以下步骤求解: ①:建立信标节点与未知节点距离方程组 ②:上边方程组为非线性方程组,用方程组中前n-1个方程减去第n个方程后,得到线性化的方程: 其中: ③:用最小二乘法求解上边方程得: X 便是未知终端的坐标计算值。 1.2.2 加权三边定位算法 由无线信号强度渐变模型可以发现,当定位终端离基站距离越远时,接收到的RSSI值变化会越来越小,这就会导致距离越远,基站与定位终端的距离误差越大,相应的造成定位误差变大,由此,我们可以采取加权的思想,将距离小的(精确度高)赋予较大的权值,距离大的(精确度低)的赋予较小的权值。 首先将基站分组。对收集到的所有基站,经由id分为组n后,求组合数C(n,3),并对每组分别进行三边定位;接着根据距离越大定位误差越大的原则,赋以权值(为每个基站到定位终端测得的距离)。最后,由每个组合得到的结果加权得到最终的定位结果。 1.2.3 加权三角形质心定位算法 该算法的思想是对收集到的所有基站,经由id分为组n后,求组合数C(n,3),然后对每一个组合的三个基站,以每个基站坐标为圆心,测得的基站到定位终端距离为半径画圆,然后根据交点组成的三角形,求其质心,即为测得的终端坐标。大体如下: 然后,根据距离越大定位误差越大的原则,赋以权值(为每个基站到定位终端测得的距离)。最后,由每个组合得到的结果加权得到最终的定位结果。 然而,由于误差的存在,且测量时位置并不在每个组合所构成的三角形中间位置,因此,当误差大时,往往所构成的圆是没有交点的(三个圆必须两两存在交点,否则不能用该方法)。 以上三个算法为了使接收到的基站RSSI更为准确,根据正态分布,去掉了RSSI值排序后两边的极端值,即对接收到的同一基站的所有RSSI值,排序,然后首尾各去掉一部分,然后求其均值,作为接收到的RSSI值测算距离。 本章参考:https://github.com/megagao/IndoorPos 二、示例工程 1、服务端示例 1.1 技术栈 • 基础框架:SpringBoot • 中间件:Redis • 其他:Redis客户端使用的时Redisson,提升开发效率Lombok,TCP/UDP Server Netty 1.2 工程结构 com.rexense.beacon alg 算法实现 weighted 加权算法实现 config 配置 controller 控制器 entity 实体类 service 服务 BaseDataService 基础数据服务,提供信标坐标查询 LabelService 标签服务,提供标签坐标的修改与查询 LocationService 定位服务 MsgService 消息处理服务 NettyServer TCP-Server 1.3 定位策略 1.3.1 定义 msgId:蓝牙设备每次向外发送信号消息时都应当携带的id,msgId应对与时间正相关 labelId:蓝牙设备的唯一编码,发送消息时都应当携带 消息包:某一信标发出的数据包 消息:可能经过多个信标转发,但msgId相同、labelId相同的消息包的总称 1.3.2 策略 定时处理策略:对于同一个【消息】,当服务端接收到第一个【消息包】后,开始计时,其余【消息包】仅做接收处理,当计时达到一定的时长(时长可配置),则将该时间段内接受到的所有【消息包】作为定位算法的输入,处理本次定位,后续如果再收到这个【消息】的【消息包】,则不做处理。 1.4 详细实现 定时处理策略的实现,主要包括以下几个部分:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。