基于iBeacon蓝牙模块室内定位的方法、终端设备及存储介质与流程

文档序号:17181604发布日期:2019-03-22 20:56阅读:187来源:国知局
基于iBeacon蓝牙模块室内定位的方法、终端设备及存储介质与流程

本发明涉及导航技术领域,尤其涉及基于ibeacon蓝牙模块室内定位的方法、终端设备及存储介质。



背景技术:

传统的室外导航技术(如gps导航、北斗导航等)已经相当成熟,室外的定位精度达到米级。然而,当人处于室内环境时,由于终端设备接收不到卫星信号导致定位误差极大,无法使用,使人无法得知当前所处位置及怎样快速到达自己想去的位置。



技术实现要素:

本发明要解决的技术问题在于,本发明提供的基于ibeacon蓝牙模块室内定位的方法、终端设备及存储介质,能够实现室内的高精度导航定位,从而解决传统的室外导航技术的局限问题。

为解决上述问题,本发明的一个实施例提供的一种基于ibeacon蓝牙模块室内定位的方法,由终端设备执行,所述方法包括:

采集与自身的距离小于或等于距离阈值的蓝牙设备的基本信息;

根据蓝牙设备与自身的距离,更新设备数据缓存列表;

根据所述设备缓存列表中记录的基本信息量,选择相应的定点法计算自身的当前位置;

根据所述当前位置,更新位图地图。

进一步地,所述设备数据缓存列表仅存留数量小于或等于数量阈值,且存留时间小于或等于时间阈值的基本信息;其中,所述基本信息包括设备编号、设备距离以及更新时间。

进一步地,所述根据蓝牙设备与自身的距离,更新设备数据缓存列表,具体为:

在所述设备数据缓存列表中基本信息的存留数量小于数量阈值时,直接添加当前采集的基本信息;

在所述设备数据缓存列表中基本信息的存留数量等于数量阈值,且基本信息的距离最大值大于当前采集的基本信息时,将当前采集的基本信息替换掉该基本信息。

进一步地,所述根据所述设备缓存列表中记录的基本信息量,选择相应的定点法计算自身的当前位置,具体为:

当所述基本信息量为1时,采用1点定位法计算自身的当前位置;

当所述基本信息量为2时,采用2点定位法计算自身的当前位置;

当所述基本信息量为3及以上时,采用3点定位法计算自身的当前位置。

进一步地,所述2点定位法或3点定位法的计算步骤为:

根据设备距离,依次将所述设备数据缓存列表中记录从小到大排序;

若所述记录中最小的设备距离大于第一距离阈值,则不进行计算定位;

若所述记录最小的设备距离小于第二距离阈值,则按照1点定位法计算当前位置;

在所述记录中最小的设备距离大于第二距离阈值,且小于第一距离阈值时,采用第一公式计算当前位置;所述第一公式为:

x0=x1+(x2-x1)*r1,y0=y1+(y2-y1)*r1;

其中,x1、x2和x0分别为所述设备数据缓存列表中排序前两条记录p1、p2以及所述当前位置的横坐标,y1、y2和y0分别为所述设备数据缓存列表中排序前两条记录p1、p2以及所述当前位置的纵坐标;

所述r1的计算公式为:

r1=d1*d1/(d1*d1+d2*d2);

其中,d1、d2分别为所述设备数据缓存列表中排序前两条记录p1、p2的设备距离值;

若所述基本信息量为3条及以上时,采用第二公式对当前位置进一步修正;所述第二公式为:

x=x0+(x3-x0)*r2,y=y0+(y3-y0)*r2;

其中,x0、x3和x分别为所述当前位置、第3条记录以及修正后位置的横坐标,y0、y3和y分别为所述当前位置、第3条记录以及修正后位置的纵坐标;

所述r2的计算公式为:

r2=0.5*(d1*d1+d2*d2)/(d1*d1+d2*d2+d3*d3);

其中,d1、d2和d3分别为所述设备数据缓存列表中排序前三条记录p1、p2、p3的设备距离值。

进一步地,根据所述当前位置,更新位图地图还包括修正所述当前位置,具体为:

根据所述当前位置坐标在区域图文件中查询所在区域,得到通道线段l;

