劉挺,方澤軍,黃昆達,杜小甫
(廈門大學嘉庚學院信息科學與技術學院,福建漳州,363105)
經(jīng)過多年發(fā)展,高精度室內定位技術已經(jīng)比較成熟,目前進入了技術落地的階段。室內定位技術大多基于信號源,常見的信號源包括藍牙[1],WiFi,超寬帶等。不用信號源的定位技術包括地磁、慣導和視覺定位[2]等。針對多信標融合[3~4]的定位技術的研究,逐漸成為近年來的研究熱點。
首先本文論述了一套采用多信標融合的、可應用在不同應用場景中的高精度室內定位系統(tǒng)??梢圆捎盟{牙、WiFi、超寬帶等多種信標作為定位信號源。其次,本系統(tǒng)實現(xiàn)了三邊定位算法、最小二乘法、擴展卡爾曼濾波等多種定位算法,并對算法進行了一定的優(yōu)化。第三,本系統(tǒng)基于電信天翼云平臺實現(xiàn),各種定位信標數(shù)據(jù)上傳到云平臺,然后被后臺管理子系統(tǒng)抓取,再經(jīng)過定位算法解算,得到定位結果。最后,本系統(tǒng)實現(xiàn)了定位信息管理、在線三維地圖顯示等功能,其中在線三維地圖功能基于Three.js開發(fā)實現(xiàn)。
本文提出的綜合定位系統(tǒng)是一套通用的室內定位管理系統(tǒng),其應用場景廣闊??梢詰迷诤芏鄨龊?,例如:單位內部定位導航、商場定位導航、大型停車場定位導航等場景。
“綜合定位系統(tǒng)”的整體設計如圖1所示。
圖1 綜合定位系統(tǒng)總體架構
感知層:這一層是整個系統(tǒng)的最底層,也是物理層,即所有直接參與定位的終端設備。整體分為定位終端和定位信標兩大類設備,其中定位終端是指待定位的設備,一般放置在待定位人員或物體上。定位終端又分為主動定位終端和被動定位終端,主動定位終端是指本身具有運算能力,可以進行定位解算顯示的設備,例如智能手機;被動定位終端則是不具有運算能力,只負責接收發(fā)送信號,它的定位要在后臺服務器實現(xiàn)。定位信標,是指設置在固定位置,不斷發(fā)射信號的設備,他們的信號可以被定位終端接收并結算。利用不同定位信標的信號和位置信息,可以計算得到待定位終端的位置信息。
傳輸層:是整個系統(tǒng)中的數(shù)據(jù)通道,負責定位數(shù)據(jù)和其他數(shù)據(jù)傳輸,能夠連接感知層與服務層,實現(xiàn)雙向通信。一般包括4G、5G移動通信,LORA、ZigBee自組網(wǎng)通信,WiFi、藍牙局域網(wǎng)通信等技術。
服務層:這是整個系統(tǒng)核心層,主要包括系統(tǒng)云服務器和遠程終端管理兩部分。系統(tǒng)云服務器包含相關軟硬件資源,本文論述的綜合定位系統(tǒng)后臺子系統(tǒng)就部署在云服務器上。遠程終端則是任意一臺可以聯(lián)網(wǎng)的電腦,也包括智能手機,可以實現(xiàn)遠程管理。
“綜合定位系統(tǒng)后臺子系統(tǒng)”是為“綜合定位系統(tǒng)”服務的后臺管理子系統(tǒng),主要功能包括定位引擎和服務管理兩部分。后臺子系統(tǒng)的整體架構如圖2所示。
圖2 綜合定位系統(tǒng)后臺子系統(tǒng)架構
其中定位引擎包括定位信息接入模塊和定位解算模塊兩部分。定位信息接入模塊主要負責與定位終端的通信,定位解算模塊負責對被動定位終端進行定位解算。
服務管理包括服務數(shù)據(jù)管理、服務展示和服務支撐三模塊。數(shù)據(jù)管理模塊負責管理定位系統(tǒng)中所有涉及到的相關數(shù)據(jù);服務展示模塊負責完成定位導航信息的實時顯示、歷史數(shù)據(jù)顯示和數(shù)據(jù)分析顯示等功能;服務支撐模塊負責對外界提供第三方服務接口,以利于第三方進行二次開發(fā)。
在線三維地圖屬于服務展示模塊,同時也涉及到服務數(shù)據(jù)管理的功能。首先地圖繪制的數(shù)據(jù)由服務數(shù)據(jù)管理模塊進行管理,然后在網(wǎng)頁上繪制結果地圖時,又由服務展示模塊提供相應的繪圖功能。
本系統(tǒng)采用基于瀏覽器的B/S結構,因此最終定位結果都要在網(wǎng)頁中展示。本系統(tǒng)基于Three.js進行了二次開發(fā),設計實現(xiàn)了在線三維地圖的繪制模塊。
目前比較通用的Web端3D繪圖技術為WebGL(全名Web Graphics Library),新版HTML5 中通過控件canvas,可以繪制3D模型。而Three.js是由一位名叫Mrdoob的西班牙籍程序員開發(fā)的一款的基于WebGL的,開源JavaScript的第三方插件庫。Three.js對WebGL提供的API進行了二次封裝,使得開發(fā)者無需去書寫那些復雜冗余的代碼。通過使用three.js書寫一些簡單的代碼即可實現(xiàn)復雜的三維圖像渲染。
使用Three.js以及可以比較方便的進行在線3D圖像繪制,但是具體到我們的應用場景中,還是有所欠缺。首先,Three.js本質上是利用javascript進行編程,并不支持數(shù)據(jù)庫技術,因此不能進行數(shù)據(jù)庫讀寫。其次,Three.js并沒有針對地圖繪制的優(yōu)化??紤]到這些缺點,我們對Three.js進行再次開發(fā),進行進一步封裝,開發(fā)出可以更方便進行數(shù)據(jù)庫讀寫,并繪制3D地圖的javascript插件。
本文將系統(tǒng)分為五大模塊。分別是模型導入模塊,自適應渲染模塊,性能監(jiān)視模塊,視角控制模塊以及數(shù)據(jù)存儲模塊這五大模塊。如圖3所示。
圖3 系統(tǒng)功能結構模塊
自適應渲染模塊是核心,用于渲染生成在線3D圖像。性能監(jiān)視模塊可以顯示當前渲染FPS值,用于性能監(jiān)控。視角控制模塊提供與用戶進行交互的接口,用戶可以通過該模塊實現(xiàn)圖像的縮放、旋轉、選擇、平移等功能,該模塊也是核心模塊之一。
模型導入模塊負責導入外部模型,與自適應渲染模塊搭配使用。目前我們開發(fā)的版本支持的模型包括STL、PLY、OBJ三種模型文件。數(shù)據(jù)存儲模塊負責將模型數(shù)據(jù)存儲在數(shù)據(jù)庫中,并提供讀取功能。方便模型數(shù)據(jù)長期保持,以及共享。
本系統(tǒng)為綜合定位系統(tǒng)的后臺子系統(tǒng),并沒有考慮具體的應用場景。因此所選技術遵循成熟、夠用原則,并不會過渡追求性能。開發(fā)語言選用JAVA,主要是考慮到后臺定位解算算法的要求。采用J2EE企業(yè)級開發(fā)組件進行網(wǎng)站開發(fā),配合Spring+SpringMVC+MyBatis框架使用。后臺數(shù)據(jù)庫選擇MySQL數(shù)據(jù)庫,Centos 7 操作系統(tǒng),Apache+Tomcat網(wǎng)絡服務器,搭建完整的私有云環(huán)境進行開發(fā)。
本系統(tǒng)已經(jīng)開發(fā)完成,如圖4所示,是后臺管理子系統(tǒng)的主頁。信息管理內容包括:定位單位、區(qū)域、信標、終端、結果等管理,也實現(xiàn)了不同權限用戶的管理。最后在“定位信息可視化”模塊中實現(xiàn)定位結果在3D地圖中的顯示。
圖4 后臺子系統(tǒng)主界面
如圖5所示,是3D地圖繪制后的效果圖。
圖5 3D地圖繪制效果圖
本文開發(fā)了一套多信標融合綜合定位系統(tǒng)的后臺子系統(tǒng),基于電信天翼云進行數(shù)據(jù)傳輸,基于Three.js進行二次開發(fā)實現(xiàn)了在線3D地圖繪制。該系統(tǒng)驗證了多信標融合綜合定位系統(tǒng)的開發(fā)可行性,證明其具有開發(fā)難度低,功能強大,性能優(yōu)秀等優(yōu)勢。未來的工作中,我們將基于這個后臺系統(tǒng)進行深入研究,實現(xiàn)指紋算法、基于深度學習的視覺定位算法等。