丁 磊,劉清華,江志文
DING Lei,LIU Qinghua,JIANG Zhiwen
廣東工業大學 計算機學院,廣州 510006
School of Computer Science and Technology,Guangdong University of Technology,Guangzhou 510006,China
隨著電子貨架標簽[1]在商場中的廣泛應用,使得顧客在商場中購物越來越便利,一方面顧客通過電子貨架標簽上的信息可以了解商品的生產地、規格、價格等,另一方面零售商可以通過POS系統更改商品信息來管理電子貨架標簽。從搜集顧客數據信息到解決方案,如能對此善加利用,則能使企業在激烈的市場競爭中脫穎而出。室內定位技術一般應用在用戶手機客戶端在商場中通過請求服務器,服務器端會根據用戶所在的區域進行定位,然后把用戶所在區域的商品列表信息推送到手機客戶端,用戶還可以通過客戶端提交自己對商品的使用心得等[2]。但是如果能夠通過定位技術獲得消費者在商場中位置信息、在商場中駐留的時間,并把這些位置信息存儲起來并傳送到數據中心結合POS系統中消費者購買的商品,來分析顧客的消費習慣并在顧客分析基礎上對消費者后期進行定向服務、定向推送,及時做出準確的銷售預測,再傳導到供應鏈的各個環節,實現高效的商品組合、訂單管理、物流安排,成本更低,周轉更快,把整個供應鏈的效力充分發揮出來。
本文在電子貨架標簽系統的基礎之上開發顧客定位系統。在定位算法上,謝可等人[3]提出遮蔽因子方法對傳統的測距方法進行了改進,并進行了仿真研究,效果良好。為此,該系統采用其提出的測距方法進行定位,以提高定位精度,來獲取顧客位置信息以及顧客的駐留時間,為企業后期做數據分析提供一個獲取顧客新數據的平臺。
電子貨架標簽系統[4](Electronic Shelf Label System,ESLS),一般由電子貨架標簽、智能網關、后臺服務器構成。該室內定位數據采集系統是ESLS的一個子系統,該系統負責收集消費者在商場中的位置信息、駐留時間,并把該信息傳送到數據中心。該系統的電子標簽安裝在購物車或者是購物籃上,如圖1中所示。電子標簽顯示含有藍牙模塊MAC地址、購物籃信息以及包含這些信息的二維碼[5]。每當顧客進入商場使用購物籃時,通過微信掃描二維碼的方式綁定用戶信息。智能網關一方面負責采集購籃上的電子標簽的藍牙RSSI值,并把該值傳送到后臺服務器進行定位計算,另一方面負責管理商品的電子貨架標簽,方便更改商品的價格、規格等信息。數據中心包含標簽信息、商品信息和消費者在商場中的消費行為以及定位系統中的消費者位置信息等數據,然后運用ETL技術進行數據處理。ETL[6]是數據抽取、轉換和裝載(Extract,Transformation,Loading)的英文簡稱,是數據倉庫獲取高質量數據的關鍵環節,是對分散在各個業務系統中的現有數據進行提取、轉換、清洗和加載的過程,是這些數據成為商業智能系統需要的有用數據。

圖1 系統架構圖
定位系統采用智能網關同時對電子標簽進行RSSI采集并傳送到后臺服務器算出電子標簽與智能網關的距離,進而得出購物籃的位置坐標。在實際環境中,通過RSSI來估算電子標簽與智能網關之間的距離是有較大誤差的,主要原因是:藍牙底層協議中會根據需要自動調節發射功率;室內環境中存在多經效應以及繞射、障礙物等因素,導致智能網關端收到的RSSI值波動比較大。為此在智能網關采集到RSSI值需要進行高斯濾波處理后,才能向服務端發送,然后進行測距計算。本文選擇了RSSI高概率發生區,經過大量的測試,RSSI的取值范圍為[0.15σ+μ,3.09σ+μ][7],其中:

式中,n為濾波前的RSSI個數。
然后,取出該范圍內的信號強度值,利用式(3)求出其算術平均值作為電子標簽的信號強度值,發送到服務器端。

式中,m為濾波后的RSSI個數,m小于式(1)中的n。
通過獲取藍牙RSSI的值進行定位的方法主要分為兩類:基于位置指紋算法[8-9]和基于測距定位算法[10-11]。前者方法的優點是定位精度高,但是計算復雜,且在離線建立位置指紋庫時需要把實際環境中的每個采集點進行采樣,并建立RSSI與物理位置的對應表,使得前期工作量巨大。
本文在算法實現上采用的是基于距測的定位算法。在室內環境中,電磁波的傳播過程不能用自由空間的傳播模型來表示,較為常用的是一種帶有遮蔽因子的對數正態分布模型[3]。

