趙澤,高源,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座車或其他類型的車,還需要進一步實驗驗證。