以所述当前位置向l作垂线,得到垂足p0,以p0作为修正后的当前位置;

判断所述修正后的当前位置与修正前的位置是否小于预设阈值,若是,则更新p0到地图中;若否,则不更新。

进一步地,所述基于ibeacon蓝牙模块室内定位的方法,还包括绘制并保存地图数据文件,具体为:

在位图地图上绘制通道图,标记交叉点和蓝牙设备的部署点为控制点并编号,测量控制点的坐标并记录到控制点文件中;

测量各控制点连接形成的线段长度,记录到通道文件中;

根据区域左上角坐标和区域右下角坐标测量各区域位置,记录到区域图文件中。

进一步地,所述基于ibeacon蓝牙模块室内定位的方法,还包括建立地图信息模型,具体为基于所述位图地图的点、线、面进行标记和测量,建立地图信息模型。

本发明的另一个实施例提供的一种基于ibeacon蓝牙模块室内定位的终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1所述的基于ibeacon蓝牙模块室内定位方法

本发明的又一个实施例提供的一种计算机可读存储介质,所述计算机可读存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读存储介质所在设备执行如权利要求1所述的基于ibeacon蓝牙模块室内定位方法。

实施本发明实施例,具有如下有益效果:本发明的实施例提供的基于ibeacon蓝牙模块室内定位的方法、终端设备及存储介质,所述方法包括:采集与自身的距离小于或等于距离阈值的蓝牙设备的基本信息;根据蓝牙设备与自身的距离,更新设备数据缓存列表;根据所述设备缓存列表中记录的基本信息量,选择相应的定点法计算自身的当前位置;根据所述当前位置,更新位图地图。本发明能够实现室内的高精度导航定位,从而解决传统的室内导航技术的局限问题。

附图说明

图1是本发明的一个实施例提供的基于ibeacon蓝牙模块室内定位方法的流程示意图;

图2是本发明的一个实施例提供的ibeacon蓝牙模块数据采集的流程示意图;

图3是本发明的一个实施例提供的根据设备数据缓存列表选择点定位法的流程示意图;

图4是本发明的一个实施例提供的制作地图数据文件的流程示意图;

图5是本发明的一个实施例提供的制作的通道文件的具体示意图;

图6是本发明的一个实施例提供的制作的区域图文件的具体示意图;

图7是本发明的一个实施例提供的定位测试的位图地图;

图8是本发明的一个实施例提供的标序后的定位测试的位图地图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参阅图1-6。

如图1所示,本实施例提供的基于ibeacon蓝牙模块室内定位的方法,由终端设备执行,包括:

s101、采集与自身的距离小于或等于距离阈值的蓝牙设备的基本信息;

s102、根据蓝牙设备与自身的距离,更新设备数据缓存列表;

s103、根据所述设备缓存列表中记录的基本信息量,选择相应的定点法计算自身的当前位置;

s104、根据所述当前位置,更新位图地图。

具体的,对于步骤s101,数据采集由手机以及平板电脑等终端设备完成,应用程序维护一个不断更新的设备数据缓存表ddl,并剔除距离超过18米的数据,需要说明的是,该剔除最大距离可以更改,保留最多3条采集记录,供计算位置。

在具体的实施例当中,所述设备数据缓存列表仅存留数量小于或等于数量阈值,且存留时间小于或等于时间阈值的基本信息;其中,所述基本信息包括设备编号、设备距离以及更新时间。

在一个优选的实施例中,选取数量阈值为3,存留时间为5秒。

在具体的实施例当中,所述根据蓝牙设备与自身的距离,更新设备数据缓存列表,具体为:

在所述设备数据缓存列表中基本信息的存留数量小于数量阈值时,直接添加当前采集的基本信息;

在所述设备数据缓存列表中基本信息的存留数量等于数量阈值,且基本信息的距离最大值大于当前采集的基本信息时,将当前采集的基本信息替换掉该基本信息。