式中,P是距離為d時的信號強度,P0是距離為d0的信號強度,該值需要現場測量,d0通常取為1 m。η為衰減因子,該值需要現場多次測量后進行擬合。ξ為遮蔽因子,是均值為μ,方差為σ2的正態隨機變量。
設各個智能網關收到電子標簽的信號強度為P=[P1P2…PN],對應的距離為 D=[D1D2…DN],由式(4)可得到P的對數似然函數為:

其中
由最大似然估計原理可知,當l(P|(x,y))取得最大時,可得到電子標簽點的估計位置,即

利用共軛梯度法求解式(5),可得到估計坐標(,)。
在上述似然函數求解位置坐標時,未考慮式(4)中的遮蔽因子,求出的距離與實際的位置存在偏差,使得定位精確度下降。為此采用調節遮蔽因子方法對式(6)改進,進行定位計算,該定位方法為一種循環執行的程序,每一次循環都包含4個部分:粗定位、調節遮蔽因子、調整標準差,以及循環結束判定[3]。
(1)粗定位
首先,令式(5)中的為:

σi為智能終端i與電子標簽之間的遮蔽因子,首次計算時,令 σi=0 ,之后求解式(6)得到 ()。
(2)調整遮蔽因子
遮蔽因子的調整公式為:

其中為調整前的 σi,為調整后的 σi,其中di為模型映射距離,由式(7)可以得出:

為估計坐標計算距離:

其中,xi,yi為智能終端i的坐標。
(3)調整標準差
此時式(5)中用到的遮蔽因子標準差δ為:

其中σ0為初始的遮蔽因子標準差。
(4)循環結束判定
若δ大于0,則再次執行循環,否則,停止執行循環。循環結束之后再執行一次精定位,即再次求解式(6)得到最終的)。
智能網關嵌入Android系統,該設備主要實現電子標簽的Mac以及RSSI值的獲取并發送到服務器端,其中網關的藍牙模塊采用TI公司的CC2540作為射頻發射器。在該Android系統上開發應用程序[12](Application,APP)主要負責電子標簽RSSI的采集與后臺服務器的交互。具體實現的流程如下:(1)打開藍牙:得到BluetoothAdapter對象判斷該設備是否有藍牙,有則打開藍牙;(2)藍牙設備的掃描:①獲得IntentFilter對象,添加BluetoothDevice廣播信息過濾;②創建Broadcast-Receiver對象,注冊廣播接收器,接收并處理搜索結果;③BluetoothAdapter的對象調用startDiscovery()方法,APP會將查找到的設備以廣播形式發出去。
由于受到室內環境等影響,導致收到電子標簽的RSSI值不穩定。在藍牙設備掃描階段②步驟中,采用濾波算法對目標電子標簽采集的RSSI值進行處理,智能網關端每5 s通過HTTP請求向服務器端發送mac地址和處理后RSSI的值以及系統時間值,APP流程如圖2。
系統服務器端是搭建在基于Web的Java EE[13]平臺之上,采用SSH(Spring4、Struts2、Hibernate)框架進行開發的。對于整個開發平臺環境的簡單搭建描述如下:JDK 1.7,集成開發環境MyEcplice 2014,服務器tomact 8.0.9,數據庫MySQL 5.5。

圖2 APP流程圖
整個服務器端如圖3所示。其中,com.lbs_server.domain該包放置的是普通的JavaBean,系統運用Hibernate技術將這些JavaBean對象映射到數據庫中;com.lbs_server.actions包內放置的是系統的所有action類,處理前端的各類請求,包括查找顧客的位置、接收智能網關端的信息等操作;com.lbs_server.service包內放置的是系統的所有service接口,定義了所有用到的業務邏輯方法;com.lbs_server.serviceImpl包內放置的是系統的所有service的實現類,實現了所有業務邏輯方法的具體行為;com.lbs_server.dao包內放置的是系統所有數據訪問的數據持久化方法的實現的接口;com.lbs_server.dao-Impl包內放置的是所有dao接口的實現類,直接操作數據庫中的數據,包括各類數據的增、刪、改、查等。

圖3 服務器端圖
智能網關端通過HTTP協議[14-15]請求的方式與后臺系統進行交互。HTTP請求的路徑包括服務器的URL、端口號以及請求的參數值。參數值由int類型的RSSI、String類型的mac以及智能網關端發送到服務器端String類型的time組成。com.lbs_server.action包下面的getAp()的方法中,該方法調用com.lbs.serverImple中的getApDistance(String mac,int rssi,String time)的方法,該方法返回智能網關與電子標簽的距離。在商場中放置4個智能網關得到4組電子標簽的距離和mac地址、時間,然后經過getxx_yy(double dd1,double dd2,double dd3,double dd4,String mac,Date time)方法計算出搜索到電子標簽的位置坐標,定位算法流程如圖4。

