近年來,隨著無線技術(shù)和移動(dòng)通信的飛速發(fā)展,以及Bluetooth,Wifi,GPRS等無線技術(shù)的日趨成熟,同時(shí),各種無線定位技術(shù)的出現(xiàn),極大的方便了生活,推進(jìn)了社會(huì)的發(fā)展。藍(lán)牙技術(shù)(Bluetooth)作為一種短距離無線通訊技術(shù),其實(shí)質(zhì)內(nèi)容是為固定設(shè)備或移動(dòng)設(shè)備之間的通信環(huán)境建立通用的無線電空中接口(Radio AirInterface),將通信技術(shù)與計(jì)算機(jī)技術(shù)進(jìn)一步結(jié)合起來,使各種3C設(shè)備在沒有電線或電纜相互連接的情況下,能在近距離范圍內(nèi)實(shí)現(xiàn)相互通信或操作,實(shí)現(xiàn)數(shù)據(jù)共享。利用藍(lán)牙設(shè)備近距離范圍內(nèi)相互通信的特性,結(jié)合TOA算法,并全面考慮實(shí)際應(yīng)用中信號衰減、障礙物阻隔等情況,就可以實(shí)現(xiàn)較為精準(zhǔn)的藍(lán)牙定位系統(tǒng),再進(jìn)一步結(jié)合Web、數(shù)據(jù)庫等后臺(tái)支持,可以開發(fā)一套圖書館藍(lán)牙自動(dòng)導(dǎo)航系統(tǒng),以實(shí)現(xiàn)移動(dòng)終端書籍自助查詢與導(dǎo)航功能。
1 系統(tǒng)結(jié)構(gòu)及功能
圖書館書籍定位系統(tǒng)由三部分組成:安裝在用戶手機(jī)上的定位軟件(客戶端),后臺(tái)服務(wù)器以及分布在圖書館里的藍(lán)牙信號發(fā)射點(diǎn),如圖1所示。
客戶端實(shí)現(xiàn)了用戶在手持設(shè)備無線查詢書籍以及用戶的定位導(dǎo)航功能。用戶首次登錄軟件后,軟件通過無線網(wǎng)絡(luò)自動(dòng)從后臺(tái)數(shù)據(jù)庫下載地形和藍(lán)牙點(diǎn)分布的XML文件,并根據(jù)文件描述繪制出圖書館地形圖。之后用戶可以在書籍查詢界面以書名,作者,ISBN方式模糊查詢所需要的書籍。用戶選擇書籍后,軟件將所選書籍的位置標(biāo)注在地圖上,同時(shí)開啟藍(lán)牙,檢測周邊藍(lán)牙信號點(diǎn)信號強(qiáng)度并進(jìn)行定位。定位成功后軟件自動(dòng)計(jì)算用戶從當(dāng)前位置到書籍位置的最佳路徑,并標(biāo)注在地圖上。同時(shí),在用戶找書的過程中,系統(tǒng)會(huì)實(shí)時(shí)測量用戶所在位置,實(shí)時(shí)更新最佳路徑,引導(dǎo)用戶找到所需書籍。
后臺(tái)服務(wù)器儲(chǔ)存書籍詳細(xì)信息、圖書館地形圖以及各個(gè)藍(lán)牙信號發(fā)射點(diǎn)分布情況。并及時(shí)響應(yīng)用戶的不同請求。
藍(lán)牙信號發(fā)射點(diǎn)分布在整個(gè)圖書館內(nèi),信號范圍覆蓋整個(gè)圖書館,每個(gè)藍(lán)牙信號發(fā)射點(diǎn)有自己惟一的ID標(biāo)識號,當(dāng)用戶定位時(shí)通過標(biāo)識號即可從配置文件中知道此藍(lán)牙信號發(fā)射點(diǎn)的位置。
通過三個(gè)子系統(tǒng)的分工合作,系統(tǒng)實(shí)現(xiàn)了查詢定位導(dǎo)航一體化的高效圖書查詢功能。
2 定位系統(tǒng)軟件設(shè)計(jì)
2.1 定位系統(tǒng)客戶端軟件設(shè)計(jì)
軟件采用Windows Mobile 6.0作為開發(fā)平臺(tái),多普達(dá)838手機(jī)作為軟件測試平臺(tái),使用C#編程實(shí)現(xiàn)。目標(biāo)手機(jī)內(nèi)置藍(lán)牙協(xié)議棧,直接調(diào)用Winsock API搜索周圍藍(lán)牙設(shè)備并得到信號強(qiáng)度信息。軟件主要分為四部分:書籍搜索部分;地圖繪制引擎部分;藍(lán)牙定位部分;路徑計(jì)算部分。
書籍搜索 用戶在搜索界面里(圖2)選擇搜索條件(書名,ISBN,作者)輸入關(guān)鍵字進(jìn)行搜索,數(shù)據(jù)包利用HTTP協(xié)議通過無線網(wǎng)絡(luò)以POST請求方式發(fā)送到服務(wù)器,服務(wù)器解析出關(guān)鍵字(Query Word)后查詢數(shù)據(jù)庫得到書籍詳細(xì)信息,并序列化(Serialization)為標(biāo)準(zhǔn)XML,文檔通過HTTP協(xié)議返回到用戶手機(jī)。軟件反序列化(Deserialization)這些信息并呈現(xiàn)給用戶。
地圖繪制引擎 在獲得圖書館地形描述的XML數(shù)據(jù)后,繪制引擎解析文檔中的地形輪廓、書架位置以及藍(lán)牙點(diǎn)位置數(shù)據(jù),當(dāng)用戶選擇地圖界面時(shí),繪制引擎生成地圖,并將人物當(dāng)前位置、計(jì)算好的最佳路徑繪制到地圖上,最后顯示在PietureBox中(圖3)。
藍(lán)牙定位 定位系統(tǒng)每隔2 min搜索周圍藍(lán)牙信號發(fā)射點(diǎn),并把ID號有效的10個(gè)藍(lán)牙信號發(fā)射點(diǎn)存人隊(duì)列中。每10 s從隊(duì)列中選取6個(gè)點(diǎn)并且三三組合測試信號強(qiáng)度并利用TOA算法估算出用戶所在位置,最后從得到的20個(gè)點(diǎn)中計(jì)算中心位置作為當(dāng)前用戶位置。
路徑計(jì)算 系統(tǒng)得到用戶位置后,路徑計(jì)算系統(tǒng)通過啟發(fā)式搜索算法計(jì)算出用戶到書籍的最短路徑,并儲(chǔ)存在內(nèi)存中。[!--empirenews.page--]
2.2 定位系統(tǒng)服務(wù)器端軟件設(shè)計(jì)
服務(wù)器端使用Asp.net開發(fā),具備以下3項(xiàng)主要功能:在線書籍查詢;在線幫助服務(wù);客戶端配置更新。
當(dāng)接收到客戶端書籍查詢請求時(shí),在線書籍查詢根據(jù)請求類型查詢數(shù)據(jù)庫系統(tǒng)并以XML文檔的形式返回結(jié)果。書籍信息包括書名,作者,所在的書架,這樣通過書架位置就可以大致確定書的確切位置。所有數(shù)據(jù)利用無線網(wǎng)絡(luò)傳輸,極大地方便了用戶。
圖書館地形信息以及藍(lán)牙點(diǎn)分布圖的數(shù)據(jù)儲(chǔ)存在數(shù)據(jù)庫中。地形信息包括圖書館的形狀以及各個(gè)書架的位置、長度,以數(shù)據(jù)庫表的形式存放。藍(lán)牙信號發(fā)射點(diǎn)分布圖包括每個(gè)藍(lán)牙信號發(fā)射點(diǎn)位置,惟一標(biāo)識符(ID)。手機(jī)客戶端可以通過客戶端自動(dòng)更新模塊獲得這些信息。
3 關(guān)鍵技術(shù)的設(shè)計(jì)與研究
3.1 藍(lán)牙定位原理
3.1.1 傳統(tǒng)測量算法
(1)通過傳播時(shí)間測量方法
它通過在已知傳播速度的情況下,無線電波傳播的距離與它傳播的時(shí)間成正比。但上述方法存在兩個(gè)問題,影響了方法的使用性:
時(shí)鐘精度 因?yàn)樗{(lán)牙信號的傳播速度很快,又考慮到各種延遲,所以為了減小測量誤差必須使用高精度的時(shí)鐘,時(shí)間單位采用ns,這對硬件的要求過高,不實(shí)用。
時(shí)鐘同步 參與同一個(gè)定位過程的參考點(diǎn)之間必須保證時(shí)鐘的同步,這樣才能保證測量結(jié)果的正確性和精度。
(2)信號衰減測量方法
在理想的傳播環(huán)境下,無線信號的衰減與1/r2成正比(其中r為傳播距離)。但實(shí)際上,無線信號在空間傳播時(shí)能量的衰減是多種因素共同作用的結(jié)果,而不單單與傳播距離有關(guān)。在一個(gè)地形地物較為復(fù)雜的環(huán)境中,無線信號傳播時(shí)的衰減會(huì)受到反射、折射、多徑效應(yīng)等多種因素的影響,所以這種利用能量衰減測量距離的方法不如傳播時(shí)間測量方法精度高。
3.1.2 改進(jìn)的TOA算法
從可行性和精度兩個(gè)方面綜合考慮之后,我們決定采用依靠經(jīng)驗(yàn)的定位方法:它同樣是基于無線電波能量來定位的,不同的是它不是根據(jù)能量衰減與距離平方的正比關(guān)系來計(jì)算距離,而是通過一個(gè)數(shù)據(jù)庫來記錄一定數(shù)量的參考位置的信號強(qiáng)度,然后把待測物體檢測到的信號強(qiáng)度與之相比而得到待測物體的信號強(qiáng)度。如果參考位置足夠多的話,這種方法具有很好的精度,并且不受實(shí)際地理位置的影響,因?yàn)閰⒖嘉恢谜菑膶?shí)際的測量中來的。這種方法的一個(gè)缺陷是它要求每次實(shí)施時(shí)要測量大量的參考位置上的信號強(qiáng)度,并且隨著時(shí)間推移,地理環(huán)境必定會(huì)有所改變,這時(shí)又要對所有的參考位置重新進(jìn)行測量。
如圖4所示,系統(tǒng)從檢測到的有效藍(lán)牙點(diǎn)(通過ID判斷)選取三個(gè)點(diǎn)利用圖3所示方法定位。我們檢測到的信號強(qiáng)度值在263~230,隨著距離增大而減小,但不是線性變化。通過數(shù)據(jù)分析發(fā)現(xiàn)0~3 m,3~6 m,6~9 m區(qū)間內(nèi)可以近似成三個(gè)線性區(qū)間。于是分別測量并統(tǒng)計(jì)了一些藍(lán)牙點(diǎn)0,3,6,9 m的信號強(qiáng)度值,用來輔助計(jì)算。藍(lán)牙信號強(qiáng)度數(shù)據(jù)擬合結(jié)果如圖5所示。
[!--empirenews.page--]
我們把用戶便攜設(shè)備(手機(jī))接收到的信號強(qiáng)度值與它到該藍(lán)牙信號發(fā)射點(diǎn)的距離擬合為三個(gè)線性的函數(shù),信號強(qiáng)度與距離的函數(shù)關(guān)系為:
距離在[0,3]m時(shí):Bi=257.323 1*di-1.028 8即di=(1.028 8+Bi)/257.323 1;
距離在[3,6]m時(shí):Bj=255.192 6*dj-0.5045即dj=(0.504 5+Bj)/255.192 6;
距離在[6,9]m時(shí):Bk=270.625 6*dk-3.083 3即dk=(3.083 3+Bk)/270.625 6;
此時(shí),設(shè)用戶手機(jī)終端(M)位置為(x,y),藍(lán)牙信號發(fā)射點(diǎn)BSi,BSj,BSk的坐標(biāo)分別為(xi,yi),(xj,yj),(xk,yk),用戶從M到BSi,BSj,BSk的距離為:di,dj,dk,則下式成立:
每次定位用戶手機(jī)終端從搜索到的有效藍(lán)牙信號發(fā)射點(diǎn)中每10 s從隊(duì)列中選取最多6個(gè)點(diǎn)并且三三組合測試信號強(qiáng)度。之后分別利用上述算法估算出用戶所在位置,最后從得到的20個(gè)點(diǎn)中計(jì)算中心位置作為當(dāng)前用戶位置。如果搜索到的有效藍(lán)牙信號發(fā)射點(diǎn)小于3個(gè)則休眠半分鐘后繼續(xù)尋找,直到找到為止。如果測試得到的信號強(qiáng)度值不在230~270之間,系統(tǒng)則會(huì)重新測試其信號強(qiáng)度,如果仍然沒有得到正確結(jié)果系統(tǒng)會(huì)暫時(shí)拋棄這個(gè)藍(lán)牙信號發(fā)射點(diǎn),搜索其他有效藍(lán)牙信號發(fā)射點(diǎn)進(jìn)行定位。
3.2 尋路原理
尋路時(shí)使用啟發(fā)式廣度優(yōu)先搜索算法。在盲目廣度搜索算法中,人所在的每一個(gè)可行位置都可以有4個(gè)方向可以行走(前、后、左、右),向任意一個(gè)方向行走后如果沒有遇到障礙,則將新的狀態(tài)裝在一個(gè)隊(duì)列里,然后每次再從隊(duì)列里取出一個(gè)新的狀態(tài)來進(jìn)行擴(kuò)展,直到走到要找的書那里(終點(diǎn))。人走的每一個(gè)新節(jié)點(diǎn)都要記錄下來上一個(gè)節(jié)點(diǎn)的編號,最后經(jīng)過回溯找到從起點(diǎn)到終點(diǎn)的路徑。用一個(gè)自定義的結(jié)構(gòu)體Queue來記錄節(jié)點(diǎn)。
在找出路徑后,將其記錄在類的一個(gè)私有列表成員List<Path>TLP中,其中Path為自定義的結(jié)構(gòu)體,記錄路徑上的橫坐標(biāo)和縱坐標(biāo)。
4 結(jié) 語
通過藍(lán)牙技術(shù)和定位導(dǎo)航技術(shù)相給合,實(shí)現(xiàn)了圖書館書籍定位導(dǎo)航系統(tǒng)。本文論述了書籍定位導(dǎo)航系統(tǒng)的設(shè)計(jì),研究了改進(jìn)的TOA定位算法在藍(lán)牙定位中的應(yīng)用。研制的系統(tǒng)極大地縮短了在圖書館查找圖書的時(shí)間,方便了人們的生活,并且本系統(tǒng)在室內(nèi)定位的實(shí)際應(yīng)用中仍不斷的改進(jìn),還可以做出各種改進(jìn)以適應(yīng)更多的具體應(yīng)用,如在博物館、展會(huì)等地方,實(shí)踐證明本文給出的圖書館書籍定位導(dǎo)航系統(tǒng)具有廣闊的應(yīng)用前景。