具体的,如图2所示,设备数据缓存列表(devicedatalist,简称ddl)存储来自ibeacon蓝牙模块的数据记录。每条记录含蓝牙模块编号id、距离d、记录时间t三个栏位。ddl最多存储3条记录。当有新模块数据到达时,其中,ddl的更新原则具体为:若ddl中的已有记录的时间已过期5秒,则删除;若新数据的d>18米,则认为误差过大,忽略本次数据;若ddl中的已有记录条数<3,则将新数据插入ddl;若ddl中的已有记录条数=3,则删除其中d值最大的一条记录,然后插入新数据。

在具体的实施例当中,如图3所示,所述根据所述设备缓存列表中记录的基本信息量,选择相应的定点法计算自身的当前位置,具体为:

当所述基本信息量为1时,采用1点定位法计算自身的当前位置;

当所述基本信息量为2时,采用2点定位法计算自身的当前位置;

当所述基本信息量为3及以上时,采用3点定位法计算自身的当前位置。

在具体的实施例当中,所述2点定位法或3点定位法的计算步骤为:

根据设备距离,依次将所述设备数据缓存列表中记录从小到大排序;

若所述记录中最小的设备距离大于第一距离阈值,则不进行计算定位;

若所述记录最小的设备距离小于第二距离阈值,则按照1点定位法计算当前位置;

在所述记录中最小的设备距离大于第二距离阈值,且小于第一距离阈值时,采用第一公式计算当前位置;所述第一公式为:

x0=x1+(x2-x1)*r1,y0=y1+(y2-y1)*r1;

其中,x1、x2和x0分别为所述设备数据缓存列表中排序前两条记录p1、p2以及所述当前位置的横坐标,y1、y2和y0分别为所述设备数据缓存列表中排序前两条记录p1、p2以及所述当前位置的纵坐标;

所述r1的计算公式为:

r1=d1*d1/(d1*d1+d2*d2);

其中,d1、d2分别为所述设备数据缓存列表中排序前两条记录p1、p2的设备距离值;

若所述基本信息量为3条及以上时,采用第二公式对当前位置进一步修正;所述第二公式为:

x=x0+(x3-x0)*r2,y=y0+(y3-y0)*r2;

其中,x0、x3和x分别为所述当前位置、第3条记录以及修正后位置的横坐标,y0、y3和y分别为所述当前位置、第3条记录以及修正后位置的纵坐标;

所述r2的计算公式为:

r2=0.5*(d1*d1+d2*d2)/(d1*d1+d2*d2+d3*d3);

其中,d1、d2和d3分别为所述设备数据缓存列表中排序前三条记录p1、p2、p3的设备距离值。

在一个优选的实施例当中,在选择相应的点定位法计算位置还包括根据分步逼近算法saa(steppedapproachalgorithm),按照实际情况对计算前、计算中、计算后进行了考虑:最短<3m者优先。即若距离某个模块在3m以内,则可以忽略其它模块的距离值;最短>8m者不计算定位。因为输入值误差太大,如果计算,则结果值可能与实际位置相去甚远;参与定位计算的蓝牙模块数量可能少于3个;输入的距离值可能是不准确的;人员位置应位于通道上;计算得到的新位置要与原位置比较距离,如果距离>5m,则可能属于信号扰动,就不要更新地图上的位置。实际测试中发现,saa算法简单、快速,符合人员移动位置的连贯性,避免了人员位置的频繁跳动造成的误差。

具体的,所述1点定位法具体为:表明当前手机只接收到一个有效的蓝牙设备信号,因此可直接根据蓝牙id查找对应的控制点编号,然后在map_poi.txt文件中找到控制点坐标,在地图上显示位置。

具体的,所述2点定位法和3点定位法具体步骤为:

步骤1,记录按距离d从小到大排序;

步骤2,若记录1的d>8m,则因为数据误差太大,本次不进行定位计算,结束;否则进入步骤3;

步骤3,若记录1的d<3m,则按照记录1执行“1点定位”算法,计算结束;否则进入步骤4;

步骤4,根据前2条记录计算位置如下,如果ddl中是2点,直接根据下列公式计算位置;否则进入步骤5;如对于p1、p2两个点:p1(x1,y1),距离值d1,p2(x2,y2),距离值d2,则r=d1*d1/(d1*d1+d2*d2),计算当前位置为:(x=x1+(x2-x1)*r,y=y1+(y2-y1)*r)。

