錢瑞琦+王峰
摘要:針對傳統(tǒng)北斗定位接收機(jī)在研發(fā)、調(diào)試過程中數(shù)據(jù)收集和分析方面的不足,借助云服務(wù)和web應(yīng)用易于開發(fā)、便于使用的特性,提出了一種北斗定位接收機(jī)數(shù)據(jù)云檢測平臺。該平臺以云服務(wù)為載體,使用web框架結(jié)合數(shù)據(jù)存儲、定位解算、數(shù)據(jù)分析等功能。與傳統(tǒng)大型分析軟件相比,該平臺易于遠(yuǎn)程部署和功能擴(kuò)展,為北斗衛(wèi)星接收機(jī)的研發(fā)提供通用、靈活的數(shù)據(jù)共享和分析入口,降低軟硬件研發(fā)人員的溝通成本,簡化數(shù)據(jù)的分析流程。平臺的部署和應(yīng)用結(jié)果展示了該平臺的有效性。
關(guān)鍵詞: 云服務(wù);網(wǎng)頁框架;北斗定位接收機(jī);定位解算;數(shù)據(jù)分析
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)26-0006-04
Designed and Implementation of Cloud Detection Platform for Beidou Positioning Receiver Data
QIAN Rui-qi, WANG Feng
(Guangdong University of Technology, Guangzhou 510006,China)
Abstract:To solve problems of data collection and analysis during process of research and development of traditional beidou positioning receiver, through the help of cloud services and web applications by the features of easy to develop and use, a novel platform for beidou positioning receiver data detecting based on cloud service was proposed. With the cloud service as a carrier, this platform uses web framework combining functions of data storage, positioning algorithms, data analysis, etc. Compared with the traditional large analysis software, this platform is convenient in remote deployment and function extension, provides a general and flexible data sharing and analysis entrance for beidou satellite receiver's research and development. It could reduce the communication cost among hardware and software developers, simplify the data analysis process. The results of platform deployment and application demonstrate the effectiveness of the platform.
Key words:cloud service; web framework; beidou positioning reciever; postioning solution; data analysis
北斗衛(wèi)星導(dǎo)航系統(tǒng)作為國家重大戰(zhàn)略項目,近幾年來發(fā)展迅速,初現(xiàn)市場趕超之勢,已經(jīng)成為GNSS方向的研發(fā)熱點。在快速成長的北斗導(dǎo)航市場中,想要搶占市場先機(jī),必須加快研發(fā)速度。在完整的商用北斗衛(wèi)星定位接收機(jī)項目的研發(fā)周期內(nèi),需要進(jìn)行軟件和硬件的協(xié)同開發(fā)和調(diào)試,其中硬件的測量數(shù)據(jù)和軟件的定位解算數(shù)據(jù)是研發(fā)過程中的調(diào)試分析源。對接收機(jī)測量和定位解算數(shù)據(jù)的進(jìn)行處理與檢測,從而定位到工程中軟件或硬件的錯誤環(huán)節(jié),是接收機(jī)研發(fā)過程中的主要調(diào)試工作。
傳統(tǒng)的定位數(shù)據(jù)檢測流程,一般依賴于Matlab或者商業(yè)分析軟件,Matlab雖然具有豐富易用的繪圖工具,但是使用Matlab語言對衛(wèi)星電文原始數(shù)據(jù)和二進(jìn)制數(shù)據(jù)的處理較為繁瑣,開發(fā)復(fù)雜的較高,而商業(yè)分析軟件只能針對常見芯片或接收機(jī)的定位數(shù)據(jù)進(jìn)行分析,很難做到定制化。隨著云服務(wù)概念的興起和配套技術(shù)的成熟,基于云服務(wù)的北斗衛(wèi)星定位數(shù)據(jù)檢測平臺,不僅可以解決Matlab開發(fā)復(fù)雜和商業(yè)分析軟件定制化困難的問題,還能將數(shù)據(jù)永久存儲于云端,方便共享、回顧和比較歷史數(shù)據(jù),便于開發(fā)人員協(xié)同交流。由于直接通過網(wǎng)頁操作,不限制訪問操作系統(tǒng),避免了部署大型軟件的繁瑣,甚至使用手機(jī)也能上傳和查看數(shù)據(jù) [1]。
1技術(shù)背景
1.1 云服務(wù)結(jié)構(gòu)
硬件抽象化和軟件快速迭代部署是云服務(wù)生態(tài)中的重要特點。具體結(jié)構(gòu)如圖1所示。
圖1 云服務(wù)結(jié)構(gòu)
云服務(wù)器的硬件載體就是計算機(jī)、網(wǎng)絡(luò)、存儲等基礎(chǔ)構(gòu)件的抽象整合,是云服務(wù)所倡導(dǎo)的按需分配、自有伸縮的前提條件?;谠品?wù)的軟件的開發(fā)和部署完全基于網(wǎng)絡(luò)的遠(yuǎn)程操作,研發(fā)人員只需專注于應(yīng)用功能的實現(xiàn),而不必在硬件底層系統(tǒng)的開發(fā)和維護(hù)上面耗費過多精力和資源,因此這種硬件與軟件隔離的特性能夠大幅縮短軟件開發(fā)與部署的周期。
1.2 Docker虛擬化技術(shù)
Docker的本質(zhì)是Container,它被形象地看作一個應(yīng)用封裝容器,以往開發(fā)者開發(fā)一款應(yīng)用,需要考慮硬件、操作系統(tǒng)、運行環(huán)境的適配,有了容器就不用考慮這些。
Docker可以幫助開發(fā)者打包他們的應(yīng)用及其依賴包到一個可移植的容器之中,發(fā)布到任何主流的Linux機(jī)器上,進(jìn)而實現(xiàn)虛擬化。Docker完全采用了沙盤機(jī)制,容器相互之間不會有任何接口,幾乎不產(chǎn)生任何性能開銷,并且不依賴任何語言、框架或系統(tǒng)[2]。
1.3基于Python的web框架技術(shù)
Python是一種靈活、強(qiáng)大、易于掌握的高級編程語言,其語言自身已經(jīng)提供了較為完備的網(wǎng)絡(luò)編程的基礎(chǔ)組件。為了降低開發(fā)人員使用Python進(jìn)行web開發(fā)的復(fù)雜度,開源社區(qū)提供了各種豐富的具有高可用性的web框架工具。
web.py和django都是python的web開發(fā)框架。Django提供了完備的web開發(fā)功能模塊,適合基于內(nèi)容的大型web開發(fā),而web.py小巧、簡單、實用,可以快速地完成web頁面,適合以web為內(nèi)容載體的跨平臺應(yīng)用開發(fā)。
1.4常見北斗衛(wèi)星接收機(jī)
市面上常見的接收機(jī)廠商有Ublox、Novatel、杭州中科微電子等。這些廠商的部分接收機(jī)產(chǎn)品具有原始測量輸出的功能,利用這些測量數(shù)據(jù)可以實現(xiàn)脫機(jī)定位解算開發(fā)和驗證,甚至能進(jìn)一步進(jìn)行偽距離差分和RTK定位。
在接收機(jī)研發(fā)過程中,需要增加接收機(jī)原始測量數(shù)據(jù)輸出功能。通過與其他廠商接收機(jī)的原始數(shù)據(jù)的對比分析,可以直觀判斷出接收機(jī)測量性能和問題。不僅如此,接收機(jī)輸出的原始測量數(shù)據(jù)能夠簡化定位解算算法的離線調(diào)試流程,便于軟、硬件開發(fā)項目分離,降低項目整體開發(fā)、調(diào)試的復(fù)雜度。
2平臺設(shè)計與實現(xiàn)
2.1平臺整體架構(gòu)
云服務(wù)器具有部署靈活、成本低廉的優(yōu)勢,而且其承載的應(yīng)用先天具有高度可協(xié)作性。在平臺的設(shè)計中也需要借助云服務(wù)開發(fā)生態(tài)系統(tǒng)中成熟的持續(xù)集成工具,實現(xiàn)對應(yīng)用功能的高效擴(kuò)展和維護(hù),既能快速響應(yīng)用戶反饋,實現(xiàn)版本的快速迭代,又能方便的以插件形式添加數(shù)據(jù)分析功能。為了讓用戶在使用過程中可以實時共享接收機(jī)的測量原始數(shù)據(jù)和定位數(shù)據(jù)分析結(jié)果,分析檢測平臺需要支持各種使用環(huán)境,而web服務(wù)先天具有跨平臺的優(yōu)勢,因此選擇將北斗衛(wèi)星接收機(jī)數(shù)據(jù)分析檢測平臺以web服務(wù)的形式部署于云服務(wù)器中。
云服務(wù)平臺的軟件分為網(wǎng)頁框架引擎和數(shù)據(jù)分析檢測子系統(tǒng)兩大模塊。網(wǎng)頁框架引擎以web.py為基礎(chǔ),承載著與使用者瀏覽器交互的工作。數(shù)據(jù)分析檢測子系統(tǒng)以解算模塊為核心,實現(xiàn)用戶數(shù)據(jù)的解析、計算、分析、格式轉(zhuǎn)換等功能,并且各部分子模塊支持插件形式的擴(kuò)展。平臺整體架構(gòu)如圖2。
圖2 平臺整體架構(gòu)
2.2網(wǎng)頁框架引擎
圖3 網(wǎng)頁框架引擎工作流程
網(wǎng)頁框架引擎是用戶瀏覽器與分析檢測子系統(tǒng)的溝通媒介,其中用戶瀏覽器可以是嵌入至應(yīng)用的webview控件。利用web.py提供的網(wǎng)址-方法映射功能,實現(xiàn)了網(wǎng)頁請求至方法的路由。當(dāng)用戶點擊頁面按鈕,瀏覽器向網(wǎng)頁框架發(fā)送頁面請求,框架獲取請求網(wǎng)址和參數(shù)后,與地址路由表進(jìn)行匹配,執(zhí)行對應(yīng)的可調(diào)用方法,并將參數(shù)傳遞給此方法。其中,可調(diào)用方法主要分為兩類:頁面交互類和分析檢測類。頁面交互類包括固定頁面展示、用戶注冊與管理、文件傳輸和管理、功能設(shè)置等方法,分析檢測類包括數(shù)據(jù)解析、定位解算。網(wǎng)頁框架引擎工作流程如圖3。
2.3數(shù)據(jù)解析模塊
檢測平臺所支持的衛(wèi)星芯片、接收機(jī)的范圍和種類由數(shù)據(jù)解析模塊決定。市場上較為流行的Novatel、Ublox、中科微等廠家的產(chǎn)品均有自己的數(shù)據(jù)傳輸協(xié)議,想要獲取產(chǎn)品的測量數(shù)據(jù)等信息,必須通過數(shù)據(jù)解析模塊按照數(shù)據(jù)傳輸協(xié)議進(jìn)行解析,進(jìn)而轉(zhuǎn)換成解算模塊和數(shù)據(jù)分析模塊可以識別的信息參數(shù)。常見接收機(jī)數(shù)據(jù)傳輸協(xié)議見表1。
表1 常見接收機(jī)數(shù)據(jù)傳輸協(xié)議
[協(xié)議
名稱\&測量
信息\&星歷信息\&定位
信息\&接收機(jī)
廠商\&ubx\&ubx-rxm-raw\&ubx-rxm-sfrb\&nmea\&Ublox\&novatel\&rangeb\&rawephemb\&nmea\&Novatel\&casic\&rxm-raw\&MSG\&nmea\&中科微\&]
2.4定位解算模塊
2.4.1解算用途和內(nèi)容
如果需要驗證用戶上傳的原始數(shù)據(jù),包括星歷數(shù)據(jù)、測量數(shù)據(jù)、校正參數(shù)等的正確性,或者驗證用戶定位信息的準(zhǔn)確性,需要利用定位解算模塊對原始數(shù)據(jù)進(jìn)行解算,得到參考定位結(jié)果與用戶定位信息進(jìn)行比對分析,判定原始數(shù)據(jù)是否有誤。定位解算模塊是檢測平臺的重要組件,通過定位解算模塊解算出的定位結(jié)果是數(shù)據(jù)分析過程中的重要參考信息。所以解算模塊的解算性能和解算通用性是需要重點考慮的問題。
2.4.2衛(wèi)星軌道計算
計算衛(wèi)星軌道需要開普勒參數(shù),在提取了軌道參數(shù)后,通過迭代的方法可以求解其方程,再通過坐標(biāo)變換即可得到衛(wèi)星的空間位置,然后送到后續(xù)程序繼續(xù)處理[3]。
為了在保證精度的情況下降低我們算法的復(fù)雜程度,衛(wèi)星軌道實際上可以通過三次艾爾米特差值實現(xiàn),同時不會降低太大精度,該方法同時也是我們解算方法的一個可選方法,它能大大減少計算量,當(dāng)用戶需要時可以作為一個選擇模塊運行。
2.4.3接收機(jī)位置計算
為了讓計算結(jié)果能夠正確反映每一歷元的原始數(shù)據(jù)情況,這里不適于使用卡爾曼濾波技術(shù)進(jìn)行濾波平滑,所以選擇通過最小二乘法對原始數(shù)據(jù)進(jìn)行逐個歷元的解算。
在利用最小二乘法解線性方程之前,我們已經(jīng)得到了方程的一些必要參數(shù),有線性方程理論,如果方程數(shù)大于或等于未知數(shù),都能找到解,我們一般會得到一個多未知數(shù)的方程。因此這里主要將非線性的方程線性化,再通過最小二乘法進(jìn)行求解[3]。如果已知接收機(jī)自身統(tǒng)計特性,可以使用權(quán)重最小二乘法進(jìn)行定位解算,提高解算準(zhǔn)確度。
2.5數(shù)據(jù)分析檢測
北斗衛(wèi)星接收機(jī)輸出的可直觀展示的內(nèi)容包括:衛(wèi)星軌道參數(shù)、衛(wèi)星時鐘參數(shù)、廣播誤差矯正參數(shù)、偽距離測量值、多普勒測量值、載波相位測量值、衛(wèi)星位置坐標(biāo)、接收機(jī)輸出定位坐標(biāo)、平臺解算定位坐標(biāo)。在本平臺里,各類參數(shù)以表格的形式展示,測量值和坐標(biāo)以時間軸形式展示。
衛(wèi)星定位接收機(jī)研發(fā)過程中需要關(guān)注的性能指標(biāo)主要有啟動速度、靈敏度、偽距離精度、載波相位精度、接收機(jī)時鐘精度、定位精度、定位準(zhǔn)確度等。其中對最終定位解算精度有直接影響的因素是偽距離精度、載波相位精度、接收機(jī)時鐘精度和解算算法等。
圖4 偽距信息的手機(jī)瀏覽效果
針對偽距離精度采取雙差分析法,通過兩組同一時刻來自不同接收機(jī)的測量數(shù)據(jù)進(jìn)行接收機(jī)間和衛(wèi)星間求差,減弱短基線情況下的衛(wèi)星鐘差、接收機(jī)鐘差、對流層誤差、電離層誤差等因素的影響,所得數(shù)據(jù)能夠較為直觀的進(jìn)行接收機(jī)偽距離測量精度的比較,通過高階統(tǒng)計量的分析還可以有效調(diào)節(jié)定位解算中的相關(guān)參數(shù)[4][5]。
偽距離測量值變化的穩(wěn)定性也是重要的參考項目,對偽距測量值進(jìn)行歷元間的前后差值,獲得偽距變化率,如果靜態(tài)偽距變化率發(fā)生跳變,說明接收機(jī)在偽距測量過程中存在不穩(wěn)定因素。
偽距信息的手機(jī)瀏覽效果如圖4。
對于具有確定參考點的靜態(tài)定位結(jié)果分析采用類似傳統(tǒng)CEP法確定誤差范圍,其誤差范圍參數(shù)是以參考點為圓心劃定剛好容納一半定位點的圓半徑。該指標(biāo)能夠判定定位結(jié)果的準(zhǔn)確性。如果沒有明確的參考點,可以利用K-MEANS聚類算法[6] [7]選出點數(shù)聚集最多的點集,然后以此點集的中心點為圓心,確定剛好容納一半定位點的圓半徑。該指標(biāo)能夠判定定位結(jié)果的精確度。定位信息的手機(jī)瀏覽效果如圖5。
圖5 定位信息的手機(jī)瀏覽效果
3 Docker封裝與部署
Docker容器是從鏡像創(chuàng)建的運行實例。它可以被啟動、開始、停止、刪除。每個容器都可以看做是一個簡易版的 Linux 環(huán)境(包括root用戶權(quán)限、進(jìn)程空間、用戶空間和網(wǎng)絡(luò)空間等)和運行在其中的應(yīng)用程序,并且容器間都是相互隔離以保證安全。
首先編輯Dockerfile文件來指定Docker容器要安裝內(nèi)容。內(nèi)容如下:
FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /beidou
WORKDIR /beidou
ADD requirements.txt /beidou/
RUN pip install -r requirements.txt
ADD . /beidou/
以上內(nèi)容制定應(yīng)用運行于Python2.7環(huán)境,軟件代碼存放于/beidou目錄,使用pip工具從Python軟件倉庫中下載安裝/beidou/requirements.txt內(nèi)指定的的Python軟件包[8]。
由于平臺主要使用Python語言進(jìn)行開發(fā),除了網(wǎng)頁框架庫web.py以外,在定位解算和數(shù)據(jù)分析方面需要用到數(shù)值計算相關(guān)庫:numpy、scipy、matplotlib(繪圖),在用戶管理和數(shù)據(jù)存儲方面使用PostgreSQL數(shù)據(jù)庫,所以需要使用psycopg2庫支持Python對數(shù)據(jù)庫的操作。requirements.txt文件里寫明需要安裝的相關(guān)依賴包:
webpy
psycopg2
numpy
scipy
matplotlib
Docker Compose是官方提供的容器業(yè)務(wù)流程框架,只需通過簡單的.yml配置文件,就能完成多個容器服務(wù)的構(gòu)建和運行。編寫docker-compose.yml文件如下所示:
db:
image: postgres
web:
build: .
command: python beidou.py 0.0.0.0:8000
volumes:
- .:/beidou
ports:
- "8000:8000"
links:
- db
圖6 平臺主頁的手機(jī)瀏覽效果
這是 Compose 使用的主模板文件,文件將把所有的東西關(guān)聯(lián)起來。它描述了應(yīng)用的構(gòu)成(一個 web 服務(wù)和一個數(shù)據(jù)庫)、使用的Docker鏡像、鏡像之間的連接、掛載到容器的卷,以及服務(wù)開放的端口。
執(zhí)行docker-compose up命令,即可部署并啟動應(yīng)用。平臺啟動完成后的主頁如圖6。
4結(jié)束語
本文提出了一種整合數(shù)據(jù)存儲、定位解算、數(shù)據(jù)分析等功能的北斗定位接收機(jī)數(shù)據(jù)云檢測平臺,該平臺以云服務(wù)為載體,使用web頁面交互,解決了傳統(tǒng)北斗衛(wèi)星接收機(jī)數(shù)據(jù)分析流程中數(shù)據(jù)導(dǎo)入、存儲、解算、分析等步驟繁瑣、分離的問題,具有部署靈活、擴(kuò)展方便、操作簡單、結(jié)果直觀等特點,適合輔助北斗定位接收機(jī)軟、硬件分工協(xié)作開發(fā)或者定位解算算法的仿真驗證。
參考文獻(xiàn):
[1] 王冉陽.基于Web Service的數(shù)據(jù)產(chǎn)品加工服務(wù)系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京:中國地質(zhì)大學(xué),2009.
[2] 張建,謝天鈞.基于Docker的平臺即服務(wù)架構(gòu)研究[J].信息技術(shù)與信息化,2014,24(10): 131-134.
[3] 吳華龍.BDS/GPS軟件接收機(jī)定位解算算法研究與實現(xiàn)[D]. 山西:太原理工大學(xué),2014.
[4] 廖遠(yuǎn)琴,邱蕾,李曉東.GPS偽距雙差方法比較分析[J].上海地質(zhì),2008,6(108):43-47.
[5] 王琦,吳斌.航天測控系統(tǒng)中偽碼測距精度分析[J]. 測控遙感與導(dǎo)航定位,2009,39(1): 39-44.
[6] 王千,王成,馮振元.K-means聚類算法研究綜述[J]. 電子設(shè)計工程,2012,20(7): 21-24.
[7] 莊怡雯,吳金橋,黃潤才,曹奇英.基于Python的聚類分析及其應(yīng)用[J]. 上海工程技術(shù)大學(xué)學(xué)報,2010(1):47-50.
[8] 鞠春利,劉印鋒.基于Docker的私有PaaS系統(tǒng)構(gòu)建[J].輕工科技,2014,10(10): 80-83.