[发明专利]一种基于室内定位系统的RSSI卡尔曼滤波方法有效
申请号: | 201510587515.0 | 申请日: | 2015-09-15 |
公开(公告)号: | CN105182288B | 公开(公告)日: | 2017-09-29 |
发明(设计)人: | 孙兵;张施雨;聂琦;张新良 | 申请(专利权)人: | 北京航空航天大学 |
主分类号: | G01S5/02 | 分类号: | G01S5/02;G01S5/10 |
代理公司: | 北京永创新实专利事务所11121 | 代理人: | 赵文颖 |
地址: | 100191*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 室内 定位 系统 rssi 卡尔 滤波 方法 | ||
1.一种基于室内定位系统的RSSI卡尔曼滤波方法,包括以下几个步骤:
步骤一、搭建室内场景的蓝牙Beacon环境并构建SSMap;
具体为:
第一步,搭建室内场景;
假定该场景有M个楼层,并且每一个楼层按照W×L×H的空间分布均匀布局,其中:W是楼层的宽度,L是楼层长度,H是楼层净高,然后将每一层的水平面按照长宽均匀间距划分成A×B个坐标网格,在每一层场景的屋顶上按照星型网与链型网混合的方式等间隔地部署共计N个具有相同的信号发射功率的蓝牙Beacon,且每个蓝牙Beacon的广播信号中包含了记载其层数信息的major ID与记载其位置信息的minor ID;
第二步,构建SSMap;
搭载一个高度为h1设备接收平台,将平台依次置于每一层A×B坐标网格的中心,然后分N个通道分别对N个蓝牙Beacon进行RSSI的数据获取并记录;同时,要求在同一个坐标网格的RSSI数据获取至少需要t1的采样时间积累以获得该坐标位置处单个通道的100个的数据积累,最终,通过A×B×N×M×100的RSSI数据库建立SSMap;
第三步,计算系统状态方差与观测方差;
首先调用i通道下的SSMap的所有RSSI数据存成Pow矩阵,获取该通道下所有RSSI数据的方差,用Q(i)记录,然后用观测设备误差分度值的平方为参考值建立系统的观测方差,用R(i)记录,最后将i从1到N进行遍历;
步骤二、选取实测点,获得来自N个蓝牙Beacon的RSSI数据,分N个通道储存;
具体为:
在室内场景A×B坐标网格中选取任一坐标位置的实测点,通过客户端接收来自N个蓝牙Beacon分别的RSSI数据,在该实测点的RSSI数据获取至少需要t2的采样时间积累以获得该实测点位置处单个通道下的g个RSSI数据积累;然后计算该实测点各通道下的RSSI数据的波动最大值、波动最小值以及波动动态范围,连同RSSI数据以xml文件格式传递给后续的卡尔曼滤波器的处理;
步骤三、设计卡尔曼滤波器对接收到信号N个通道的RSSI进行滤波处理;
具体为:
第一步,卡尔曼滤波器模型建立;
系统的状态方程为:
X(i,k+1)=AX(i,k)+W(i,k)(1)
S(i,k)=CX(i,k)+V(i,k)(2)
式中,X(i,k)和X(i,k+1)为系统状态向量,分别代表着实测点分别在k时刻与k+1时刻接收信号第i个通道中待优化的RSSI估计值;S(i,k)为系统观测向量,代表着实测点在k时刻接收信号第i个通道中RSSI的观测值;而A为系统矩阵,C为系统输出矩阵;W(i,k)和V(i,k)分别为在k时刻第i个通道的系统状态噪声与观测噪声,且设W(i,k)和V(i,k)是相互独立的零均值白噪声序列,满足:
E[W(i,k)]=E[V(i,k)]=0(3)
E[W(i,k)W(i,k)T]=Q(i)(4)
E[V(i,k)V(i,k)T]=R(i)(5)
得到卡尔曼滤波器方程的预测过程:
P(i,k|k-1)=AP(i,k-1|k-1)AT+Q(i)(6)
式中,X(i,k|k-1)是第i个通道中在k时刻利用k-1时刻状态预测的结果,是第i个通道中在k时刻利用k-1时刻状态最优的结果,U(i,k)是在k时刻第i个通道中的状态控制量,而P(i,k|k-1)是对应的协方差矩阵,P(i,k-1|k-1)是对应的协方差矩阵;
列出卡尔曼滤波器方程的校正过程:
K(i,k)=P(i,k|k-1)CT[CP(i,k|k-1)CT+R(i)]-1(8)
P(i,k|k)=[I(i)-K(i,k)C]P(i,k|k-1)(10)
式中,K(i,k)为第i个通道中的卡尔曼增益;
设系统矩阵A和系统输出矩阵C均为单位阵,则系统预测过程为:
P(i,k|k-1)=P(i,k-1|k-1)+Q(i)(11)
系统校正过程为:
K(i,k)=P(i,k|k-1)[P(i,k|k-1)+R(i)]-1(13)
P(i,k|k)=[I(i)-K(i,k)]P(i,k|k-1)(15)
第二步,卡尔曼滤波器的程序实现;
首先将设备接收到的N个通道各g组RSSI数据转化为[N×g]的矩阵数据z形式读取;之后对矩阵数据进行初始化,设:
k:代表系统状态变化的时间节点;
i:代表观测的通道编码,每一个通道编码传递的数值指示了来自该通道接收到的蓝牙Beacon的RSSI;
Xhat:为[N×g]矩阵,表示对RSSI的后验估计值,即在k时刻,结合当前RSSI的测量值与k-1时刻RSSI先验估计,得到的估计值更新,对应于状态方程中的初始化时候将该矩阵第一个元素置零;
Xhatminus:为[N×g]矩阵,表示RSSI的先验估计,即在k-1时刻,对k时刻RSSI做出的估计,对应于状态方程中的X,初始化时候将该矩阵第一个元素置零;
P:为[N×g]矩阵,表示后验估计的方差,初始化时候将该矩阵第一个元素置零;
Pminus:为[N×g]矩阵,表示先验估计的方差,初始化时候将该矩阵第一个元素置零;
K:为[N×g]矩阵,表示卡尔曼增益量,初始化时候将该矩阵第一个元素置零;
针对第i个通道,将第i个通道中xhat(i,1)赋值为输入信号对应通道的第一个值,再将该通道中P(i,1)赋值为1,矩阵数据初始化完成;
在同一个通道i中,系统预测方程:
xhatminus(i,k)=xhat(i,k-1)(16)
Pminus(i,k)=P(i,k-1)+Q(i)(17)
系统校正方程:
K(i,k)=Pminus(i,k)/(Pminus(i,k)+R(i))(18)
xhat(i,k)=xhatminus(i,k)+K(i,k)*(z(i,k)-xhatminus(i,k))(19)
P(i,k)=(1-K(i,k))*Pminus(i,k)(20)
将k从2到g进行遍历,得出第i个通道RSSI后验估计值随着时刻点的变化,即反应了卡尔曼滤波效果,最后将i从1到N进行遍历,得到各个通道RSSI卡尔曼滤波效果,作图输出该实测点位置处各个通道蓝牙Beacon RSSI经过卡尔曼滤波处理后的效果图;
第三步,比较卡尔曼滤波前后该实测点处RSSI动态范围变化;
根据滤波前的N个通道RSSI数据,滤波后的N个通道RSSI数据,输出卡尔曼滤波前后N个通道分别的最大值、最小值以及其波动的动态范围;
最后,将卡尔曼滤波处理后的RSSI通过距离与信号强度的关系式解算出RSSI对应的距离,对于每个通道的蓝牙Beacon解算出其距离上限与距离下限,分别对应该通道下RSSI最大值与最小值,得到实测点在搭建场景中距离位置范围。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京航空航天大学,未经北京航空航天大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510587515.0/1.html,转载请声明来源钻瓜专利网。