法律状态公告日
法律状态信息
法律状态
2023-08-01
专利实施许可合同备案的生效 IPC(主分类):G01S 5/02 专利申请号:2015105875150 专利号:ZL2015105875150 合同备案号:X2023990000710 让与人:北京航空航天大学 受让人:北京强网科技有限公司 发明名称:一种基于室内定位系统的RSSI卡尔曼滤波方法 申请日:20150915 申请公布日:20151223 授权公告日:20170929 许可种类:普通许可 备案日期:20230714
专利实施许可合同备案的生效、变更及注销
2017-09-29
授权
授权
2016-01-20
实质审查的生效 IPC(主分类):G01S5/02 申请日:20150915
实质审查的生效
2015-12-23
公开
公开
技术领域
本发明涉及室内精确定位领域,提出一种基于室内定位系统的RSSI(ReceivedSignal StrengthIndication接收的信号强度指示)卡尔曼滤波方法。
背景技术
室内定位是指在室内环境中实现位置定位,主要采用无线通讯、基站定位、惯导定位等 多种技术集成形成一套室内位置定位体系,从而实现人员、物体等在室内空间中的位置监控。 常见的室内无线定位的技术有:Wi-Fi、蓝牙、红外线、超宽带、RFID(RadioFrequency Identification射频识别)、ZigBee(紫蜂)和超声波。然而Wi-Fi信号容易受到其他信号 干扰,红外信号传输距离短容易被墙壁等障碍物干扰的特点限制了它们在传统移动终端上的 应用;而超带宽、RFID、ZigBee和超声波信号在现有的移动终端中暂时难以搭载。因而综 合性价比和可行性分析,北京乐高乐华有限公司开发了基于蓝牙信号的室内定位导航 STARnet基础网络系统。就如同GPS导航需要向近地轨道发射几十颗信号传输卫星一样, STARnet系统也是通过铺设全面覆盖的蓝牙Beacon来实现精确定位和导航服务。用户在客 户端安装了室内定位的软件后,将接收到来自于附近蓝牙Beacon发出的信号,通过对该信 号的RSSI进行分析进而解算出用户在室内的精确位置。然而客户端接收到的每个Beacon 的RSSI受到复杂室内电磁环境的影响,存在很大的波动,进而影响到客户端对室内精确位 置的估算,使得整个定位系统稳定性下降。
发明内容
本发明的目的是为了解决室内定位客户端接收到的蓝牙信号受室内电磁环境干扰波动动 态范围过大的问题,通过将客户端接收到的来自各个Beacon的RSSI进行卡尔曼滤波处理, 达到减小其动态范围的目的,进而提高室内定位的稳定性。本发明首先需要搭载了一个室内 定位的实验场景,并将此场景均匀划分成坐标网格;然后按照星型网与链型网混合的方式在 该场景内布置N个蓝牙Beacon;首先通过设备客户端在试验场景中各个坐标位置分别接收 来自N个蓝牙Beacon的信号并制作成SSMap(SignalStrengthMap信号强度地图)数 据库,根据SSMap数据库信息获得系统状态方差和距离与信号强度解算关系式;然后进入 实测阶段,在室内任意位置通过设备客户端接收来自N个Beacon的信号,将这些信号RSSI 分N个通道储存后设计卡尔曼滤波器进行滤波处理;最后将卡尔曼滤波后的RSSI通过距离 与信号强度关系式解算出当前设备客户端距离各个Beacon位置,通过三点定位法实现定位。
本发明的一种基于室内定位系统的RSSI卡尔曼滤波方法,包括以下几个步骤:
步骤一、搭建室内场景的蓝牙Beacon环境并构建SSMap;
步骤二、选取实测点,获得来自N个蓝牙Beacon的RSSI数据,分N个通道储存;
步骤三、设计卡尔曼滤波器对接收到信号N个通道的RSSI进行滤波处理。
本发明的优点在于:
本发明克服了室内电磁环境影响所带来的客户端接收到各个蓝牙Beacon的RSSI波动 动态范围大的缺点,通过控制各通道RSSI的动态范围,有效地提高了室内定位的精度。
附图说明
图1是本发明的系统流程图;
图2是本发明所搭建的室内场景图;
图3是本发明中minor30Beacon在整个室内环境中的SSMap分布;
图4是本发明中网格坐标(16,9)位置处第1通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图5是本发明中网格坐标(16,9)位置处第2通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图6是本发明中网格坐标(16,9)位置处第3通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图7是本发明中网格坐标(16,9)位置处第4通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图8是本发明中网格坐标(16,9)位置处第5通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图9是本发明中网格坐标(16,9)位置处第6通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图10是本发明中网格坐标(16,9)位置处第7通道蓝牙BeaconRSSI经过卡尔曼滤波处 理前后的效果图;
图11是本发明中网格坐标(16,9)位置处第8通道蓝牙BeaconRSSI经过卡尔曼滤波处 理前后的效果图。
具体实施方式
下面将结合附图和实施例对本发明作进一步的详细说明。
本发明是一种基于室内定位系统的RSSI卡尔曼滤波方法,其流程图如图1所示,包括 以下几个步骤:
步骤一、搭建室内场景的蓝牙Beacon环境并构建SSMap。
具体为:
第一步,搭建室内场景。
假定该场景有M个楼层,并且每一个楼层按照W×L×H的空间分布均匀布局,其中:W 是楼层的宽度,L是楼层长度,H是楼层净高;然后将每一层的水平面按照长宽均匀间距划 分成A×B个坐标网格;在每一层场景的屋顶上按照星型网与链型网混合的方式等间隔地部署 共计N个具有相同的信号发射功率的蓝牙Beacon,且每个蓝牙Beacon的广播信号中包含 了记载其层数信息的majorID与记载其位置信息的minorID。
第二步,构建SSMap。
搭载一个高度为h1设备接收平台,将平台依次置于每一层A×B坐标网格的中心,然后分 N个通道分别对N个蓝牙Beacon进行RSSI的数据获取并记录;同时,要求在同一个坐标 网格的RSSI数据获取至少需要t1的采样时间积累以获得该坐标位置处单个通道的100个的数 据积累;这样以来,通过A×B×N×M×100的RSSI数据库可以有效建立SSMap。
第三步,计算系统状态方差与观测方差。
首先调用i通道下的SSMap的所有RSSI数据存成Pow矩阵,用Matlab中var函数 求得该通道下所有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个通道中的卡尔曼增益,它的作用是使得后验估计误差协方差最小。
具体到室内定位对蓝牙BeaconRSSI进行滤波处理的问题上,由于系统设计对同一个 实测点接收信号处理有t2采样时间g个RSSI数据的积累,因而在同一个实测点位置处系统 状态参数不发生变化,这就意味着系统矩阵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)
第二步,卡尔曼滤波器的程序实现。本发明用Karman_Filter.m程序实现了对搭建的 室内环境中任何给定位置设备接收到的RSSI信号卡尔曼滤波的处理。首先利用Matlab中 的xmlread函数将设备接收到的N个通道各g组RSSI数据转化为[N×g]的矩阵数据z形式 读取;之后对矩阵数据进行初始化,需要说明的是这里程序各初值的意义:
字母k代表系统状态变化的时间节点,字母i代表观测的通道编码,每一个通道编码传递 的数值指示了来自该通道接收到的蓝牙Beacon的RSSI。
xhat是[N×g]矩阵,表示对RSSI的后验估计值,即在k时刻,结合当前RSSI的测量 值与k-1时刻RSSI先验估计,得到的估计值更新,对应于状态方程中的X,初始化时候将 该矩阵第一个元素置零;
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卡尔曼滤波效果; 作图输出该实测点位置处各个通道蓝牙BeaconRSSI经过卡尔曼滤波处理后的效果图。
第三步,比较卡尔曼滤波前后该实测点处RSSI动态范围变化。调用judgeparaments.m 文件,其中preinput配置滤波前的N个通道RSSI数据(单位dB),folinput配置滤波后 的N个通道RSSI数据(单位dB);程序输出卡尔曼滤波前后N个通道分别的最大值、最 小值以及其波动的动态范围。
最后,将卡尔曼滤波处理后的RSSI通过距离与信号强度的关系式解算出RSSI对应的 距离。显然对于每个通道的蓝牙Beacon会解算出其距离上限与距离下限(分别对应该通道 下RSSI最大值与最小值),再利用测量学中的空间距离后方交会法可以推算出实测点在搭建 场景中距离位置范围。
实施例:
本发明是一种基于室内定位系统的RSSI卡尔曼滤波方法,借助北京乐高乐华技术有限 公司搭载的平台,其具体实施例如下:
步骤一、搭建室内场景的蓝牙Beacon环境并构建SSMap。
具体为:
第一步,搭建室内场景。如图2所示,该场景区域采用13m×7.579m×2.78m的空间布局, 首先将室内场景水平面按照0.5m×0.5m的间距划分为26×16的二维平面坐标系,在此坐标系 的基础上于场景的顶部设置8个蓝牙Beacon,其具体平面分布参数如下所示。
需要说明的是这8个Beacon具有相同的的uuid编号(即 F62D3F65-2FCB-AB76-00AB-681819202122),作为搭建平台系统的硬件号;同时 major14代表着室内环境的楼层,由于本项目的测试环境都在同一水平面(即楼层数M=1) 上,故而major不发生改变;而minor各不相同,用作客户端接收机区分每个Beacon的 依据。此外每个Beacon在向室内空间发送蓝牙信号同时也会广播自己的uuid、major、 minor以及坐标位置等特有信息。
第二步,构建SSMap。首先搭建一个高度为1.41m,占地0.5m×0.5m的测试平台,将IOS 设备放置于平台中心;然后从坐标系的(0,0)位置开始,通过IOS设备每秒1次的频率指示出 8个蓝牙Beacon分别到该设备终端的蓝牙信号RSSI,并积累100s的观测时间获得每个 Beacon在该坐标位置处的共计100×8个数据;按照同样方法遍历网格中每一坐标(26×16) 处来自8个蓝牙Beacon的RSSI数据制成xml格式文档。图3展示了由uuid为 F62D3F65-2FCB-AB76-00AB-681819202122,major14,minor30,位于X坐标6.50, Y坐标7.30位置处蓝牙Beacon产生的信号构成的SSMap。
第三步,计算系统状态方差与观测方差。首先调用i通道下的SSMap的所有RSSI数据 存成Pow矩阵,用Matlab中var函数求得该通道下所有RSSI数据的方差,用Q(i)记录; 然后用观测设备误差分度值的平方为参考值建立系统的观测方差,用R(i)记录;最后将i从1 到8进行遍历。
步骤二、选取实测点,获得来自8个蓝牙Beacon的RSSI数据,分8个通道储存。
具体为:
在室内场景中选取坐标为(16,9)的实测点,获得来自8个蓝牙Beacon的RSSI数据。同 样利用到IOS设备平台以每秒1次指示蓝牙BeaconRSSI的频率,进行30s的积累后得到8 个通道分别的30组RSSI数据,并存成xml文件格式传递给后期处理。需要说明的是乐高乐 华公司正在研制的蓝牙BeaconRSSI指示软件的设计标准是每秒10次的频率指示蓝牙 BeaconRSSI,通过3秒的积累也可以得到8个通道分别30组RSSI数据。目前受设备限制 本发明只能用当前IOS设备下的实测数据对设计产品数据进行仿真,然而本发明用的实测的 数据仿真设计产品数据只是存在着输入时间的滞后,并不会带来数据本身的改变。
步骤三、设计卡尔曼滤波器对接收到信号8个通道的RSSI进行滤波处理。
具体为:
本发明用Karman_Filter.m程序实现了对任何给定位置的RSSI信号卡尔曼滤波处理。
第一步,卡尔曼滤波前数据提取。利用xmlread函数将IOS设备接收到的8个通道各30 组RSSI数据转化为[8×30]的矩阵数据z读取。
第二步,矩阵数据的初始化。需要说明的是这里程序各初值的意义:
xhat矩阵是对RSSI的后验估计值,即在k时刻,结合当前RSSI的测量值与k-1时刻 RSSI先验估计,得到的估计值更新,对应于状态方程中的X,初始化为[8×30]的零矩阵; 然后将每个通道的第一个元素赋值为输入信号在该通道的第一个RSSI数据;
xhat(i,1)=z(i,1)(21)
xhatminus矩阵是RSSI的先验估计,即在k-1时刻,对k时刻RSSI做出的估计,对 应于状态方程中的X,初始化为[8×30]的零矩阵;
P矩阵是后验估计的方差,初始化为[8×30]的零矩阵;然后将每个通道的第一个元素赋 值为1;
P(i,1)=1(22)
Pminus矩阵是先验估计的方差,初始化为[8×30]的零矩阵;
K矩阵是卡尔曼增益量,初始化为[8×30]的零矩阵;
第三步,改写的预测方程和校正方程。在同一个通道i中,按照系统状态方程改写迭代方 程。
代码中系统预测方程:
xhatminus(i,k)=xhat(i,k-1)(23)
Pminus(i,k)=P(i,k-1)+Q(i)(24)
代码中系统校正方程:
K(i,k)=Pminus(i,k)/(Pminus(i,k)+R(i))(25)
xhat(i,k)=xhatminus(i,k)+K(i,k)*(z(i,k)-xhatminus(i,k)(26)
P(i,k)=(1-K(i,k))*Pminus(i,k)(27)
第四步,将k从2到30遍历。遍历后得到同一通道i中RSSI经卡尔曼滤波处理后的效果。
第五步,将i从1到8遍历。遍历后得到8个通道中RSSI经卡尔曼滤波处理后的效果。
第六步,作图输出网格坐标(16,9)位置处各个通道蓝牙BeaconRSSI经过卡尔曼滤波处 理后的效果图,由图4-11所示。
图4是本发明中网格坐标(16,9)位置处第1通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图5是本发明中网格坐标(16,9)位置处第2通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图6是本发明中网格坐标(16,9)位置处第3通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图7是本发明中网格坐标(16,9)位置处第4通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图8是本发明中网格坐标(16,9)位置处第5通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图9是本发明中网格坐标(16,9)位置处第6通道蓝牙BeaconRSSI经过卡尔曼滤波处理 前后的效果图;
图10是本发明中网格坐标(16,9)位置处第7通道蓝牙BeaconRSSI经过卡尔曼滤波处 理前后的效果图;
图11是本发明中网格坐标(16,9)位置处第8通道蓝牙BeaconRSSI经过卡尔曼滤波处 理前后的效果图。
第七步,比较卡尔曼滤波前后该实测点处RSSI动态范围变化。调用judgeparaments.m 文件,其中preinput配置滤波前的8个通道各30个RSSI数据(单位dB),folinput配置 滤波后的8个通道各10个RSSI数据(单位dB);程序输出卡尔曼滤波前后8个通道分别的 最大值、最小值以及其波动的动态范围。需要说明的是本实例中认为卡尔曼滤波在经过20个 时间节点后趋于稳定(即对应理想设备2s后实现RSSI读数稳定),因而我们做下表展示进 过卡尔曼滤波后(即从第20个时间节点开始到最后)对系统波动动态范围的优化程度:
由上表可以看出,设备接收到的来自8个通道蓝牙BeaconRSSI在经过卡尔曼滤波处理 以后动态范围明显减小,而这将极大地有利于我们通过距离与RSSI的解算关系实现室内精 确定位的后续工作。
最后,将卡尔曼滤波处理后的RSSI通过距离与信号强度的关系式解算出RSSI对应的 距离。显然对于每个通道的蓝牙Beacon我们会解算出其距离上限与距离下限(分别对应该 通道下RSSI最大值与最小值),再利用测量学中的空间距离后方交会法可以推算出实测点在 搭建场景中距离位置范围。
本发明主要针对室内精确定位中遇到的设备终端接收到蓝牙BeaconRSSI波动动态范 围过大的问题,设计出卡尔曼滤波器对RSSI进行处理,有效地控制了其动态范围,进而达 到提高设备终端定位精度的目的。通过实例分析,各通道的RSSI在经过卡尔曼滤波器后动 态范围有了明显的改善。
机译: 基于RSSI的RSSI对象定位系统和方法
机译: 基于RSSI的三角剖分RSSI无线充电车辆定位系统以提高充电效率及其方法
机译: 基于信标的室内定位中的RSSI方法和系统RSSI校准