本发明属于移动通信、室内定位技术领域,具体涉及一种基于地图信息筛选匹配的众包指纹库构建方法。
背景技术:
随着无线通信技术的快速发展,同时由于移动终端的使用逐渐增多,从技术成熟与大规模应用的现实角度考虑,无线局域网(wirelesslocalareanetworks,wlan)定位成为当前主流、也是未来最具发展潜力的室内定位方法之一。
基于位置指纹的定位技术无需事先知道采集环境中的无线接入点(accesspoint,ap)的传播参数和位置坐标,而是通过建立特征库来进行位置匹配。由于接收信号强度(receivedsignalstrength,rss)值在室内的复杂性,通常不存在两个位置具有相似的rss特征的情况,因此rss可以作为位置指纹来实现室内定位。指纹定位一般分为离线阶段和在线阶段,在离线阶段在室内可达区域均匀规划采样节点,之后采集节点处的ap信号特征,建立位置——特征指纹库。在线阶段系统将移动终端的实时信号特征扫描结果与指纹库中的指纹进行比对,寻找相似度最高的节点作为定位结果。但是离线阶段指纹采样需要很大的人力和时间开销,制约了定位技术的大规模普及,在大型建筑中的应用较为困难。
另外,由于智能终端的发展,使得各种传感器如加速度传感器、陀螺仪、地磁传感器等尺寸越来越小,功能也越来越强大。因此可以使用行人航迹推测(pedestriandeadreckoning,pdr)算法进行行人轨迹的定位。现有技术考虑运用pdr方法构建无线电地图,但pdr技术的缺点主要在于误差的累积特性,单独使用时效果很差,并且在定位时需要知道精确的初始位置,这在实际中,比较难以获得。在不知道该信息的情况下,pdr轨迹采样位置仅仅是相对位置而不是绝对位置,其不能用于构建无线电地图;pdr技术能在连续行走过程中推断每步位置,但需要已知起点且随时间推移位置的累计误差大,无法精确构建指纹数据库的问题。
技术实现要素:
本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种基于地图信息筛选匹配的众包指纹库构建方法,无需定点采集数据,能够在任意行走路线中匹配每步位置,且无需额外知道起点信息,从而达到快速精确构建离线指纹库的目的,有效减少了部署成本,解决传统人工离线定点采集数据构建指纹数据库费时费力。
本发明采用以下技术方案:
一种基于地图信息筛选匹配的众包指纹库构建方法,包括以下步骤:
s1、在道路任意位置上,保持均匀步速,连续采集传感器数据以及对应的各ap的接收信号强度样本,重复多次后,选择一部分路径做为离线训练数据,另一部分作为在线测试数据;
s2、利用行人航位推测算法对步骤s1采集得到的传感器数据进行步数检测,并对陀螺仪数据处理,得到对应步的方向;
s3、对步骤s2得到的陀螺仪方向进行地图方向匹配及修正,作为每步的前进方向;
s4、提取地图上可行走区域和关键点区域的位置坐标,以及关键点可行进方向;
s5、在步骤s4得到的所有关键点区域上撒点,利用步骤s2确定的步数以及步骤s3确定的前进方向信息,结合地图匹配对应的路线,筛选出符合标准的所有粒子;
s6、反向计算步骤s5得到粒子的起点位置,将符合要求的粒子位置作为第一步的起点;
s7、以步骤s6确定的起点位置为中心,随机生成粒子,采用粒子滤波算法得到步骤s1采集的传感器数据所对应的每步位置;
s8、利用步骤s7得到的每步位置,匹配对应路径中每个时刻采集的所有ap接收信号强度样本的对应位置,将各对应位置与对应时刻的ap接收信号强度样本作为一条记录对,记为
具体的,步骤s2中,行人航位推测算法检测出的每步中,设第k步内共有n个采样点,则对这n个采样点的陀螺仪积分值θ1,θ2,…,θn求取平均值
其中,
具体的,步骤s3具体为:
s301、对步骤s2得到的每步陀螺仪方向
s302、对步骤s301修正后的每步陀螺仪方向
s303、将第i个粒子在第k步的绝对方向
s304、在正常方向比对之前,先对360°方向单独进行一次匹配,最终所得到每步的方向取步骤s303正常比对的结果
s305、对由步骤s304得到的每步实际行走方向
进一步的,步骤s305具体为:
当所匹配出的第k步的方向
min(|k-turnstep|)>thrturn
其中,thrstraight是直行的判断阈值,turnstep是所有转弯步序列号,thrturn是转弯步的容忍门限阈值;当同时满足上述两个条件时,将第k步的方向
具体的,步骤s4具体为:
s401、依据地图rgb颜色,分别提取地图上可行走区域位置坐标cango=(cangox,cangoy)和关键点区域位置坐标keypoint=(keypointx,keypointy);
s402、依据地图道路宽度信息,设置一个路宽门限roadwidth,对每个关键点,沿所有道路方向mapdirection各自行进roadwidth步,如果每步均在可行走区域cango范围内,则记下所有符合的道路方向作为该关键点的可通行方向keydir。
具体的,步骤s5具体为:
s501、在步骤s4得到的所有关键点区域上撒点作为初始点位置,利用步骤s2所得到的步数以及步骤s3得到的对应步方向信息,采用pdr位置更新公式依次更新从第一个转弯步到最后一步之间所有粒子位置信息;
s502、在步骤s501每步更新位置的过程中,对第i个粒子在第k步的位置,若
s503、按照步骤s501依次更新位置,直到方向发生改变,发生转弯进入下一段路径时,停止继续更新位置,对上述有撞墙情况的路段重新进行整段平移修正;
s504、当candidateend存在的情况下,对从candidatebegin中的起点出发,candidateend为终点所连接的线段,符合地图道路线行进方向的线段,再选取disbegin中最小的值所对应的候选起点candidatebegin作为最终选定的获胜关键点winbegin;
s505、计算在当前路段通行方向上,经过关键点winbegin的直线,以及与当前路段垂直的另一条道路方向上,经过起点即第t步的直线,两条直线的交点intersection即为所求的第一步修正位置;
s506、计算整体需要平移的距离shift,即交点intersection与起点第t步
s507、对起点到终点的即第t步到第q步所有位置,整体加上平移距离shift,即为更新后的位置;对更新后的位置集合,依次计算是否属于cango范围内,若属于,则score加1,否则记为撞墙;
当撞墙超过5次时,则直接结束该段粒子后续所有步的位置更新过程,跳转到步骤s501进行下一个粒子的位置更新过程;当撞墙不超过5次,则以修正后的路段终点继续开始该粒子后续所有步的位置更新过程;
s508、依次对所有粒子位置更新完成后,对所有粒子的score进行排序,选取score满足要求的对应粒子作为可能的起点集合maystartindex。
进一步的,步骤s503中,对撞墙步k,依次比较
设置与关键点的最大距离门限keypointradius,关键点的可通行方向keydir;当满足以下两个条件:
disbegin≤keypointradius
则将所有对应的关键点keypoint作为候选起点candidatebegin;
当candidatebegin存在的情况下,假设最后一步为第q步,对第q步的位置
当满足以下两个条件:
disend≤keypointradius
则将所有对应的关键点keypoint作为候选终点candidateend。
进一步的,步骤s504中,当candidateend不存在的情况下,直接选取disbegin中最小的值所对应的候选起点candidatebegin作为最终选定的获胜关键点winbegin。
具体的,步骤s6中,对由步骤s508得到的可能的起点集合maystartindex,依照如下公式:
依次反向倒推计算到第一步的位置,并同时计算每步的位置是否任然属于cango范围内,若满足,则记下粒子反向倒推出的第一步位置作为所匹配的路段起点位置maystartposition。
具体的,步骤s8中,根据步骤s7得到的每步位置,依照每步位置对应的时间,以及所采集到的所有ap的接收信号强度样本的对应时间,利用线性插值,计算所有ap的接收信号强度样本的对应位置(x,y),并以位置(x,y)和对应的ap的接收信号强度样本rssi1,rssi2,…,rssin为一对,构建离线数据库。
与现有技术相比,本发明至少具有以下有益效果:
本发明一种基于地图信息筛选匹配的众包指纹库构建方法,通过逐步对陀螺仪信息以及地图相关信息的处理修正,利用粒子计分以及两层筛选的方式获取最优位置,再由粒子滤波得到的位置线性插值构建离线指纹库,每步环节的正确性保证了最终得到的离线指纹库的正确。
进一步的,步骤s2对陀螺仪数据得到的角度信息,采用圆周平均而非算数平均的方式计算平均值,能够更为准确的计算出正确的平均值,避免由于0°和360°这样的数据所带来的误差。
进一步的,步骤s3对陀螺仪数据进行与地图可行进方向的硬匹配,可以减少由于陀螺仪累积误差导致的方向角偏移现象。
进一步的,步骤s305对所匹配出的方向利用转弯以及直行信息进行修正,能够减少由于方向角的偏差所导致的硬匹配错误。
进一步的,步骤s4提取了关键点位置及其可通行方向,一是可以缩小初始起点撒点的区域范围,快速匹配路线对应位置,二是关键点的方向信息可以辅助匹配过程中的位置修正。
进一步的,步骤s5通过对所有粒子位置进行更新与修正后计分的方式,筛选出最优粒子,能够快速且较为准确的获得正确的位置。
进一步的,步骤s503对撞墙的路段进行整段平移修正而非每步位置单独修正,是考虑到了路段的整体性,对比于单步修正更为合理,且能够较为准确的匹配出正确路径。
进一步的,步骤s504对路段修正过程中利用到的关键点进行了头尾两重筛选,可以相对正确的保证所选的关键点是对的。
进一步的,步骤s6通过反向递推路段起点位置,一是可以进一步验证由s5所筛选出的粒子位置的正确性,二是也可以得到正确的路段起点。
进一步的,步骤s8利用时间关系进行线性插值,可以相对正确的匹配采样时刻的对应位置,构建较为准确的离线指纹库。
综上所述,本发明通过对地图信息的提取利用,快速准确的匹配出路径对应的位置,从而构建对应的离线指纹库。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
图1为本发明方法的定位实现过程框图;
图2为陀螺仪方向匹配及修正算法流程图;
图3为匹配轨迹起点流程图;
图4为测试环境平面图。
具体实施方式
本发明提供了一种基于地图信息筛选匹配的众包指纹库构建方法,利用智能手机中的惯性传感器推测行人运动信息,并结合地图障碍物的限制,最终通过两层筛选,唯一的确定轨迹起点,并通过粒子滤波匹配路径每步位置。结合行走过程中所收集的rss数据,从而快速且准确的构建离线指纹库,辅助在线定位。与传统的定点采集构建指纹库方式相比,本发明能够更为快速且密集的构建指纹库,定位精度也更高。
请参阅图1,本发明一种基于地图信息筛选匹配的众包指纹库构建方法,包括以下步骤:
s1、采集传感器数据;
在道路任意位置上,以均匀步速行走一段距离,手机连续采集这段过程中的各传感器数据以及对应的各ap的接收信号强度样本rssi1,rssi2,…,rssin,其中,n为样本数。重复行走数十次,要求能覆盖所有可通行道路即可,分别选择样本做为离线训练数据和在线测试数据。
s2、对步骤s1采集得到的传感器数据利用行人航位推测算法(pdr算法)进行步数检测,并对陀螺仪数据处理以得到对应步的方向;
对pdr算法所检测出的每步,设第k步内共有n个采样点,则对这n个采样点的陀螺仪积分值θ1,θ2,…,θn求取平均值
其中,
s3、对步骤s2所得到的陀螺仪方向进行地图方向匹配及修正作为每步的前进方向;
s301、对步骤s2所得到的每步陀螺仪方向
s302、对步骤s301所得到的修正后的每步陀螺仪方向
s303、将第i个粒子在第k步的“绝对方向”
s304、另外,由于0°与360°实际上是同一个方向,而所存储的道路方向mapdirection中并未包含360°,因此需要在正常方向比对之前,先对360°方向单独进行一次匹配,最终所得到每步的方向取步骤s303正常比对的结果
s305、对由步骤s304所得到的每步实际行走方向
具体操作为:当所匹配出的第k步的方向
min(|k-turnstep|)>thrturn
其中,thrstraight是直行的判断阈值,turnstep是所有转弯步序列号,thrturn是转弯步的容忍门限阈值。
当同时满足上述两个条件时,将第k步的方向
s4、提取地图上可行走区域和关键点区域的位置坐标以及关键点可行进方向;
s401、依据地图rgb颜色,分别提取地图上可行走区域位置坐标cango=(cangox,cangoy)和关键点区域位置坐标keypoint=(keypointx,keypointy);
s402、提取每个关键点可通行方向。具体做法为,依据地图道路宽度信息,设置一个路宽门限roadwidth,对每个关键点,沿所有道路方向mapdirection各自行进roadwidth步,如果每步均在可行走区域cango范围内,则记下所有符合的道路方向作为该关键点的可通行方向keydir。
s5、在步骤s4得到的所有关键点区域上撒点,利用步骤s2所得到的步数以及步骤s3得到的方向信息结合地图匹配对应的路线,筛选出符合标准的所有粒子;
s501、在步骤s4得到的所有关键点区域上撒点作为初始点位置,利用步骤s2所得到的步数以及步骤s3得到的对应步方向信息,采用pdr位置更新公式依次更新从第一个转弯步到最后一步之间所有粒子位置信息,计算公式如下:
其中,
s502、在步骤s501每步更新位置的过程中,对第i个粒子在第k步的位置,若
s503、按照步骤s501依次更新位置,直到方向发生改变,发生转弯进入下一段路径时,停止继续更新位置,对上述有撞墙情况的路段重新进行整段平移修正;
具体做法为:对撞墙步k,依次比较
设置与关键点的最大距离门限keypointradius,关键点的可通行方向keydir。
当满足以下两个条件:
disbegin≤keypointradius
则将所有对应的关键点keypoint作为候选起点candidatebegin。当candidatebegin存在的情况下,假设该段的最后一步为第q步,对第q步的位置
当满足以下两个条件:
disend≤keypointradius
则将所有对应的关键点keypoint作为候选终点candidateend;
s504、当candidateend存在的情况下,对从candidatebegin中的起点出发,candidateend为终点所连接的线段,符合地图道路线行进方向的线段,再选取disbegin中最小的值所对应的候选起点candidatebegin作为最终选定的获胜关键点winbegin;
当candidateend不存在的情况下,直接选取disbegin中最小的值所对应的候选起点candidatebegin作为最终选定的获胜关键点winbegin;
s505、计算出该段的第一个修正位置;
计算在当前路段通行方向上,经过winbegin的直线,以及与当前路段垂直的另一条道路方向上,经过该段起点即第t步的直线,两条直线的交点intersection即为所求的第一步修正位置;
s506、计算该段整体需要平移的距离shift,即交点intersection与该段起点第t步
s507、对该段起点到终点的即第t步到第q步所有位置,整体加上平移距离shift,即为更新后的位置;对更新后的位置集合,依次计算是否属于cango范围内,若属于,则score加1,否则记为撞墙,当撞墙超过5次时,则直接结束该段粒子后续所有步的位置更新过程,跳转到步骤s501进行下一个粒子的位置更新过程;如若撞墙不超过5次,则以修正后的路段终点继续开始该粒子后续所有步的位置更新过程;
s508、依次对所有粒子位置更新完成后,对所有粒子的score进行排序,选取score满足要求的对应粒子作为可能的起点集合maystartindex。
s6、对步骤s5所得到的粒子,反向计算起点位置,符合要求则保留该粒子的位置作为第一步的起点;
对由步骤s508得到的可能的起点集合maystartindex,依照如下公式:
依次反向倒推计算到第一步的位置,并同时计算每步的位置是否任然属于cango范围内,若满足,则记下该粒子反向推出的第一步位置作为所匹配到的该路段的起点位置maystartposition。
s7、以步骤s6所得到的起点位置为中心,随机生成与道路宽度一致的半径范围内的粒子,采用粒子滤波算法得到步骤s1采集的路径传感器数据所对应的每步位置;
s8、利用步骤s7得到的每步位置,匹配该路径中采集到的所有ap的接收信号强度样本的对应位置,构建离线数据库,利用wknn算法计算在线测试数据的位置。
s801、由步骤s7得到的每步位置,依照每步位置对应的时间,以及所采集到的所有ap的接收信号强度样本的对应时间,利用线性插值,计算所有ap的接收信号强度样本的对应位置(x,y),并以位置(x,y)和对应的ap的接收信号强度样本rssi1,rssi2,…,rssin为一对,构建离线数据库。位置的计算按如下公式:
其中,t为一个接收信号强度样本的采集时间,t1为与t差值最小的对应步的时间,(x1,y1)为该步的位置,t2为与t差值第二小的对应步的时间,(x2,y2)为该步的位置;
s802、利用步骤s801构建的离线指纹库,采用传统的wknn算法计算在线测试数据的位置。
对在线测试阶段所采集到的一个ap接收信号强度向量集合p=(p1,p2,…,pw),pj表示来自第j个ap的信号强度值,计算p与离线指纹库中的m条指纹rssi(i=1,2,…,m)间的欧式距离,其中
其中,w表示离线指纹与在线测试阶段接收到的信号强度向量间ap的交集个数
将所有指纹按照欧式距离进行排序,dis(p,rssi1)≤dis(p,rssi2)≤…≤dis(p,rssim),其中,ij∈{1,2,…,m},ij表示欧式距离排在第j位的指纹的对应序号。
选取欧式距离最小的前k个离线指纹{ij,j=1,2,...,k},这k个离线指纹对应的位置坐标集合为
则最终用户的估计位置表示为:
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中的描述和所示的本发明实施例的组件可以通过各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
请参阅图4,为一个典型的购物商场,环境面积为35.2m×106.2m,信号采集终端为android智能手机,具体操作过程为:
1)采集传感器数据
在道路任意位置上,预先规划好数条路径,保证覆盖到商场所有可通行路段即可,路径长度从118m到236m不等。在这些路径上,以均匀步速行走,手机连续采集这段过程中的各传感器数据以及对应的各ap的接收信号强度样本rssi1,rssi2,…,rssin,其中,n为样本数。重复行走数十次,自行选择一部分路径做为离线训练数据,另一部分作为在线测试数据;
2)对步骤1)采集得到的传感器数据利用行人航位推测算法(pdr算法)进行步数检测,并对陀螺仪数据利用圆周平均的方式处理以得到对应步的方向。对pdr算法所检测出的第k步,设共有n个采样点,则以这n个采样点的陀螺仪积分值θ1,θ2,…,θn的平均值
3)将步骤2)所得到的每步陀螺仪方向
4)将步骤3)所得到的修正后的每步陀螺仪方向
5)由于0°与360°实际上是同一个方向,而所存储的道路方向mapdirection中并未包含360°,因此需要在正常方向比对之前,先对360°方向单独进行一次匹配,计算第i个粒子在第k步的“绝对方向”
6)对由5)所得到的每步实际行走方向
min(|k-turnstep|)>thrturn
其中,thrstraight是直行的判断阈值,实验中取thrstraight=10,turnstep是所有转弯步序列号,thrturn是转弯步的容忍门限阈值,实验中取thrturn=2。当同时满足上述两个条件时,将第k步的方向
7)提取地图上可行走区域和关键点区域的位置坐标以及关键点可行进方向。依据地图中不同区域的rgb颜色值,分别提取地图上可行走区域位置坐标cango=(cangox,cangoy)和关键点区域位置坐标keypoint=(keypointx,keypointy),本实验环境中关键点位置共有24个;
8)提取每个关键点可通行方向。具体做法为,依据地图道路宽度信息,设置一个路宽门限roadwidth,实验中取roadwidth=5。对每个关键点,沿所有道路方向mapdirection各自行进roadwidth步,如果每步均在可行走区域cango范围内,则记下所有符合的道路方向作为该关键点的可通行方向keydir;
9)在步骤8)得到的所有关键点区域上撒点,共计24×4=96个粒子。利用步骤2)所得到的步数以及步骤6)得到的方向信息结合地图匹配对应的路线,计算各粒子的得分score。
以这96个粒子位置为初始点位置,采用pdr位置更新公式依次更新从第一个转弯步到最后一步之间所有粒子位置信息;在每步更新位置的过程中,对第i个粒子在第k步的位置,若
依次更新位置,直到方向发生改变,发生转弯进入下一段路径时,停止继续更新位置,对上述有撞墙情况的路段重新进行整段平移修正。具体做法为,对撞墙步k,依次比较
当满足以下两个条件:
disbegin≤keypointradius
则将所有对应的关键点keypoint作为候选起点candidatebegin。当candidatebegin存在的情况下,假设该段的最后一步为第q步,对第q步的位置
disend≤keypointradius
则将所有对应的关键点keypoint作为候选终点candidateend;
当candidateend存在的情况下,对从candidatebegin中的起点出发,candidateend为终点所连接的线段,符合地图道路线行进方向的线段,再选取disbegin中最小的值所对应的候选起点candidatebegin作为最终选定的获胜关键点winbegin;当candidateend不存在的情况下,直接选取disbegin中最小的值所对应的候选起点candidatebegin作为最终选定的获胜关键点winbegin;
计算在当前路段通行方向上,经过winbegin的直线,以及与当前路段垂直的另一条道路方向上,经过该段起点即第t步的直线,两条直线的交点intersection,即为所求的第一步修正位置。计算该段整体需要平移的距离shift,即交点intersection与该段起点第t步
对该段起点到终点的即第t步到第q步所有位置,整体加上平移距离shift,即为更新后的位置,对更新后的位置集合,依次计算是否任然属于cango范围内,若属于,则score加1,否则记为撞墙,当撞墙超过5次时,则直接结束该段粒子后续所有步的位置更新过程,进行下一个粒子的位置更新过程;如若撞墙不超过5次,则以修正后的路段终点继续开始该粒子后续所有步的位置更新过程。
10)依次对所有粒子位置更新完成后,对所有粒子的score进行排序,选取score满足要求如下:与该段路线对应的总步数差值不超过5。则对应粒子作为可能的起点集合maystartindex。
对可能的起点集合maystartindex,反向计算起点位置,符合要求则保留该粒子的位置最为第一步的起点,依次反向倒推计算到第一步的位置,并同时计算每步的位置是否任然属于cango范围内,若满足,则记下该粒子反向推出的第一步位置作为所匹配到的该路段的起点位置maystartposition。
11)以步骤10)所得到的的起点位置为中心,随机生成5m半径内的100个粒子,采用粒子滤波算法得到步骤1)采集的离线传感器数据所对应的每步位置;
12)利用步骤11)得到的每步位置,匹配该路径中采集到的所有ap的接收信号强度样本的对应位置,构建离线数据库。依照每步位置对应的时间,以及所采集到的所有ap的接收信号强度样本的对应时间,利用线性插值,计算所有ap的接收信号强度样本的对应位置(x,y),并以位置(x,y)和对应的ap的接收信号强度样本rssi1,rssi2,…,rssin为一对,构建离线数据库;
13)利用12)构建的离线指纹库,采用传统的wknn算法计算在线测试数据的位置。
表1
本实施例的定位结果如表1所示,对比方法为通过传统定点采集方式构建的指纹库进行定位;从表1可以看出,本发明的平均定位误差和95%定位误差均有明显降低,证明本发明可以有效提升定位系统的平均精度。
综上所述,本发明一种基于地图信息筛选匹配的众包指纹库构建方法,通过对地图信息包括关键点以及道路可行进方向等的利用,采用两层筛选打分机制,快速匹配一条路径的真实对应位置,无需单步采集也不需知道路径的起点位置信息,就能够快速准确的构建离线指纹库。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。