精华内容
下载资源
问答
  • 利用wifi信号进行室内定位
    千次阅读
    2019-01-02 17:47:27

    最近在做仓库定位,小结一下心得。

    1,实测定位精度在10-20米,无法提高,主要原因是wifi信号强度波动太大,转个身都会差10db。

    2,确保在任意一个点能收到3个wifi信号(信号>-85db),不要求精度的话一个就够了。PS:wifi在空旷的仓库中信号距离会超过50米。

    3,信号源不是越强越好,对提高精度没有意义。

    4,以BSSID确定wifi身份,正常情况下BSSID是全球唯一的。

    5,要过滤不可靠的wifi(BSSID),比如各种插在电脑上的共享wifi,临时出现的手机wifi热点。可以在后台做个页面,设置黑名单,或白名单。

    6,不要纠结算法,由于天生不足(信号波动太大),精度是没有办法靠算法大幅度提高的。更好的方法是增加wifi信号点数量。更新:这几天不死心,动用AI算法,还是失败了,算法无法收敛。可能是数据量不够,或者真的是波动量太大了。

    总结:虽然精度低,但是wifi定位是室内定位最容易实现的,成本最低。一些对精度要求不高的地方还是很实用的,比如从货物从一个仓库转移到另一个仓库,这种情况下甚至只需每个仓库布置一个wifi。

    (更新:今天实在无聊又把原来的AI算法(简单的三层神经网络)翻了出来,也许是积累了足够的训练数据,模型尽然稳定收敛了!!!!!准确度到95%以上,我XXXXX)

    更多相关内容
  • 近年来,随着城域无线基础网络的发展,热点(AP)的覆盖率大幅度提高,由于定位服务需求的增加以及WiFi应用领域的扩大,WiFi定位成为一种有效的定位方式。GPS卫星定位是主要的定位方式,它需要在相对空旷、高层建筑不...
  • 近年来,随着城域无线基础网络的发展,热点(AP)的覆盖率大幅度提高,由于定位服务需求的增加以及WiFi应用领域的扩大,WiFi定位成为一种有效的定位方式。GPS卫星定位是最主要的定位方式,它需要在相对空旷、高层建筑...
  • 选取权重值者为待定位点的位置估计,如有相同权重值,则比较信号强度距离,取者,这种算法在一定程度上克服了RSSI 信号随机抖动对定位的影响,提高定位的稳定性和精度。经实验测试,此系统在4 米范围内具有良好的...
  • 为了提高基于WiFi的室内定位的精度和降低计算时间, 本文提出一种卷积神经... 实验结果表明, 在时效性达到要求的前提下, 累计误差在1 m以内的定位精度约有65%, 累计误差在1.5 m以内的定位精度约有85%, 且误差较为稳定.
  • 提高井下人员定位精度,提出了一种基于WiFi的井下指纹模定位算法。该算法将采样点处测得的信号强度及其相应的位置信息保存起来,形成指纹数据库;WiFi终端根据实时测得的无线接入点信号强度,利用匹配算法与指纹数据库...
  • 最后选取权重值最大者为待定位点的位置估计,如有相同权重值,则比较信号强度距离,取最小者,这种算法在一定程度上克服了RSSI 信号随机抖动对定位的影响,提高定位的稳定性和精度。经实验测试,此系统在4 米范围...
  • 提高室内定位精度和稳定性,提出使用粒子滤波融合WiFi指纹定位和行人航位推算的室内定位算法。为减少复杂室内环境对WiFi指纹定位的影响,提出将支持向量机分类与回归相结合的两级WiFi指纹定位算法。在基于智能...
  • wifi室内定位讲解——K邻近法

    千次阅读 2021-07-17 09:18:38
    对于室内复杂环境来说, 适用于室外定位的 GPS 系统和蜂窝移动网络在室内中的定位精度明显恶化, 无法满足室内用户精确定位的需求。因此, 研究一种适用于室内复杂环境的高精度、环境自适应性强的定位算法成为近年来该...

    摘要

    对于室内复杂环境来说, 适用于室外定位的 GPS 系统和蜂窝移动网络在室内中的定位精度明显恶化, 无法满足室内用户精确定位的需求。因此, 研究一种适用于室内复杂环境的高精度、环境自适应性强的定位算法成为近年来该领域的热点。本文用真实环境下的信号强度衰减数据作为模型进行对数衰减模型的构建,将原有基于 RSS 数据库­位置的模型转换为 RSS数据库­距离数据库­位置的指纹定位模型,增加模型的可移植性与运行效率。

    引言

    随着智能穿戴等嵌入式设备和移动通信技术的发展,LSB1被广泛关注。LBS的核心技术是定位。目前,GPS和北斗定位系统(BeiDou Navigation Satellite System)是最广为人知的定位系统,这些系统在户外定位方面表现非常好。然而,由于许多原因(主要是卫星与接收器之间存在障碍物),它在城市峡谷中不可靠,在室内几乎不可用。实际上,电磁波受到建筑物和森林、山体等外部障碍物的影响。2另外,在无线传感器网络的每个节点上使用GPS和北斗的成本也很高,许多领域甚至会舍弃精确度而采用其他定位方法。为了获得建筑物内部的精确位置,人们探索了许多邻近技术。

    由于室内环境十分复杂,信号多径干扰严重、参考时钟精确性不高等问题,基于测距的方法在室内定位中误差较大。相比基于信号时间和角度的定位方法,基于RSSI3位置指纹的定位方法通常无需添加额外的硬件,具有检测设备成本低,测量信号稳定性好,定位方法简单等优点。“位 置指纹“是把室内环境中的位置和该位置的某些特定信号强度关联起来,一个位置对应唯一的指纹。 这样就能通过模式匹配的方式完成室内定位。位置指纹定位主要分为两个阶段,一是离线阶段,离线阶段主要是信息采集和样本训练,利用参考点的已知位置数据和接收到的接入点的RSSI信号特征值(RSSI、MAC地址、最值、均值、方差、方向、概率等)建立位置一指纹数据库,从而建立空间位置与RSSI序列的映射关系;二是在线阶段,将待定位节点与信号位置指纹数据库进行匹配,从而实现节点定位,因其实现简单,定位成本较低,所以成为室内定位的主要算法71。近几年来常见的用于指纹匹配定位的机器学习方法有: K最近邻法、支持向量机、随机森林、卷积神经网络、循环神经网络等,本节将主要介绍以上五种方法在室内定位中的应用4

    “位置指纹”把实际环境中的位置和某种“指纹”联系起来,一个位置对应一个独特的指纹。这个指纹可以是单维或多维的,比如待定位设备在接收或者发送信息,那么指纹可以是这个信息或信号的一个特征或多个特征(最常见的是信号强度)。如果待定位设备是在发送信号,由一些固定的接收设备感知待定位设备的信号或信息然后给它定位,这种方式常常叫做\textbf{远程定位或者网络定位}。如果是待定位设备接收一些固定的发送设备的信号或信息,然后根据这些检测到的特征来估计自身的位置,这种方式可称为\textbf{自身定位}。以上两者的有机结合称为\textbf{混合定位}:待定位移动设会把它检测到的特征传达给网络中的服务器节点,服务器可以利用它所能获得的所有信息来估计移动设备的位置。在所有的这些方式中,都需要把感知到的信号特征拿去匹配一个数据库中的信号特征,这个过程可以看作一个模式识别的问题,是机器学习类的经典问题

    位置指纹可以是多种类型的,任何“位置独特”的(对区分位置有帮助的)特征都能被用来做为一个位置指纹。比如某个位置上通信信号的多径结构、某个位置上是否能检测到接入点或基站、某个位置上检测到的来自基站信号的RSS5、某个位置上通信时信号的往返时间或延迟,这些都能作为一个位置指纹,或者也可以将其组合起来作为位置指纹6

    目前许多学者在进行指纹定位时,多运用基站RSS作为位置指纹,因为RSS的值容易获取,但是因为每个基站信号衰减模型不可能完全相等、同一基站不同时间下的信号衰减模型也不一定相等,如果遇到基站故障、发射功率变更等情况,所有指纹点均需要重新训练,后期维护成本过高。
    本文基于此项现状,提出了RSS-距离-位置的指纹定位模型,用于训练的数据库不再是多个RSS的数据,而是经换算后的距离数据,在基站的功率发生变化时,仅需要以很少的样本测试得到RSS的距离衰减函数,则可以运用原有的模型进行指纹定位,进而确定位置信息。节省了模型的后期维护成本,同时提高模型的可移植性,即使更换了所有的发射基站,原有模型在经过简单的计算后依然可以直接使用。

    理论介绍

    指纹

    位置指纹可以是多种类型的,任何“位置独特”的(对区分位置有帮助的)特征都能被用来做为一个位置指纹。

    在某个恒定的发射功率下,信号的RSS取决于接收器的位置。RSS的获取很简单,因为它是大多数无线通信设备正常运行中所必需的。很多通信系统需要RSS信息用来感知链路的质量,实现切换,适应传输速率等功能。RSS不受信号带宽的影响,不要求通信方式占用大的带宽,因此RSS是一个很受欢迎的信号特征,并广泛应用于定位中。

    KNN

    KNN(K-NearesNeighbor,即K邻近法)是一个理论上比较成熟的、也是最简单的机器学习算法之一。用老话就说:“人以群分,物以类聚”。一个样本与数据集中的k个样本最相似, 如果这k个样本中的大多数属于某一个类别, 则该样本也属于这个类别。也就是说,该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别,算法流程图如图:
    在这里插入图片描述

    KNN方法在类别决策时,只与极少量的相邻样本有关。

    对数损耗模型

    依据信号强度定位,其实质是依据信号能量值随传播距离的增加而衰减的特性来反映出标签与阅读器之间实际的几何距离。因此,信号衰减规律的准确性,直接影响系统定位的准确性。入射信号在室内环境传播的过程中会由于室内障碍物等引起反射、绕射、折射和散射现象而形成多个路径传输,具有不同强度、相位和时延的信号在接收端会叠加形成的衰减的、相位不断变化的信号波形。因此信道衰落统计特性模型的研究主要是多径环境中的幅度衰落。

    多径环境中的信号衰落幅度可服从不同分布,这依赖于测量时覆盖的面积,起主导作用的强信号存在与否等。其主要分布包括用于描述平坦衰落信号或独立多径分量接收包络统计时变特性的瑞利分布、描述存在一个主要的静态(非衰落) 信号分量时小尺度衰落包络分布的莱斯分布和对数正态分布7

    假设有一个固定的信号发射源,其平均RSS的衰减和距离的对数成正比,在最简单的情况下,RSSI可以表示为:
    R S S I = P t − K − 10 α l o g 10 d n RSSI=P_t−K−10 \alpha log_{10}\frac{d}{n} RSSI=PtK10αlog10nd
    其中, α \alpha α称为路径损耗指数, P t P_t Pt为发送功率, K K K是一个取决于环境和信号频率的常数, d d d为距离, n n n为衰减因子,亦可称为相对距离,经实验, n n n在拟合模型时可以使计算过程更加稳定,一般取2即可。RSSI可以被用来计算移动设备与AP之间的距离。

    对数损耗模型是信号发射基站的参数,它受到环境、天气、电磁场干扰等影响,同时当发射源更换或功率变化时,原有的指纹模型即不再适用,损耗模型也应该重新构建8

    数据库建立

    RSSI指纹采集

    系统的使用分为两个阶段,离线的RSS指纹采集阶段和在线定位阶段。离线阶段,将网络搭建好之后,需要在定位环境中采集大量RP的RSS指纹并存储,RSS指纹地图建好之后才能进入实时定位阶段,指纹地图建立好之后在一段较长的时间内都能使用该地图。
    建立指纹数据库是指纹定位方法实现的前提。确定性指纹匹配KNN算法,根据定位点测量的RSSI信号强度与指纹数据库中存储的指纹点 RSSI 信号强度进行匹配,考察定位点与指纹点的相似程度,以此来对定位点的位置进行估计。指纹数据库的建立,首先要按照一定的方法采集处理 RSSI 信号强度,形成指纹数据,然后将指纹数据存储在数据库中,待定位时使用。

    坐标定位计算阶段是使用KNN算法和距离权重算法来查找要估算的目标节点的坐标值。首先,参考节点和目标节点之间的欧几里德距离使用最佳估计值计算
    在信息楼105实验室 7.483 m × 3.75 m 7.483m\times 3.75m 7.483m×3.75m的环境中,放置3个路由器用于信号发送,将整个环境分割成如图所示的24个网格,在线条交叉点分别测试每个路由器的RSS数据,形成 横向 6 × 纵向 3 × 3 个路由器 = 54 \text{横向}6\times \text{纵向}3 \times 3\text{个路由器}=54 横向6×纵向3×3个路由器=54组数据,将其命名为fingerprint.采集装置使用wifi模块ESP8266,并使用STM32F103ZET6进行AT命令的发送和数据预处理。

    数据由stm32接收后预处理,分拣出有用信息,实时显示在显示屏上,如图:
    在这里插入图片描述
    同时由串口传输至计算机后,在matlab上构建三维数据库,数据如下:

    fingerprint(:,:,1) =
    -39 ~ -52 ~ -44 ~ -56 ~ -52 ~ -63;
    -44 ~ -38 ~ -49 ~ -52 ~ -44 ~ -58;
    -38 ~ -35 ~ -36 ~ -49 ~ -50 ~ -51.
    fingerprint(:,:,2) =
    -44 ~ -43 ~ -39 ~ -37 ~ -44 ~ -38;
    -45 ~ -43 ~ -44 ~ -40 ~ -36 ~ -28;
    -69 ~ -60 ~ -40 ~ -41 ~ -36 ~ -33.
    fingerprint(:,:,3) =
    -51 ~ -51 ~ -51 ~ -40 ~ -41 ~ -22;
    -62 ~ -56 ~ -48 ~ -51 ~ -65 ~ -31;
    -67 ~ -61 ~ -50 ~ -61 ~ -54 ~ -43.

    衰减模型建立

    RSSI的数据经信号衰减模型换算后可得到近似的距离值。三个路由器分别采集多组RSSI与distance的对应数据,数据如表:

    d(单位是分米)路由器1的rssi路由器2的rssi路由器3的rssi
    110911
    1.5181212
    2141618
    3192023
    4191717
    5211921
    6232323
    7242525
    8231919
    9251721
    10162123
    11262725
    12283026
    13252427
    14262228
    15263030
    16272529
    17262428
    18252424
    20282626
    22322929
    24263436
    26272828
    28283031
    32383533
    34272750
    36363638
    40313930
    45313239
    50433830
    55333642
    60343935

    对第一列数据拟合,得到如图\所示的结果:
    在这里插入图片描述
    拟合过程在python里实现,设定模型为: d = 2 × 1 0 − R S S I + a b d=2\times 10^{\frac{-RSSI+a}{b}} d=2×10bRSSI+a,其中,a和b为待定系数,由代码进行最小二乘法求其最优解,直至拟合函数与原有的数据最小均方误差最小,输出a与b的值。
    部分程序如下(python):

    # edit by callmiaoup
    # data 2021.4.20
    # modified 2021.7.17
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy import optimize
    
    def func(x, a, b):  # 需要拟合的函数
    return 2*100 ** ((x+a)/b)
    
    # 拟合点
    RSSI = [9.5, 15, 15, 19.5, 18, 20, 23, 24.5, 21, 21, 18.5, 26.5, 29, 24.5, 24, 28 ,26, 25, 24.5, 27, 30.5, 30, 27.5, 29, 36.5, 27, 36, 35, 31.5, 40, 34.5, 36.5, 40]
    d = [1, 1.5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 26, 28, 32, 34, 36, 40, 45, 50, 55, 60, 80]
    a4, b4 = optimize.curve_fit(func, d, RSSI, maxfev=500000)[0]
    x4 = np.arange(1, 40, 0.01)
    y4 = 2*100 ** ((x4-a4)/b4)
    plt.figure()
    plt.scatter(RSSI[:], d[:], 25, "b")
    plt.plot(x4, y4, "k-")
    plt.legend(['fit','DATA'])
    plt.xlabel('|RSSI| (dB)')
    plt.ylabel('distance (dm)')
    plt.show()
    

    运用同样的方法可求得其他2个路由器的衰减模型。解得三个路由器的衰减模型表达式,如公式:
    R S S I = − 17 − 25 l o g 10 d 2 R S S I = − 17 − 25 l o g 10 d 2 R S S I = − 17 − 25 l o g 10 d 2 RSSI=-17− 25 log_{10}\frac{d}{2}\\ RSSI=-17− 25 log_{10}\frac{d}{2}\\ RSSI=-17− 25 log_{10}\frac{d}{2}\\ RSSI=1725log102dRSSI=1725log102dRSSI=1725log102d

    数据测试

    在预设环境中实时定位时,matlab中已存入该环境的RSS指纹数据库,3个AP放置在固定位置,用户手持用户节点,用户节点周期性的发送数据,AP收到数据后将自身产生的的RSS信息传入matlab,计算数据后进行定位算法的执行并将定位结果展示出来。

    静态功率

    当各个路由器的信号发射功率不变时,即为静态功率下的定位,由matlab进行求解,实验数据来自真实的复杂的环境,求解结果如图所示:
    在这里插入图片描述
    图中圆圈代表所选测试集的真实位置,*号代表由KNN计算而来的位置,虚线连接了真实位置与计算位置,便于辨别对应的点。此方法求得的位置均方误差为0.8601,最大偏差距离为1.8028米。

    动态功率

    用更换第三台路由器的方法模拟路由器天线故障或更换设备的情况,继续沿用上述方法定位,则会造成误差明显变大,结果如图:
    在这里插入图片描述

    图中圆圈代表所选测试集的真实位置,*号代表由KNN计算而来的位置,虚线连接了真实位置与计算位置,便于辨别对应的点。此方法求得的位置均方误差为1.4598,最大偏差为2.8443米。

    重新拟合各路由器信号衰减模型的数据,得下式的结果:
    R S S I = − 17 − 25 l o g 10 d 2 R S S I = − 17 − 25 l o g 10 d 2 R S S I = − 20 − 27 l o g 10 d 2 RSSI=-17− 25 log_{10}\frac{d}{2}\\ RSSI=-17− 25 log_{10}\frac{d}{2}\\ RSSI=-20− 27 log_{10}\frac{d}{2}\\ RSSI=1725log102dRSSI=1725log102dRSSI=2027log102d
    将原有的RSS-位置指纹的定位方法更改为RSS-距离-位置指纹的方法,在matlab源码中加入距离衰减模型公式:

    fingerprint_d=2.*power(10,
    (-fingerprint-17)/25);
    

    即可批量将指数表示的信号强度批量转化为距离数组,从而由RSS指纹转变为距离指纹,修改原有算法思想,如图:
    在这里插入图片描述

    原有定位按照RSSI来作为指纹,虽然数据的采集较为方便,但是一旦有信号发射器故障,或者更换了部分发射器,整个指纹库(至少有一个维度)的所有指纹数据均需要修改,维护成本过高。但是如果将每个RSSI换算为距离,再根据距离指纹定位,可以减少人工更新指纹库的繁琐工作。
    重新获取测试集中对应路由器3的RSS,用上述方法定位的结果如图:
    在这里插入图片描述
    图中圆圈代表所选测试集的真实位置,*号代表由KNN计算而来的位置,虚线连接了真实位置与计算位置,便于辨别对应的点。此方法求得的位置均方误差为1.1934,最大偏差为2米,两项指标均优于传统的指纹定位。

    结论

    本文分别实现了基于RSS位置指纹的室内定位系统,基于RSSI与距离的非线性拟合,以及基于距离位置指纹的定位系统。主要贡献为:针对位置指纹法在实际运用中可能存在的问题,引入RSS-距离-指纹模型,改进模型计算出的位置坐标更接近实际坐标,这使得定位精度更高。

    实验结果表明,与传统的定位算法相比,该算法的定位精度显著提高9

    K邻近法分类经常被用于定位算法进行研究,但是很多人对此的研究仅仅止步于模拟与仿真,本文用实际采集的数据进行实验,用更真实的结果证明了算法的可行性。

    源代码

    拟合数据的代码:

    # edit by callmiaoup
    # data 2021.4.20
    # modified 2021.7.17
    import numpy as np
    import matplotlib.pyplot as plt
    from scipy import optimize
    
    def func(x, a, b):  # 需要拟合的函数
    return 2*100 ** ((x+a)/b)
    
    # 拟合点
    RSSI = [9.5, 15, 15, 19.5, 18, 20, 23, 24.5, 21, 21, 18.5, 26.5, 29, 24.5, 24, 28 ,26, 25, 24.5, 27, 30.5, 30, 27.5, 29, 36.5, 27, 36, 35, 31.5, 40, 34.5, 36.5, 40]
    d = [1, 1.5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 22, 24, 26, 28, 32, 34, 36, 40, 45, 50, 55, 60, 80]
    a4, b4 = optimize.curve_fit(func, d, RSSI, maxfev=500000)[0]
    x4 = np.arange(1, 40, 0.01)
    y4 = 2*100 ** ((x4-a4)/b4)
    plt.figure()
    plt.scatter(RSSI[:], d[:], 25, "b")
    plt.plot(x4, y4, "k-")
    plt.legend(['fit','DATA'])
    plt.xlabel('|RSSI| (dB)')
    plt.ylabel('distance (dm)')
    plt.show()
    

    指纹定位的代码: 下载链接.


    1. Location Based Service,基于位置的服务。 ↩︎

    2. Cai C, Gao Y, Pan L, et al. Precise point positioning with quad-constellations: GPS, BeiDou, GLONASS and Galileo[J]. Advances in space research, 2015, 56(1): 133-143. ↩︎

    3. Received Signal Strength Indicator,接收信号强度的强度指示。 ↩︎

    4. 涂维娟,郭承军. 基于机器学习的室内定位方法综述[A]. 中国卫星导航系统管理办公室学术交流中心.第十二届中国卫星导航年会论文集——S09 用户终端技术[C].中国卫星导航系统管理办公室学术交流中心:中国卫星导航学术年会组委会,2021:6. ↩︎

    5. Received Signal Strength,接收信号强度。 ↩︎

    6. Zekavat S R, Buehrer R M, Durgin G D, et al. An Overview on Position Location: Past, Present, Future[J]. International Journal of Wireless Information Networks, 2021: 1-32. ↩︎

    7. 胡晓菲.对数路径改进模型室内定位算法[J].电声技术,2015,39(06):37-39. ↩︎

    8. Ji Y, Biaz S, Pandey S, et al. ARIADNE: a dynamic indoor signal map construction and localization system[C]//Proceedings of the 4th international conference on Mobile systems, applications and services. 2006: 151-164. ↩︎

    9. Cui X, Wang M, Li J, et al. Indoor Wi-Fi Positioning Algorithm Based on Location Fingerprint[J]. Mobile Networks and Applications, 1-10. ↩︎

    展开全文
  • 分析了现有矿井目标定位方法原理及存在的问题:非测距定位中的基于射频识别技术的定位方法、基于蜂窝小区标识的定位方法和无线传感器网络定位方法只能确定目标节点的范围,定位精度较差;测距定位精度较高,但基于到达...
  • a) 基本要求(70%) i. 学习并掌握wifi FTM/RTT ... 提出或优化提高定位精度的算法; ii. 利用仿真软件(不限,例如Matlab)完成算法,给出仿真结果。 iii. 将算法做成APP,可在安卓手机上运行(此项属于额外加分项)。
  • 为了减小室内环境因素对室内无线定位的影响,提高定位精度和扩大定位区域,提出了一种新的基于SVM的WiFi室内无线定位方法。通过将室内区域划分为多个小的区域,建立每个区域RSSI(received signal strength ...
  • 关注、星标公众号,直达精彩内容来源:网络素材整理:李肖遥随着UWB技术不断完善,市场需求增加,室内定位公司迎来春天。UWB定位系统是目前业界精度最高的商用无线定位系统,可实现较高的实时定位...

    关注、星标公众号,直达精彩内容

    来源:网络素材

    整理:李肖遥

    随着UWB技术不断完善,市场需求增加,室内定位公司迎来春天。UWB定位系统是目前业界精度最高的商用无线定位系统,可实现较高的实时定位精度与定位容量,通常能够在现实环境中获取高达10cm~20cm的二维定位精度,世界大范围内开始了UWB的应用。

    UWB室内定位系统如何能够做到如此高的精度?

    下面来为大家全面解析,定位精度可达厘米级的UWB定位,不会像GPS一样把你带到沟里!相比本文要讲的UWB定位,GPS定位应该已被大家广泛熟知,因为我们生活的方方面面都离不开定位、导航!

    但是,你们有没有遇到这种情况:

    自驾游时,找停车位给带去了沼泽地?树林里又哪来的加油站?最捉急的莫过于找酒店,你让人睡沟里吗?……

    景色虽美,但不是车主要去的地方,这难道不是GPS的硬伤?

    STOP GPS ERROR.”告别错误定位。

    不同于GPS,UWB

    展开全文
  • 我的应用app需要调用GPS的位置服务,已经将应用所需要的所有权限全部打开,而且使用了wifi和4G网络,手机的耗电管理和联网管理等设置也全部为app开放,但使用标准Android接口调用的GPS位置和速度数据依然非常不准确...

     

    近期华为开发者论坛收到一位小伙伴提问:

    我的应用app需要调用GPS的位置服务,已经将应用所需要的所有权限全部打开,而且使用了wifi和4G网络,手机的耗电管理和联网管理等设置也全部为app开放,但使用标准Android接口调用的GPS位置和速度数据依然非常不准确,怎么解决呢?问题链接

    1

     

    Android原生定位优缺点分析

    提问的开发者在应用中调用的是Android原生的接口进行定位。

    Android原生定位提供GPS定位和网络定位两种模式。GPS定位支持离线定位,依靠卫星,没有网络也能定位,精度高,但功耗大,因需要开启移动设备中的GPS定位模块,会消耗较多电量;搜集卫星、计算数据工作比较耗时,通常导致初次定位较慢;且由于需要接收卫星信号,易受环境、地理位置影响,即信号的接收容易受天气,以及建筑等遮挡物的影响,隧道、山区等地信号通常较差,高耸的建筑物、密集的楼房、屋顶、墙壁,都会影响GPS接收信号导致定位不准。

    Network定位(网络定位),定位速度快,只要具备网络或者基站要求,在任何地方都可实现瞬间定位,室内同样满足;功耗小,耗电量小;但定位精度差,容易受干扰,在基站或者WiFi数量少、信号弱的地方定位质量较差,或者无法定位;必须连接网络才能实现定位。

    上述的两种定位模式都有各自的优缺点,提问的开发者在应用中调用Android原生的接口进行定位,传统的GPS定位精度只有3-7米,而我国城市主干道单一车道宽一般是3.75米,也就是说GPS无法做到车道线级定位。尤其在城市道路或峡谷中,精度会进一步下降。

    那么除了调用原生的接口获取定位以外,还有其他解决办法吗?

    华为定位服务

    华为定位服务(Location Kit)采用卫星导航系统(Global Navigation Satellite System,简称GNSS)、Wi-Fi、基站等多途径的混合定位模式进行定位,应用可快速、精准地获取用户位置信息。

    当前华为定位服务提供的主要能力包含三个部分:融合定位、活动识别和地理围栏。开发者可以根据自己的需求,调用相应的能力。

    其中活动识别功能通过加速度传感器、蜂窝网络信息、磁力计识别用户运动状态,便于通过了解用户行为来调整应用。地理围栏功能可以通过API设置感兴趣的位置区域,在指定操作(如离开、进入、驻留)发生时,手机即可及时收到一个通知。融合定位功能结合GNSS、Wi-Fi和基站位置数据,提供一套简单易用的API,可以更方便快速获取设备位置信息,实现精准定位。

    融合定位:基于多用途的融合定位,实现精准定位

    随着5G通信技术的开展,融合定位技术融合了目前市面上的所有定位方式,包括GNSS、Wifi定位、基站定位、蓝牙定位以及传感器定位,可谓定位技术集大成者。

    GNSS在首次定位时,由于要重新获取星历信息,搜星后才能进行定位。当GNSS信号弱时,可以快速进行辅助定位,增加定位成功率,实现精准定位。且可以根据手机的电量去选择合适的定位方式,在手机电量低时,避免GNSS定位产生功耗。

    2

     

    如何持续获取位置信息?

    如果希望应用可以持续获取设备位置,可以使用定位服务提供的requestLocationUpdates()接口。该接口根据入参形式的不同,将以两种不同的形式将位置信息返回。一种是通过调用已经定义的LocationCallback类中onLocationResult()回调方法返回一个包含位置信息的LocationResult对象,另一种是将位置信息置于PendingIntent扩展信息中返回。

    当应用程序不再需要接收位置更新时,应当停止位置更新,以便于降低功耗。要停止位置更新,可以调用removeLocationUpdates(),传入与requestLocationUpdates()接口相对应的LocationCallback或PendingIntent对象。这里以回调方式作为样例,代码如下。详细的参数说明请参见LocationService接口说明。

    1.设置持续定位请求参数。

    LocationRequest mLocationRequest = new LocationRequest();
    // 设置位置更新的间隔(单位为毫秒)
    mLocationRequest.setInterval(10000);
    // 设置定位类型
    mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);

    2.定义位置更新回调。

    LocationCallback mLocationCallback;        
    mLocationCallback = new LocationCallback() {        
        @Override        
        public void onLocationResult(LocationResult locationResult) {        
            if (locationResult != null) {        
                // 处理位置回调结果        
            }        
        }        
    };

    3.调用requestLocationUpdates()进行持续定位。

    fusedLocationProviderClient        
        .requestLocationUpdates(mLocationRequest, mLocationCallback, Looper.getMainLooper())        
        .addOnSuccessListener(new OnSuccessListener<Void>() {        
            @Override        
            public void onSuccess(Void aVoid) {        
                // 接口调用成功的处理        
            }        
        })
        .addOnFailureListener(new OnFailureListener() {        
            @Override        
            public void onFailure(Exception e) {        
               // 接口调用失败的处理        
            }        
        });

    4.调用removeLocationUpdates()停止位置更新。

    // 注意:停止位置更新时,mLocationCallback必须与requestLocationUpdates方法中的LocationCallback参数为同一对象。
    fusedLocationProviderClient.removeLocationUpdates(mLocationCallback)        
        // 停止位置更新成功监听回调
        .addOnSuccessListener(new OnSuccessListener<Void>() {        
            @Override        
            public void onSuccess(Void aVoid) {      
               // ...        
            }        
        })
        // 停止位置更新失败监听回调
        .addOnFailureListener(new OnFailureListener() {        
            @Override        
            public void onFailure(Exception e) {      
               // ...      
            }        
        });

    12

     

    欲了解更多详情,请参阅:

    华为定位服务官网 

    定位服务开发指南

    示例代码

     

    >>访问华为开发者联盟官网,了解更多相关内容

    >>获取开发指导文档

    >>华为移动服务开源仓库地址:GitHubGitee

    关注我们,第一时间了解华为移动服务最新技术资讯~

    展开全文
  • 位算法,以提高定位精度。在基于智能手持设备惯性传感器的行走航位推算(PDR)中,为降低惯性传感器的误差及定位误差的 累积,通过状态转换的方法识别行走周期并进行计步,提出对原始加速度数据进行预处理和根据实时加...
  • WiFi 定位功能是OneNET 继基站定位之后最新推出的一项定位服务。(编稿时仍处于灰度测试阶段) 然后我有幸参与了WiFi 定位功能的灰度测试,测试成功,在此记录一下 开始 1)为设备开启WiFi 定位功能 WiFi 定位功能...
  • 文中针对智能教室中考勤问题,提出了一种基于WiFi指纹定位技术的考勤系统,在定位中提出了一种基于缩放权重的KNN算法(Scale Weight KNN,SW-KNN),通过实验得出SW-KNN算法比经典的K最近邻法算法定位精度提高,通过...
  • WiFi定位技术功耗高,稳定性差。目前,WiFi是一种相对成熟且广泛使用的技术。近年来,许多公司在该领域进行了投资。 WiFi一种是通过移动设备的无线信号强度和三个无线网络接入点,然后使用差分算法更精确地对人和...
  • 目前WLAN技术普遍应用在了家庭、旅馆、机场等各类大型及小型建筑物内,相关的研究如雨后春笋,开发了许多能实现较高精度定位的算法,使得WI-FI室内定位成为了定位领域中最引人注目的定位技术之一。 而随着传感器技术...
  • android提高定位准确度

    千次阅读 2019-02-27 16:09:18
    高德地图app的定位采用1次/秒的定位频率,同样存在初次定位不准确的问题,核心原因是设备为定位器准备的AP源数据(伪基站、WiFi不新鲜)不准确。高德地图app尽量采用连续定位的策略,当设备在环境中获得正确的AP数据...
  •  其原理是接收机接收卫星广播,通过解析可见卫星的位置、距离等信息以及相应算法得出自己的位置信息,误差在15米范围内,当前可视卫星数量将影响定位精度,可见卫星数量越多,精度越高,实际测试中在正午定位精度较...
  • uwb高精度定位

    千次阅读 2019-11-16 10:54:04
    华星智控无线定位系统,采用先进的脉冲无线定位技术,通过在工作区域部置定位基站,检测进入生产现场的相关人员配置标签的方式,实现对进入生产现场人员的实时高精度定位,在这种复杂的应用场景下最高精度10~30cm,...
  • 【醍醐灌顶】我研究的WIFI定位技术,太实战了,我会把技术精华整理成笔记,有实际的项目,想要的仅需30元,支付后给我留言或加我微信。 应用背景 随着互联网的快速发展和智能设备的大量普及,人们对于基于位置...
  • 室内定位技术方案---Wifi、RFID、bluetooth、Zigbee

    万次阅读 多人点赞 2018-11-14 16:23:33
    室内定位技术方案  一、室内定位系统原理  国内常规定位技术有Wifi定位、RFID定位、蓝牙定位、Zigbee定位等几种方式,这几种定位方式...用户选择wifi定位标签称呼为wifi定位,选择RFID定位标签,称呼为RFID定位...
  • 基于UWB定位系统设计

    2021-01-13 00:48:06
    超宽带无线(UWB)技术是一种精确高效的无线定位技术,能够普遍应用于室内...基于参考标签的应用和TDOA算法的完美结合表明此系统克服了UWB信号发射时延的缺陷,极大的减少了计算的复杂程度,并且有效的提高定位精度
  • 在室内定位中,传统的RFID定位方法由于方法简单,无法随着室内环境的变化准确估计当前的路径损耗系数,存在受...实验表明,与传统的基于RSSI和基于ANN模型的室内定位算法相比,本算法有效提高定位精度和定位实时性.
  • 导航功用:蓝牙5.0将添加更多的导航功用,因而该技能可以作为室内导航信标或相似定位设备运用,结合wifi可以完成精度小于1米的室内定位。举个例子,如果你和小编相同是路痴的话,你可以运用蓝牙技能,在诺大的商业...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,885
精华内容 754
关键字:

如何提高wifi定位精度