圖4 定位算法流程圖
智能網關端主要方法:

服務器端主要方法如下:

為了驗證該實驗的有效性,選擇了一間6 m×9 m的小型超市,劃分區域建立室內坐標系,4個智能網關分別置于坐標(0,0),(4.8,0),(0,7.2),(7.2,7.2)的位置,1部手機、1臺電腦、1臺服務器、1個購物籃和電子標簽。
系統工作流程如下:(1)4個智能網關的APP同時打開,掃描電子標簽設備,服務器端向智能網關端發送校準時間,使得智能網關端采集的RSSI的開始時間值一致;(2)手機微信掃描電子標簽上的二維碼,使得顧客與購物籃、電子標簽綁定;(3)每隔15 s移動電子標簽的位置,同時管理員在電腦端登錄定位系統,通過查詢購物籃編號獲得正在使用該購物籃顧客的位置信息,并在該顧客走出定位區域后,通過查詢顧客編號得到顧客駐留的時間。系統查詢結果如圖5。

圖5 查詢結果圖
定位信息采集的數據如表1所示。

表1 定位信息采集的數據m
通過實驗證明,利用調節遮蔽因子的測距方法,能夠達到精確定位的效果。一方面在位置信息頁面通過搜索購物籃編號能夠知道顧客的位置以及時間,另一方面在駐留時間頁面也能夠搜索到購物籃進出測試區域的時間值以及在這一片區域停留的時間,該駐留時間理論應5分鐘0秒,實際為7分鐘08秒。其原因來自于在位置之間互相移動時,導致的延時,但該獲得的時間為在整個實驗環境中駐留的時間值。
該系統采用調節遮蔽因子的測距方法,進行定位。在智能網關端對采集的RSSI值用高斯濾波算法進行過濾,采用SHH框架搭建后臺系統,通過實驗驗證了該測距算法的可行性。管理員通過后臺頁面查詢到顧客的位置以及在測試區域的駐留時間。該獲得數據信息可以結合電子貨架標簽系統以及與消費者在商場中購買商品信息等的數據進行數據分析,為發現潛在的顧客提供了便利。
參考文獻:
[1]丁磊,張彩祥,馮永晉.基于藍牙4.0的低功耗電子貨架標簽設計[J].電子技術應用,2014,40(5):29-34.
[2]顧聰,陳益強,劉軍發,等.基于Android平臺的室內LBS系統設計與實現[J].計算機工程與設計,2012,33(1):396-401.
[3]謝可,丁磊.關于ESL定位系統優化設計仿真研究[J].計算機仿真,2015,32(8):311-314.
[4]張彩祥.基于BLE的電子貨架標簽系統的研究與設計[D].廣州:廣東工業大學,2014.
[5]桂振文,王涌天,劉越,等.二維碼在移動增強現實中的應用研究[J].計算機輔助設計與圖形學學報,2014,26(1):35-39.
[6]徐俊剛,裴瑩.數據ETL研究綜述[J].計算機科學,2011,38(4):15-17.
[7]朱明輝,張會清.基于RSSI的室內測距模型的研究[J].傳感器與微系統,2010,29(8):19-22.
[8]蔡朝暉,夏溪,胡波,等.室內信號強度指紋定位算法改進[J].計算機科學,2014,41(11):178-181.
[9]Wu Zheng,Jedari E,Muscedere R,et al.Improved particle filter based on WLAN RSSI fingerprinting and smart sensors for indoor localization[J].Computer Communications,2016,83(1):64-71.
[10]顧宗海.基于RSSI測距的室內定位算法研究[D].鄭州:鄭州大學,2011.
[11]羅炬鋒,付耀先,王營冠.基于RSSI測距的WLS定位算法[J].華中科技大學學報:自然科學版,2011,39(11):34-38.
[12]郭霖.第一行代碼Android[M].北京:人民郵電出版社,2014.
[13]李剛.輕量級Java EE企業應用實戰[M].4版.北京:電子工業出版社,2015.
[14]Stevens W R.TCP/IP詳解(卷1:協議)[M].范建華,胥光輝,張濤,等譯.北京:機械工業出版社,2014.
[15]Shiva S R P,Swetha L,Prasad C G.Analysis and design of enhanced HTTP proxy cashing server[J].International Journal of Computer Technology and Applications,2011,2(3):537-541.