步骤5,根据第3个点进一步修正位置,比例公式具体为:

r=0.5*(d1*d1+d2*d2)/(d1*d1+d2*d2+d3*d3);

修正新的位置坐标为(x=x+(x3-x)*r,y=y+(y3-y)*r)。

在具体的实施例当中,根据所述当前位置,更新位图地图还包括修正所述当前位置,具体为:

根据所述当前位置坐标在区域图文件中查询所在区域,得到通道线段l;

以所述当前位置向l作垂线,得到垂足p0,以p0作为修正后的当前位置;

判断所述修正后的当前位置与修正前的位置是否小于预设阈值,若是,则更新p0到地图中;若否,则不更新。

具体的,前述计算位置的结果点p,位置坐标(x,y),很可能位于通道以外的位置。此时需要修正到通道上。步骤如下:根据坐标(x,y)在map_area.txt中,查询其所在区域,得到通道线段l,从p向l作垂线,得到垂足p0,以p0作为新的位置;在更新地图时,在更新地图时,先判断一下移动距离,即上次计算位置和本次计算位置之间的距离,如果此距离明显不合理,比如大于5m,人不可能一步跨出这么大的距离,就有可能是因为蓝牙信号不稳定受到干扰造成的,此时可不更新地图上的显示,可避免地图显示上的大幅度跳跃,改善用户体验。

在具体的实施例当中,所述基于ibeacon蓝牙模块室内定位的方法,还包括绘制并保存地图数据文件,具体为:

在位图地图上绘制通道图,标记交叉点和蓝牙设备的部署点为控制点并编号,测量控制点的坐标并记录到控制点文件中;

测量各控制点连接形成的线段长度,记录到通道文件中;

根据区域左上角坐标和区域右下角坐标测量各区域位置,记录到区域图文件中。

具体的,如图4-8所示,在位图地图上画通道图,然后标记交叉点、蓝牙设备部署点的位置,并编号。测量控制点的坐标,并记录到文件map_poi.txt中。记录格式按“控制点编号、横坐标、纵坐标”,每行一个点;地图通道由控制点连接的线段组成,线段无方向性,测量各控制点连接形成的线段长度,并记录到文件map_path.txt中,其中记录格式按“控制点1编号、控制点2编号、线段程度”,每行一条线段;各段通道都能控制相邻的一部分区域,这些区域称为该道路的“控制区域”。如果计算结果位置a处于某段道路l的控制区域,那么就从a向l作垂线,以垂足z作为最终修正后的位置;测量各区域位置,并记录到文件map_area.txt中。记录格式按“控制点1编号、控制点2编号、区域左上角横坐标、区域左上角纵坐标、区域右下角横坐标、区域右下角纵坐标”,每行一块区域。

在实际应用中,所述位图地图一般可从建筑cad图中导出得到,而矢量图需要专业地图制作人员制作。而位图上就已经有通道和服务设施等标记。比如停车场内就有车位、商场内有商家。一般将蓝牙设备部署在服务设施上,目的是定位到这些地方,并从人当前位置导航到目标位置。通道由一个个点连接的线段组成。这些点称为“控制点”。控制点一般包含通道交叉点和蓝牙设备部署点2类。另外,考虑到人员一般在通道上才需要定位和导航的事实,本方法最终是将计算位置“挪至”附近的通道上。因此需要一个区域图文件,对如何“挪位”进行规定。

在具体的实施例当中,所述基于ibeacon蓝牙模块室内定位的方法,还包括建立地图信息模型,具体为基于所述位图地图的点、线、面进行标记和测量,建立地图信息模型。

本实施例提供的基于ibeacon蓝牙模块室内定位的方法、终端设备及存储介质,所述方法包括:采集与自身的距离小于或等于距离阈值的蓝牙设备的基本信息;根据蓝牙设备与自身的距离,更新设备数据缓存列表;根据所述设备缓存列表中记录的基本信息量,选择相应的定点法计算自身的当前位置;根据所述当前位置,更新位图地图。本发明能够实现室内的高精度导航定位,从而解决传统的室内导航技术的局限问题。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和变形,这些改进和变形也视为本发明的保护范围。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1