杨会,朱磊,徐焱
(宿迁学院 信息工程学院,江苏宿迁,223800)
超宽带技术(Ultra-wideband,UWB)是近年来发展起来的无线电技术,它不同于传统通信中需要使用载波,而是使用纳秒级的非正弦波窄脉冲传输数据,信号具有GHz量级的带宽。一方面超宽带利用脉冲波的良好抗多径效应和精确测距特性,可以实现高精度、高可靠性的超宽带室内定位,另一方面由于超大带宽,超宽带通信的传输速率非常快,可以实时传输室内人员生命状态信息,因此将通信与测距融合在一起,设计实现了基于UWB的室内人员定位及生命状态监测系统,该系统定位精度高、集成度高、应用面广。
室内人员定位及生命状态监测系统主要用来对室内人员进行实时高精度定位以及生命状态的监测。实现UWB无线定位需要一个固定于室内人员身上的标签节点(定位标签)以及四个固定安装于周围环境中锚节点(定位基站)。定位标签除了配有与基站进行数据交互的测距模块,还配有对生命状态进行监测的测试模块;定位基站分为主基站和从基站,主基站配有与上位机通信的蓝牙模块。该系统包含有1个主基站、3个从基站及若干标签,系统原理框图如图1所示。
如图1所示,该系统的定位功能是利用双边双向测距的方法实现标签与各个基站距离的测量:首先标签向各个基站发送定位命令,各基站接收后返回响应命令,标签再次接收后发送最终命令,各基站再次接收后利用消息中的时间戳计算出飞行时间,并最终将各自飞行时间发送给主机站,主基站在接收到三个从基站时间数据后使用蓝牙将数据传回上位机,经过上位机解算得到位置信息。
图1 系统原理框图
该系统实现生命状态监测功能在于标签将所测得的生命状态的数据放在最终命令里随着测距的时间戳信息一起传输,并最后传送至上位机进行显示,这使得在完成定位的同时也完成了相关数据的传输,实现了定位通信二合一,提高了系统的集成度。生命状态的监测主要是对室内人员体温、心率等的测量及显示功能。
1.2.1 标签模块设计
标签模块电路设计如图2所示,该电路由STM32控制模块、电源模块、UWB模块及生命状态监测模块四部分组成。
图2 标签模块
其中STM32控制模块负责整个电路的数据采集和存储、控制数据的发送和接收,电源模块是用来为电路中各个模块实现供电管理。UWB模块中采用Decawave公司针对UWB信号设计的DW1000信号收发器,DW1000芯片可以准确记录UWB信号的到达时间,时间精度达到15.6ps,可以满足厘米级的定位要求。生命状态监测模块包括心率传感器测试模块和温度传感器测试模块,心率传感器采用PulseSensor光电反射式传感器,温度传感器采用GY-906红外测温传感器。
1.2.2 基站模块设计
基站模块电路设计如图3所示,由STM32控制模块、电源模块、UWB模块以及蓝牙模块四部分组成,其中主基站配有蓝牙模块,从基站没有。
图3 基站模块
基站模块中的STM32控制模块、电源模块、UWB模块的功能与标签模块相同,蓝牙模块的功能是使得主基站在得到标签和各基站距离数据以及生命状态数据后,可以高效快捷地将数据上传至上位机进行位置解算,而不需要在基站处增加数据线,方便了基站的安放。
1.3.1 定位系统软件设计
在对比了基于到达时间(TOA,Time of Arrival)、基于到达时间差(TDOA,Time Difference of Arrival)、基于到达信号角度(AOA,Angle of Arrival)、基于接收信号强度指示(RSSI,Received Signal Strength Indication)、基于双向测距(TWR,Two-way Ranging)的定位方法以后,采用了双边双向测距(DS-TWR,Double-side Two-way Ranging)的方法作为定位系统的底层测距方案。其测距原理如图4所示。
图4 双边双向测距原理图
在四消息的基础上,采用三消息方式,也就是省去Device B发送的时间戳,设备 A收到数据之后,立刻返回数据,最后得到四个时间差:Tround1、Treply1、Tround2、Treply2。具体通信测距过程如下:设备A发送测距指令,设备B响应,我们将设备A命名为设计所需要的标签,而设备B就是基站,标签发送测距信息,并记录发送时间TX,等待基站接收。基站收到测距指令,发送测距信息至标签,并记录接收时间RX,标签接收到响应信息RX后,向基站发送final指令,基站收到final,表示测距结束。整个过程最后可以用如下公式计算:
根据以上原理,软件设计流程如图5所示。
图5 软件设计流程图
在图5中,首先初始化MCU和DW1000,读取工作角色开始测距,确定是不是测距目标,如果不是,将返回MCU外设,重新配置,判断此时是不是测距目标,如果不是则等待接收测距信息,如果是,则标签发送请求定位信息给基站,基站收到信息并发送report信息,标签收到response信息再发送final信息,以此获得三个时间戳,一标签多基站之间采用轮询的方式,最后汇总到主基站,在流程图的下半段中左半边是标签,右半边是基站,进行数据的传输和接收,最后汇总并计算位置信息。
该定位系统基于上述双边双向测距的方法实现了标签和各个基站距离的测量,之后利用数学的方法对标签位置进行解算。以二维平面为例,以若干已知位置的基站为圆心,以标签与基站间测距值为半径作圆,各个圆的交点即是标签的位置,其具体工作原理如图6所示。
图6 定位工作原理图
在图6中,基站A、B、C测得与标签的距离分别为d1、d2、d3,令标签的坐标为(x,y),基站的位置坐标为(xi,yi),根据圆的几何意义,可以列出方程组(2):
方程组(2)中,各基站的坐标(xi,yi)是已知的,即定位前需测量、设置好基站的位置。基站到标签的距离di可根据双边双向测距模型完成测距,测出每个基站到标签的飞行时间Ti,UWB的传播速率为光速,将飞行时间Ti乘以传播速率就可得到基站到标签的距离di。于是,方程组(2)中就只有(x,y)未知,通过求解该方程组,可以得到标签坐标(x,y),完成定位。按上述方法,每三个基站可组成一组定位基站,可以确定一个标签坐标。
1.3.2 生命状态监测系统软件设计
室内人员体温的测量采用非接触式的GY-906红外测温传感器,该传感器的测温流程如图7所示。开启开关电源后,首先对温度传感器进行初始化,之后检测是否有按键输入,如果有则输入体温的阈值,开始对室内人员进行体温测量,测量的体温数据一方面通过UWB通信发送给主机站进而上传至上位机进行温度显示,另一方面与设置的体温阈值进行比较,若超过阈值则进行体温监测报警。
图7 温度监测流程图
室内人员心率的测量采用PulseSensor光电反射式传感器,该传感器的测量过程与温度传感器的测量过程类似。开启开关电源后,首先对心率传感器进行初始化,之后检测是否有按键输入,如果有则输入心率的阈值,开始对室内人员进行心率测量,测量的心率数据一方面通过UWB通信发送给主机站进而上传至上位机进行心率显示,另一方面与设置的心率阈值进行比较,若超过阈值则进行心率监测报警。
系统的底层测距方案采用了双边双向测距方法进行定位,该定位方法抑制了由于时钟偏差而产生的测距误差,但是在复杂的室内环境中有很多因素影响室内定位的精确度,如非视距误差、天线延迟、定位延迟等等。为了提高定位精度,对比了Fang算法、Chan算法、泰勒级数展开法(Taylor)、卡尔曼滤波这几种算法,由于卡尔曼滤波算法在解决多址路径,非视距误差等问题有显著成效,最终确定选取卡尔曼滤波算法对原解算法进行改进。
卡尔曼滤波算法是一种系统性的状态估计法,很多情况都对测量数据有高度精确需求,这是得出状态最优成果的前提。它具有计算量小、容易实现和适应性强等特点,广泛应用在工程中。可将其划分为两个步骤:1)预测,将前时刻数据信息作为参考,需要考虑到每个时刻的计算精度;2)更新,在前面已经计算出的估计结果,可将精度进一步提升。具体流程函数关系为:
预测:
更新:
公式(3)属于状态预测,根据上一时刻的状态来对当前时刻的状态进行预测,还要加上外界环境对系统的作用。公式(4)属于误差矩阵预测,实施预测操作时除了有不确定预测噪声增加Q,还要再考虑原有的不确定性。公式(5)计算是kalman增益计算,预测结果的不确定性P和观测结果的不确定性R,计算卡尔曼增益(权重)。公式(6)属于状态校正,以加权平均方式处理预测、观测等结果,所得结果是当前时刻状态估计。输出结果表示kalman滤波最终结果,公式(7)代表误差矩阵更新。式中各变量的含义如表1所示:
表1 各变量说明
为了验证卡尔曼滤波算法对该系统定位精度的提高,采用matlab对卡尔曼滤波算法进行了仿真,选取定位系统采集回来的100组真实的数据,分别计算未加入卡尔曼滤波算法的误差与加入了卡尔曼滤波算法的误差并进行比较,如图8所示。另外将标签真实位置、未加入卡尔曼滤波算法解算出来的位置以及加入卡尔曼滤波算法再进行解算之后的位置数据进行比较,如图9所示。
图8 卡尔曼滤波前后误差分析对比图
从图8中可以看到,卡尔曼滤波之前定位有很大的误差,但通过加入卡尔曼滤波算法后,可以在图中看到滤波前的误差起伏幅度比较大,而滤波后的起伏幅度变小了。从图9中我们也可以看出在滤波前的定位轨迹是有点分散的,而在滤波后的定位轨迹是集中的,而且滤波后的轨迹更接近于真实的轨迹。因此,经过卡尔曼滤波算法仿真的数据更加平稳,数据线条更加平滑,卡尔曼滤波算法确实可以弥补原测距算法所出现的不足,采用卡尔曼滤波算法对原测距算法进行改进是切实可行的。
图9 卡尔曼滤波前后轨迹对比图
搭建测试环境:在5m×5m的正方形区域内预先固定好三个基站的位置,三个基站分别位于正方形的三个顶点处,坐标为 A0(0,0),A1(5,0),A2(0,5),其中 A0 作为主基站与PC机相连,如图10所示。
图10 测试环境
将标签依次放置在表2中所示的标签实际位置处,对定位系统进行静态定位功能测试,所测得的结果如表2所示。
表2 滤波前后定位数据对比
从获得的数据比较中可以看到,不含卡尔曼滤波算法的定位误差是0.17895m,含卡尔曼滤波算法的定位误差是0.16875m,这表明了卡尔曼滤波算法确实能够提高室内定位系统的定位精度,结果也满足系统的要求。
室内人员佩戴标签(标签不可直接放在地面上,与地面需要有一定距离)站在基站构成的直角三角形的范围内,进行生命状态监测即人体温度和心率的测量。测量心率时将心率传感器固定在手指上,再通过上位机读取数据,温度传感器是红外式的,只需要靠近人体皮肤就可以,人体的心率和温度的实时数据都会在上位机上显示,数据显示界面如图11所示。
如图11所示,左边是实时数据的显示,右边是温度和心率的动态曲线图显示。当检测的温度值和心率值超过所设置的阈值时,相应的单片机会控制报警装置发出警报。
图11 生命状态监测数据显示界面
为了测试生命状态监测系统的精确性和稳定性,选取2名志愿者(志愿者1女性和志愿者2男性),对两名志愿者分别进行温度和心率的检测,并与市面上精度较高的品牌产品测得的数据进行对比,得到误差,数据结果如表3、表4所示。
表3 温度数据
表4 心率数据
测试结果表明,该生命状态监测系统的温度测量精度可以达到±0.3℃,心率的测量精度可以达到±3BPM,满足系统测量精度的需求。
该室内人员定位及生命状态监测系统可以实现对室内人员位置的精准定位,经过卡尔曼滤波算法的改进,使得定位精度在一定程度上有所提高,生命状态监测可以实现对室内人员温度和心率的实时测量,后续还可以加入其它表征生命状态的监测量。该室内人员定位及生命状态监测系统应用场景广泛,可以应用在办公楼内的办公人员、养老院的老人、监狱里的罪犯以及火场或者地震等灾害中对救援人员的监测等,因此具有很高的实际应用价值。