赵泽,高源,2,崔莉
(1. 中国科学院计算技术研究所,北京 100190;2. 中国科学院大学计算与控制学院,北京 100049)
定位问题一直是物联网研究领域的一个重点研究内容,自物联网技术诞生以来就一直受到相关研究人员的重点关注。基于位置的服务(LBS,location based service)是物联网技术的重要应用,定位方法的研究是 LBS的基础问题。对于室外情况,使用GPS定位的方法已经取得较好的成果,但非室外空间由于无法接收到GPS信号,实现精准定位的难度比较大。然而近年来室内定位和车内定位受到了越来越多的关注,在车内实现精准定位,对于处于不同位置的乘客可以提供更多差异化的智能服务,例如,可以针对车内不同位置的人员进行个性化的温湿度调节、空间调整、信息推送和多媒体服务;可以根据某辆车长期的乘客分布和用户用车习惯,推测出该车辆用途(家用/商用)和常使用该车辆的乘客数目以及人员座位习惯等,从而进一步提供智能化的服务。
目前,在室内定位方面的研究已经取得了许多进展。但和室内相比,车内空间更加封闭,资源更加有限,且车辆经常处于不同的运动状态,因此基于手机传感器[1]、加速度传感器、陀螺仪和上下文信息等定位方法不适用于车内定位。大部分室内定位方法是利用无线信号的相关特征来进行定位,根据利用无线信号的方法不同,大体可以分为基于功率、基于时间和基于角度3种定位方法。RSSI值就是一种基于功率的定位方法。近年来,除了使用RSSI值外,基于功率的方法还有使用 Wi-Fi的CSI(channel state information)定位方法[2],其精度为40 cm 左右,比单纯使用 RSSI(精度为 1~3 m 或room-level[3])要高,但车内空间狭小,电源供给有限,不适合利用多个Wi-Fi的AP(access point)实现定位。基于时间的定位方法,如 ToA(time of arrival)[4],通过信号到达的时间来测距,但无线信号作为电磁波是以光速传播的,导致ToA方法对时间精度要求较高;TDoA(time difference of arrival)也是目前经常使用的定位方法[5],常用于多个接收端接收一个固定的 RFID(radio frequency identification)或WLAN(wireless local area network)热点的信号,TDoA需要接收端有准确的振荡器来保证时间同步,显然也不适用于车内[6]。基于角度的定位方法,如最常见的AoA(angle of arrival)[7],需要多个发送和接收天线组成天线阵,由于部署起来比较繁杂,实际应用的场合比较少。从定位精度上分析,传统RSSI精度为2~4 m,基于指纹库的方法准确度通常为1~3 m,比基于Cell-ID的方法要好一些[8],目前的CSI精度在40 cm[2]左右,在本研究中车内的座位宽度为60~80 cm,因此上述定位方法的精度都不适用于此应用场景。
在专门针对车内人员定位的方法研究中,文献[9]使用声波的方式对车内的位置进行判定并取得了良好的结果,但是需要对车内的扬声器系统进行改造,使之发出一定频率的声波,并且需要在车内加装一些扬声器。一般来说,车辆在出厂之后设备、布线基本固定,不能做过多改动,并且从安全的角度考虑,不宜采用对车辆进行改装的方法。同时,定位系统应该具备普适性强、可开展、结果准确这3个特点[2]。而文献[9]定位系统成本高,且部署时必须对扬声器进行一定的改造,不满足普适性强、可开展,不能完全适用于本文研究的车内定位场景。
从实用角度考虑,使用蓝牙信号是较好的选择。其优势主要体现在以下几方面:体积小,包装体积在几立方厘米内,不会影响驾驶员驾驶和乘客的活动;在车内空间较小、移动的环境中,蓝牙可以发挥其短距离、低功耗的特征,更好地提供服务;不需要对车辆进行改造,使用方便。
为了能更好、更方便地解决提高车内定位精度的问题,让人们能够更好地获取车内准确定位带来的相关服务,本文提出了一种基于BLE的多信道多RSSI值的定位方法VehLoc,该方法通过采集分析多个信标在不同信道下的多个 RSSI值来实现。在进行缺失值和滤波处理之后,先使用粗分类器对前后排位置进行区分,再使用函数拟合进行位置概率计算,最后使用细分类器进行位置校正。
不同于传统蓝牙定位,本文使用了区分信道的方法,将蓝牙的3个广播信道当作不同的特征,分开计算。
蓝牙工作在2.4 GHz频段,使用这个频段的无线信号包括ZigBee、Wi-Fi等,冲突相对比较严重。为了保证通信质量,蓝牙协议采用了 AFH(adaptive frequency hopping)、LBT(listen before talk)、功率控制等抗干扰措施,进行跳频传输,选择信道质量最好的信道进行数据传输;而在接收端接收时,通过主机设备对信道做出选择,进行跳频传输[10]。
BLE4.0是第 4代蓝牙标准,具有功耗低等特点,与之前的蓝牙标准相比,其带宽变宽,通信距离变大,数据容量也有所提升。BLE4.0工作频率范围为 2 400~2 480 MHz,一共有 40个信道(0~39),每个信道带宽为 2 MHz。在广播时,使用 37、38和39共3个信道。蓝牙的设计者在设计信道时,为了避免广播信道之间的干扰,将它们的频率分隔开,而不是使用连续的3个信道。这使得3个广播信道间存在频率差,37信道的频率为2 402 MHz,38信道为2 426 MHz,39信道为2 480 MHz[11],表1为BLE信道的分布情况。
从表1可以看出,蓝牙中不同的广播信道之间存在频率差。在蓝牙进行广播时,如果没有对广播信道进行特殊限制,发送端会同时使用 37、38和39这3个广播信道进行广播发送,每次发送称为一个广播事件;而对于接收端,可能接收来自3个信道中任意一个或多个信道的广播数据(具体信道个数取决于接收端)。
表1 BLE信道分布情况
已经有文献[12-13]确定,RSSI的衰减和多径效应都会受到频率的影响,而 RSSI就是基于接收信号的功率来计算的,如式(1)所示。
文献[13]中,给出了在无干扰的自由空间模型下接收端的功率估计式,如式(2)所示。
其中,tP和Pr分别表示发射功率和接收功率,l表示发射节点和接收节点间的距离,c为光速,f为无线信号的频率。
文献[13]中,给出了多反射条件下接收端的功率估计式,如式(3)所示。
其中,L表示由于发射节点和接收节点的阻抗不匹配导致的损失,表示信号的波长,γ是路径损耗系数,表示在视距方向上发射和接收天线场的辐射模式,r和rΓ表示信号发射和反射经过的路径长度,则表示在分别在r和rΓ方向上发射和接收天线场的辐射模式的乘积,是接收到的2个信号的相位差,如果多径效应更加明显,则相位差更大。
在发射功率为0 dBm时,使用式(2)计算得出3个信道在距离发射位置1 m处接收到的理论功率值分别为:0.009 93 mW(37信道),0.009 84mW(38信道),0.009 626 mW(39信道)。车内空间狭小,多径效应造成的后果更加严重,导致在这3个信道上接收到的信号差更加明显,对于不同信道的RSSI值,如果不加以区分,会导致接收到的RSSI值变化严重,不利于后续处理。
在同一位置分别使用区分信道的方法和不区分信道方法接收信号,图1展示了这2种方法接收到的RSSI值。图1(a)为使用区分信道方法,接收端在接收信号时,将同一数据分组中的 3个广播信道值分开记录,图 1(b)为普通的接收方法,只记录接收到的RSSI值,而不对信道进行区分。
图1 在相同条件下区分与不区分信道时终端所接收到的RSSI值
由于不同接收终端对蓝牙底层数据的过滤规则不同,使得对于同一个广播事件,不同接收端接收到的数据量也不相同。例如某些接收终端在nms内只接收一次,这可能导致对同一个广播事件接收不完整,n值不同会导致每个广播事件接收的数据量不同。为了与区分信道的方法进行对比,保证数据量的公平性,本文认为接收终端可以接收到广播事件的3个信道的数据分组。
从图1中可以看出,相对于没有区分信道方法的RSSI值,使用区分信道方法在每个信道内获取的值RSSI更加稳定,波动也相对较小,不同信道的RSSI值存在明显的差异。
在定位过程中,使用区分信道的方式会有以下优势。1)不同的信道由于频率不同,接收功率上会有差异,而这种差异会因为多径效应而变得更加明显。相比于普通的不区分信道的BLE接收方式,使用区分信道的信号接收方式可以更完整地保留蓝牙的信号信息,并且根据多径效应对不同频率的信号干扰而造成的RSSI值差异分析,能够有效得到不同接收位置的RSSI特征信息。2)实验证明,使用不区分信道的方法,在车内不同位置接收到的RSSI值可能相同,而使用区分信道的方法,每个数据分组的信息量增加到3倍,使在不同位置收到相同RSSI值的概率下降,根据接收到的数据分析,不同位置收到完全相同RSSI数据分组的概率可以控制在1%之内。3)从数据处理的角度来看,使用区分信道的方式使每个数据分组的信息维度增加,可以提高分类的精确度,更利于分类器的分类,并且接收端在不同信道的RSSI值之间的差异本身也是判断接收端位置的一个重要因素。4)从图1可以看出,同一数据分组内不同信道的RSSI值是存在差异的,如果不对此进行区分,会使特征集中在同一位置、同一信标、不同信道之间的RSSI值差异,而不是不同位置的RSSI值差异,掩盖了许多有用信息。
基于以上分析,本文提出了采用区分多信道的RSSI值来定位数据源的方法,从而得到包含完整的利于定位的RSSI数据的信道信息,达到对车内进行高精度定位的目的。
为了更好地区分接收设备在车内的位置,分别使用多个信标在不同信道的RSSI值作为采集的数据,并将其进一步用于车内的位置区分。为了保证不干扰驾驶员驾驶和乘客的正常使用,需要在车辆空闲位置安装蓝牙节点。在实验系统中使用3个信标分别为beacon1、beacon2、beacon3,进行 BLE数据的广播,信标的广播数据遵从iBeacon协议。
整体定位方法分为模型建立和实际定位2个阶段。在模型建立阶段,对采集到的数据进行滤波、粗分类、拟合及细分类等一系列建模处理,为每个位置都建立一个标准模型库。在实际定位阶段,对采集到的数据使用同样的方法进行处理,并与每个位置的标准库相匹配,计算处于各个位置的概率,取概率最大的位置作为定位结果返回给用户。
图2为实现车内定位的整体流程,其中,分隔线上方为模型建立阶段,分隔线下方为实际定位阶段。在实际定位阶段,使用的粗分类器、拟合参数和细分类器都是在模型建立阶段计算得出的,图 2中的虚线表示了模型在定位阶段的重新使用。在实际应用场合,模型建立阶段只需进行一次,得到标准库后可以用于后续定位。
整个定位过程可分成以下三部分:数据预处理部分(如图2(a)所示),分类部分(如图2(b)所示)和结果整合部分(如图2(c)所示)。
3.1.1 丢失值的填充
在收集数据时,由于信道被占用,接收端的差异或接收延迟等,很容易出现数据丢失,如果不对丢失值进行补充,会造成数据浪费和接收信息不完整。在处理丢失值时,假定正确的相邻RSSI差距不应该太大。为了补全丢失数据,采集数据时保留该数据分组的编号,可以根据编号查看数据分组到来的先后顺序。经过实验统计,在普通情况下,数据的丢失率小于7%,相邻数据分组之间的RSSI值方差大部分小于3,方差大于3的不超过3%。对于每组数据每个信道的值,如果存在数据分组丢失的情况,采用以下方法对缺失值进行补充。首先计算编号最近相邻3个RSSI的方差,如果方差小于4,则将这3个RSSI的平均值作为缺失值;否则,将差距较小的2个RSSI的平均值作为缺失值,如式(4)所示,其中vn表示第n个RSSI的值。
3.1.2 数据滤波
图2 车内定位整体流程
影响RSSI的因素主要有3个:路径衰减、遮挡、多径效应[2]。车内空间狭小、遮挡物多,采集到的信号干扰较重,并且会经常出现异常值,为了减少异常信号对数据的影响,对采集到的数据进行了滤波处理。考虑到数据在产生、采集和处理过程都会产生误差,使用了卡尔曼滤波法。卡尔曼滤波是一种常见的滤波手段,常用于信号处理和控制系统中,如机器人控制系统等,近年来逐渐用于传感数据融合与微观经济学等领域[14]。卡尔曼滤波要求系统噪声和测量噪声都满足高斯分布。在无线信号上,系统噪声和测量噪声都为高斯分布[15],一个典型实例是从一组有限的、包含噪声的、对物体某个特征的观察序列,通过该特征的测量值预测出物体的下一个时段的特征[16],在滤波过程中,卡尔曼滤波方法结合了第k-1次的预测值、第k次的预测值和第k次的测量值来预测第k次的准确值,从而减少由系统和测量带来的误差,最大程度地还原出准确值。整个计算过程如下。
在初始时,真实值和测量值的首次赋值都为首次测量值,在收到第k个数据分组时(第k个数据分组的测量值),会结合第k-1次数据分组的最优值,进行第k次的预测。
在定位工作中,基于指纹方法的正确率往往比基于距离的方法要高,但如果单一记录在某位置接收到的RSSI值,由于多径效应和信号的折射、反射,势必会造成接收值和指纹库中的值不匹配而导致定位结果不准确。为了解决此问题,本文在采集到各位置的数据后,使用了函数拟合与机器学习算法相结合的方法。对采集到的数据进行滤波后,首先使用粗分类器进行前后排分类训练,得到用于区分前后排的分类模型,在实际计算中发现,增加前后排的预分类,可以增加预测的分类准确度;然后对数据的各个位置每个信标每个信道的值进行函数拟合,得到相应拟合参数;最后使用细分类器对数据进行再次训练,得到细分类模型。由以上过程中得到的粗分类模型、函数拟合参数和细分类模型作为标准模型,在定位过程中,将收到的信号依次与每个位置的标准库相匹配。首先使用粗分类模型得出前后排位置,再使用函数拟合模型分别计算处于该排各个位置的概率,采取概率最大的作为第一次分类的结果;为了防止由于粗分类模型导致的错误,使用细分类模型对分类结果进行校正,得到的结果作为第二次分类的结果。这两次的结果都将被记录并用于结果整合。
3.2.1 粗分类器
粗分类器用于数据进行前后排预分类处理,以提高后续函数拟合的准确度。
通过使用adaboost分类器,可以得到一个能分辨出前后排位置的分类器。adaboost是结果较好的分类器之一,其思想是使用多个弱化的分类器进行多次训练。在初始状态,所有训练数据的权重都相同,在弱分类器分类之后,对于分类错的数据,权重会加重,目的是使下一个分类器更专注于不易于分类的数据,以获得更好的结果,在最终的结果输出时,会对所有弱分类器使用投票算法,对所有弱分类器的结果进行综合。在本文使用这个算法时,利用的特征为每个位置采集的3个信标的3个信道的RSSI值的9维特征,分类标签为前排(标记为1)或后排(标记为-1)。
在本文中,采用的弱分类器为“决策树桩”[17],即一个只有一层的决策树,通过在数据集上的所有特征遍历,找到一个具有最低错误率的单层决策树,并使用此树作为当前决策的弱分类器。
3.2.2 位置概率计算
由图1可以看出,虽然是在同一位置,几乎相同的时间来测量信号,理论上RSSI曲线应该近似于直线,但实际曲线却发生了较大的变化,为了实现精确定位,不能单纯使用RSSI值创建一个完整的指纹体系,但可以根据RSSI的分布情况计算出在同一位置的RSSI值的概率。对于位置iP,在某一时刻收到的处于3个位置的3个信道的RSSI值可以表示为
其中,rbicj代表收到的beaconi在信道j的RSSI值,其中bi代表beaconi,cj代表信道36+j,对于每一个位置,都能收到一组RSSI值,利用这组RSSI值,可以对该位置的各个 beacon的各个信道的值进行整体的分布拟合。从底层信号传播的角度来说,信号在经过折射、反射和多径之后,得到的值会比原始值小,这就导致了偏小的值要多于偏大的值,得到的结果基本是一种负偏分布。
为了对收到的信号进行拟合,计算在各个位置的概率,使用了伽马分布进行拟合。伽马分布常用于多径衰落信号建模和船舶检测[18],或有偏分布的拟合。同时,使用Matlab对数据分布进行测试,结果表明得到的信号可以用伽马分布进行拟合。伽马分布的密度函数如式(5)所示。
每个伽马分布有2个参数:α为形状参数也称为尺度参数;β为率参数。使用这2个参数可以确定一个伽马分布,伽马分布的概率密度函数如式(6)所示,式(6)也是判断某一信号值处于某一位置的概率计算式。
其中,rn表示在状态n(包括信道、beacon编号)下收到的单一值即的第n个分量,而ijα和ijβ表示对应的第i个beacon第j个信道的伽马分布参数,通过式(6)可以计算出该值处于某位置的概率。
建立模型阶段,在采集到每个位置的 3个beacon 3个信道上的RSSI数据后,可以在每个位置为每个beacon的每个信道的RSSI值都使用一个伽马函数进行拟合作为标准分布,计算各个位置的α和β参数。在定位阶段,可以计算接收到的处于各个位置的概率,为了方便表示,记可以认定不同位置不同信道的RSSI之间没有相关性,根据朴素贝叶斯理论和之前得到的伽马分布,分别计算处于5个位置的概率。
可以认定接收终端处于不同位置的概率是相同的,即P(pi)为一个常数[19],同样,每组RSSI值表示接收到的RSSI值的分布,也可以看成是一个定值,故式(7)可以简化为
由于之前已经使用 adaboost对收集到的RSSI值进行预分类,可以确定该值处于前排或是后排,所以在比较时,可以取该排3个位置的最大值作为定位的位置。
同时为了防止某个RSSI值在某个伽马函数内的概率为0而导致整个计算结果为0,在实际计算时,对结果使用指数函数进行处理,得到式(10)。
3.2.3 细分类器
为了防止在adaboost分类时的错误导致伽马拟合结果不正确,本文使用了细分类器对结果进行校正。
支持向量机(SVM, support vector machine)是机器学习领域一种常用的、发展较为成熟的分类方法。传统的SVM用于解决二分类的问题,其基本模型是定义在特征空间上的间隔最大的线性分类器[20]。对于线性可分的数据,可以使用解决相应的凸二次规划问题来得到最大化间隔的分类函数;而对于线性不可分的数据,则需要使用核函数将数据映射到高维空间,在高维空间中解决线性问题[20]。分类所使用的特征与adaboost相同,是在每个位置收集到的3个蓝牙信标的3个信道的RSSI值,与adaboost不同的是,这里使用的分类并不仅仅是前后排的二分类,而是对所有位置的5分类。
传统的SVM是二分类器,为了使SVM能够适用于5分类,需要使用10个二分类器,在每两类之间进行一次分类,最终将结果整合,统计每个分类器的结果,选取得到分类结果最多的那个类作为最终分类结果。
在建立模型阶段,使用训练数据建立出来一个模型;在定位阶段,通过此模型计算接收终端处于不同位置的概率。
本文的研究中使用adaboost分类方法对前后排进行分类,使用伽马分布来计算接收到的R处于各个位置的概率,使用SVM方法来对接收终端的位置进行校正。其中,使用adaboost分类方法和伽马分布会得到第一次分类结果,使用SVM时会得到第2次的分类结果,所以在每收到一组数据时,可以得到2个结果。
在实际应用时,需要综合这3种方法来对位置进行判断,使用的方法为投票算法。如果第i次分类的结果为位置j,则位置j的票数+1;每收到一组n个数据时,会得到2n个结果,分别统计各个位置得到的票数,最后将票数最多的结果作为这次定位的最终结果。即每收到n个数据分组作为一轮,每轮结束时,会对这n次的结果进行统计,分类次数最多的那个位置作为最终的位置,本过程的伪代码如下。
在实际性能测试中,使用一辆5座轿车(车辆一)和一辆5座电动车(车辆二)进行测试。使用可以进行信道区分的接收软件进行数据采集并按上述方法对数据进行处理和分类,最终结果显示,主驾驶、二排左位置和二排右位置正确率可以达到97%,副驾驶达到95%左右,二排中间位置正确率在90%左右。
在实验中,采用的蓝牙信标为自行开发的遵循iBeacon协议的BLE信标,如图3所示。
图3 BLE信标
每辆车内部都有两排座位,BLE信标部署的位置和接收终端的位置如图 4所示。3个 BLE信标beacon1、beacon2和 beacon3,分别位于主驾驶的左上方、副驾驶的右上方和后排车顶中间车灯的位置,采集主驾驶、副驾驶、后排左侧、后排右侧和后排中间5个位置的数据。
图4 车内蓝牙节点分布示意
将BLE信标设定为500 ms发送一个数据分组,为了保证实验的准确性,使用2种车,每种车进行2次数据采集。采集过程中在每个位置的各个朝向都进行了数据采集以保证数据的完整性。在2辆车的5个位置一共采集了4 559组数据,每组数据包含在该位置收集到的3个beacon在3个广播信道上的RSSI值(9个维度),按4:1的比例划分训练集和测试集,分别用于建立模型和测试模型,得到了3 647组训练数据和912组测试数据,为了获得较好的应用体验,设定每收到6个数据分组(即采集时间3 s)输出一个结果。
得到了训练数据后,对数据进行处理。在卡尔曼滤波过程中,使用的数据误差为 0.5,测量误差为 1,标准值为收集到的第一个数据分组,使用这些参数进行滤波,以第一排中间信标beacon1的38信道收集的信号为例,图5显示了此处的信号滤波前后的对比图像。可以看出,滤波后的图像与原始图像相比较为平滑,且保存了原有的曲线走势,滤波前RSSI值的平均数为-81.23,方差为20.53,滤波后平均数为-81.33,方差为7.10,可以认为此滤波方法消除了特殊值的影响。
图5 卡尔曼滤波前后对比
预分类过程。使用训练集中每个位置收到的3×3组数据作为训练特征,进行前后排的分类,使用弱分类器进行了 1~30次的训练,得到的正确率如图 6所示。虽然已经有研究表明,迭代次数越多,在训练集上得到的预测准确率越高[20],但更多迭代次数对精度的提高并不明显,同时为了防止过拟合,保证结果的准确性和计算速度,在对测试集训练时使用了26次迭代。
图6 adaboost不同迭代次数的正确率
伽马函数拟合。使用每个位置训练集中的数据进行伽马分布拟合,分别计算每个位置、每个beacon每个信道的RSSI值拟合出来的伽马分布函数,用此函数作为标准分布函数,对测试集进行计算。
在5个位置3个beacon3个信道分别计算出α和β的值如表2所示。
表2 在5个位置3个beacon 3个信道使用伽马拟合分别计算出的α和β值(部分)
取在不同位置某个 beacon某个信道的原始分布和伽马分布拟合的结果,如图7所示,测试的原始数据分布情况是符合所设定的伽马分布的。
采用SVM分类对缺失值补充、滤波处理后的数据进行再次分类。通过采集到的数据发现数据是线性不可分的,为了更好地进行分类,需要使用核函数将数据映射到高维空间,通过测试发现使用高斯核函数(RBF,radial basis function),把原始特征映射到无穷维核函数时的效果最优。
结果整合。每收到6个数据分组时,对得到的12个分类结果进行整合,计算每个位置收到的分类器“投票”的票数,并取票数最高的作为最终定位结果。
按照图2中的流程,模型建立阶段只需执行一次,定位阶段可以多次执行。以第二种车的两组数据为例,分别使用了第一组数据与第二组数据进行模型建立,在正常的定位过程中,获得了标准模型之后,后续的定位都应该根据首次的标准模型进行定位,故在下文中,使用第一组数据得到的模型称为标准模型,以第二组中的数据为训练集得到的数据模型称为二组模型。使用上述两种模型对第二组数据进行定位处理,得到的两组准确率如图8所示。
图7 不同位置原始分布与伽马分布拟合图像(部分)
图8 通过标准模型和二组模型得到的准确率
在第二辆车的5个位置中,通过标准模型计算出的准确率平均值为 94.11%,通过二组模型计算出的准确率平均值为 94.48%。2种模型从准确率来看,差别并不大;从计算参数上看,粗分类器和细分类器的参数完全相同;主要差别体现在拟合参数,表3和表4为2种模型获得的拟合参数。
表3 标准模型拟合参数
为了直观地表现2组参数的差异,绘制了几组不同参数的伽马分布如图 9所示,其横轴表示在式(6)中r的取值,纵轴为根据式(6)和α、β值计算出的对应概率。
图9(a)为主驾驶位beacon1 信道38的2种模型参数拟合,标准模型参数的α为 16.287 462 45,β为1.510 071 822,二组模型参数的α为14.823 689 52,β为1.604 142 498。图9(b)为二排右beacon3信道39,标准模型参数的α为5.281 609 857,β为0.516 007 844,二组模型参数的α为5.052 166 039,β为0.529 292 595。
表4 二组模型拟合参数
图9 不同位置标准模型参数和二组模型参数的拟合曲线
通过计算,这2种模型在同一取值下的概率之差不超过0.1,拐点和最值对应的x值不超过3。通过以上分析可知,在同一辆车内可以使用同一模型进行定位。
4.4.1 准确度分析
为了进一步验证该算法的有效性,使用这两辆车的数据分别进行了4组实验。
第1组使用VehLoc方法,采集多信道多RSSI值并使用图 2中的分类方法进行分类处理。
第2组在同一环境下使用不区分信息的方法对数据进行采集(即传统方法,只记录RSSI值,而不关心该RSSI值来自于哪个信道),分类方法同样使用图 2中的分类方法进行分类处理。
第3组单独使用37信道进行定位,其余的数据不使用,分类方法同样使用图 2中的分类方法进行分类处理。
第4组使用区分信道的方法接收数据,但只使用37信道的数据,并使用改进的传统3点定位方法[21]进行分类处理,即在3点定位的基础上,添加分类过程。
为了方便计算,为5个位置和3个beacon分别设置了坐标如下:主驾驶(-90,0),副驾驶(90,0),二排左位置(-90, -100),二排中位置(0,-100),二排右位置(90, -100),beacon1(-100,0),beacon2(100,0),beacon3(0, -70)。
首先根据收到的RSSI值和传统的RSSI距离式[22]分别计算当前位置到3个beacon的距离
其中,A表示发射端和接收端相距1 m时的信号强度,这里取49;n为环境衰减因子,这里取4.5;d为计算出来的发射端和接收端的距离。在得到终端与3个beacon的距离之后,通过3点定位算法(如图10所示)得到理论定位位置p,在5个车内位置中,与p距离最近(欧几里得距离)的点即为定位位置;准确率计算为定位正确次数与定位次数的比值。
图10 三点定位方法
图10中3个圆的圆心分别为beacon1(坐标设为-100,0),beacon2(坐标设为 100,0)和beacon3所在位置(坐标设为 0,-70),通过式(11)计算出当前位置到3个圆心的距离分别为r1,r2,r3,由r1,r2,r3为半径构成的3个圆交点为p1,p2,p3,最终的定位位置p的坐标为p1,p2,p3坐标的均值
使用这4种方法最终得到的正确率如图11(车辆1)和图12(车辆2)所示。
从图 11和图 12可以看出,本文提出的方法(VehLoc)可以区分出车内的5个位置,其中主驾驶位和二排左的准确率可以达到97%,二排右和副驾驶位准确率也能达到95%左右,二排中的预测准确率相比其他4个位置较低,主要原因应该是人员手持手机的方式或是座位的朝向对测试造成影响,但这个位置基本不会影响对车内人员主要位置的判断。使用3点定位计算出来的分类精确度普遍比使用上文提到的分类方法准确率低,这也说明了上文提到的分类方法可以提高定位的精确度。通过上述实验可以得出如下结论:使用区分信道方法的准确率要高于不区分信道、使用单一信道的方法与使用传统3点定位的方法,说明使用区分信道的方法可以提高车内定位的精度。
与使用声波的定位方法相比,本文提出的方法不需要用户参与,同时没有对车辆内部过多地改造,使方法更容易移植和使用;与使用角速度定位的方法相比,本文提出的方法能够在较短时间(3 s)内返回定位结果,更加高效。
4.4.2 复杂度分析
本文在定位时分为线下模型建立与线上模型匹配2个阶段。在进行线上模型匹配的过程中,需要进行卡尔曼滤波、粗粒度模型匹配、伽马分布概率计算及粗粒度模型匹配,具体过程如下。
1) 卡尔曼滤波,如前文所述,可以通过一维滤波来实现,对数据分组内的各个维度分别处理以减少时间复杂度。
2) 粗粒度模型匹配需要利用决策树,根据选取的特征进行值判断,得到二分类结果。
3) 分布拟合,通过计算伽马函数来进行概率计算,并选取排内概率最大的作为定位位置。
4) 细粒度模型匹配则使用libsvm实现,通过调用predict函数,使用建立好的模型进行5个位置的分类,为了方便计算,本文对libsvm的源代码进行了部分修改,将原本以文件形式传输的数据改为使用数组,以便于进行定位处理,加快定位速度。
5) 结果整合,对每6个数据分组进行次结果整合,分别计算各个位置被定位的次数一。
图11 车辆1使用区分信道、不区分信道、单一信道和基于3点定位分类法的正确率对比
图12 车辆2使用区分信道、不区分信道、单一信道和基于3点定位分类法的正确率对比
在实际定位时,只需要进行模型的匹配过程,所以时间复杂度并不高。本文使用了联想PC机,8 GB内存、Win7系统对168条(28组)数据进行定位处理,处理时间为1.26 s,准确度为92.8%。设定500 ms进行一次数据广播,即在3 s内可收到6个完整的数据分组,定位时间可以控制在5 s内。由此可知,本文提出的方法可以在短时间内对车内人员的位置进行判断。
为了提高车辆的智能程度,为车内乘客提供一个更加良好、智能的车内环境,本文提出了一种基于多信道蓝牙RSSI的车内定位方法VehLoc。该方法可以充分利用不同信道频率下 RSSI值的差异,结合卡尔曼滤波方法、伽马函数拟合和相关分类方法进行车内定位。在车内进行大量数据采集并建立标准模型,在定位时使用标准模型进行位置判断。为了对本文提出的方法进行评估与判断,将两次采集到的数据划分为模型建立集与测试集,结果显示,本文提出的VehLoc方法在车内5个位置的准确率都可达到90%,可以判断用户在车内的位置。相对于目前已有的车内定位方法,本文提出的方法能够判断所有乘客在车内的位置,在定位过程中基本不需要用户参与,对车内驾驶员和乘客不会产生干扰,依靠现有的车内电路即可进行位置判断,对车内的影响也较小。
下一步的工作将研发更实用、高效的数据采集、训练方法,并采用多种智能终端作为接收终端,从而进一步提高本文所述系统与方法的实用性与便利性。此外,本文提出的方法目前只适用于5座车,对于7座车或其他类型的车,还需要进一步实验验证。