何泓稼,劉培培,蔣艷麗,江智威
(成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院(網(wǎng)絡(luò)安全學(xué)院、牛津布魯克斯學(xué)院),四川 成都 610059)
導(dǎo)航在人類歷史的發(fā)展進程中一直起著相當重要的作用。早在20世紀60年代初期,美國政府機構(gòu)就對三維定位的衛(wèi)星系統(tǒng)產(chǎn)生興趣,并于1964年成功開發(fā)世界上第一個衛(wèi)星導(dǎo)航系統(tǒng)——子午衛(wèi)星系統(tǒng)。在這之后,世界各國相繼發(fā)展并不斷完善自己的衛(wèi)星導(dǎo)航系統(tǒng),北斗衛(wèi)星導(dǎo)航系統(tǒng)是中國自主研發(fā)、獨立運行的全球?qū)Ш叫l(wèi)星系統(tǒng)(GNSS),自20世紀70年代發(fā)展至今,現(xiàn)與GPS、GLONASS和Galileo系統(tǒng)一起被譽為全球四GNSS。北斗衛(wèi)星導(dǎo)航系統(tǒng)由空間部分、地面運行控制部分和用戶終端部分組成。北斗導(dǎo)航終端設(shè)備已在多個領(lǐng)域有實際應(yīng)用,并在近年的汶川、舟曲救災(zāi)過程中發(fā)揮了關(guān)鍵作用。國內(nèi)司南導(dǎo)航、華測導(dǎo)航和芯星通等多家單位不斷研究、開發(fā)新的北斗導(dǎo)航終端設(shè)備或接收機,并把各種新技術(shù)融入其中,使得北斗衛(wèi)導(dǎo)終端設(shè)備能夠適應(yīng)各種應(yīng)用需求。
北斗導(dǎo)航具有很好的精度,但是因為地理位置,海拔高低的不同而影響其工作的穩(wěn)定性。
文中以北斗衛(wèi)星導(dǎo)航終端設(shè)備為主進行分析與研究,在此基礎(chǔ)上分析并利用STM32進行實踐,并且使用最小二乘法減小所測經(jīng)緯度的誤差,使最后的結(jié)果更加準確。
北斗導(dǎo)航接收系統(tǒng)主要以STM32F103C8T6單片機為核心,以北斗衛(wèi)星接收模塊和LCD12864液晶屏為原器件。北斗導(dǎo)航接收系統(tǒng)框圖如圖1所示,具體方案為:當單片機上電時,接收到外界的指令需要輸出經(jīng)度和緯度,調(diào)節(jié)相應(yīng)的地理位置服務(wù)程序處理后,在顯示屏上得到輸出的目標。并且可以通過按鍵刷新經(jīng)度與緯度的數(shù)據(jù),同時顯示不同的海拔和時間。根據(jù)所要求的功能,可以顯示目標所在的經(jīng)緯度,并且可以通過調(diào)試,系統(tǒng)測試之后精準顯示目標的位置[1]。
圖1 北斗接收系統(tǒng)框圖
STM32F103C8T6內(nèi)核——32位的微控制器系統(tǒng),其容量為64 KB,ARM Cortex-M性能。啟動電壓為1.9 V~3.5 V,工作溫度為35 °C~75 °C。其引腳圖如圖2所示,相關(guān)參數(shù)如表1所示[2]。
圖2 STM32引腳
STM32F103是一種增強型系列,它是由名叫意法半導(dǎo)體的公司所發(fā)明的。這個集團使用了性能比較高的處理器,內(nèi)核的工作頻率在69~73 MHz之間[3]。內(nèi)核存在著高速存儲器,加速數(shù)據(jù)的處理。其中內(nèi)核含有128K字節(jié)的閃存,同時含有20K字節(jié)的SRAM。內(nèi)核的優(yōu)點是增強了I/O口的接觸性能以及到兩條APB總線的外設(shè)情況。這個類型的所有系列包括3個通用的16位計數(shù)/定時器、PWM定時器、兩個12位的ADC、多個通信接口、一個CAN、一個USB、三個USART和兩個SPI[4]。
STM32擁有的ARM核心,與世界上目前所有的ARM工具和軟件兼容。
表1 STM32數(shù)據(jù)參數(shù)
BD ATGM332D-5N 3X模塊是一塊北斗GPS雙模塊,在插上電,使用過后,模塊的主電源斷開,最特別的優(yōu)點是后備電池可以保存一個小時左右的北斗數(shù)據(jù)。這種性能的優(yōu)點是以此來支撐溫啟動和熱啟動,以至于在顯示上實現(xiàn)精確的定位。北斗導(dǎo)航模塊共有5個引腳,分別是VCC、GND、TXD、DXD、PPS,其功能如表2所示。
表2 北斗導(dǎo)航模塊引腳輸出
其中,PPS引腳的部分要求很嚴格。而且連接到模塊之后,在內(nèi)部自身狀況好的情況下,自帶狀態(tài)指示燈:PPS,這種狀態(tài)指示燈對需求很嚴格,PPS對接BD ATGM332D-5N 3X的輸出端口,輸出端口叫TIMEPULSE端口,TIMEPULSE這個數(shù)據(jù)端口的性能很強,如其抗輸入特性很強。這種輸出特性對配置要求很高,通過程序進行默認設(shè)置[5]??梢燥@示的狀態(tài)為:PPS(即引腳)。
PPS靜態(tài)的條件下,如出廠設(shè)置下,有2個狀態(tài):
(1)持續(xù)亮,這個情況表示系統(tǒng)工作,工作但未實現(xiàn)定位。
(2)黃燈閃爍一段時間,約100 ms滅,900 ms亮。這時模塊為安全,表示定位成功。
這樣,通過PPS指示燈的專門特性,就可以很方便、及時地判斷模塊的當前狀態(tài)。
根據(jù)北斗導(dǎo)航模塊的引腳功能,設(shè)計出其與單片機的電路連接,BD ATGM332D上的接口逐一與相應(yīng)的接口連接:TXD->RXD,RXD->TXD,GND->GND,VCC->VCC(5V),如圖3所示。
圖3 北斗導(dǎo)航模塊與單片機電路連接圖
液晶顯示模塊可以大大降低數(shù)據(jù)的不清晰度,在上面顯示字母、數(shù)字。還有更加突出的中文字型及圖形的特點,可以呈現(xiàn)所需要呈現(xiàn)的大小圖。LCD12864共有20個引腳,但只需要4個引腳[6]。LCD12864性能參數(shù)如圖4所示。
漢字格式8×4個(16×16點陣)漢字格式(128(列)x 64(行))中文字型8 192個中文字型三種控制接口①8位微處理接口;②串行接口;③4位微處理接口ROM字型內(nèi)置2M-位元中文字型ROM(CGROM)容量16K位的存儲容量繪圖區(qū)域64×256點圖形可以與文字混合
通過Keil仿真軟件以及調(diào)試可以初步看到結(jié)果,顯示器上觀察。在Keil-uVision5平臺上,采用C語言編寫程序[7]。北斗導(dǎo)航接收系統(tǒng)采用模塊化程序設(shè)計,除主程序外,還包括BD ATGM332D-5N 3X接收模塊程序和LCD12864顯示模塊程序。北斗導(dǎo)航接收系統(tǒng)的主程序如圖5所示。單片機、串口、12864初始化之后,接收到傳過來的數(shù)據(jù),顯示在液晶上[8]。
分析步驟如下:
(1)電源通電,系統(tǒng)對STM32單片機、串口、LCD12864進行初始化。
(2)STM32接收外界的指令需要輸出經(jīng)度和緯度,調(diào)節(jié)相應(yīng)地理位置服務(wù)程序處理后,在顯示屏上得到輸出目標。
圖5 主程序流程
(3)通過按鍵刷新經(jīng)度與緯度的數(shù)據(jù),同時顯示不同的海拔和時間。
(4)通過調(diào)試、系統(tǒng)測試之后精準顯示所需要的位置。
(5)將經(jīng)度和緯度的測量結(jié)果進行加權(quán)計算,加權(quán)計算公式為:
Y=(1-M/100)×N1+(M/100)×N2
(1)
其中,Y為加權(quán)計算后的距離,M為定點到所測距離,N1為所測地理位置的經(jīng)度,N2為所測地理位置的緯度。
(6)將加權(quán)計算后的距離帶入所求得的線性回歸模型,求出最終結(jié)果。
(7)最終結(jié)果的輸出包含多種形式,如可以通過LCD12864液晶顯示屏幕直接顯示所需要的經(jīng)度和緯度。
LCD程序流程如圖6所示。
圖6 LCD程序流程
第一,把先前的LCD模塊的I/O口設(shè)定為輸出接口,設(shè)計到需要用哪些輸出設(shè)置接口,必須要根據(jù)之前所設(shè)計的電路圖和LCD設(shè)計的通信模式來確定。
第二,通過設(shè)定的初始化框圖的情況,對LCD類似的原器件進行初始化,以此來開啟LCD的液晶顯示,這么做是為以后的數(shù)字和字符顯示打下基礎(chǔ)。
第三,根據(jù)設(shè)計的程序框圖,將需要顯示的字符傳遞到LCD,這樣就可以正常顯示[9]。
目前中國在實際的應(yīng)用中多采用的是正常高,而頻繁使用的北斗導(dǎo)航定位技術(shù)所測量的數(shù)據(jù)基本上是大地高,對此需要將北斗導(dǎo)航的大地高轉(zhuǎn)換成正常高。比較傳統(tǒng)的多項式擬合法在高程擬合中應(yīng)用較為廣泛,二次曲面擬合是經(jīng)過大量實驗驗證并且靜度較好、使用場合最多的一種多項式擬合方法,但是傳統(tǒng)的二次曲面法是基于最小二乘LS(least square)原理的,并不能考慮到系數(shù)矩陣中的誤差[10]。為解決這一個問題,需要引入整體最小二乘法(total least square,TLS)和加權(quán)整體最小二乘法(weighted total least square,WTLS)[15]。二次曲面擬合的最小二乘法的數(shù)學(xué)模型為:
(2)
文中采用的是一階最小二乘回歸,故所求的回歸模型表達式為:
y(x)=jx+a
(3)
其中,y(x)為最小二乘回歸校正后的距離,x為經(jīng)度與緯度之間的誤差經(jīng)過加權(quán)計算后的距離,j、a為待確定系數(shù)。j、a的值滿足方差Z取值最小[11]。
(4)
其中,yi為實際距離,xi為測量距離。將式(4)分別對j、a求解偏微分,并令其為0,則j、a的求解公式為[12]:
(5)
利用所測得的數(shù)據(jù),求出j、a并帶入式(3),可以解得最小二乘回歸模型為:
y(x)=0.223 1x+0.090 2
(6)
對本地的經(jīng)緯度測試完成后,對數(shù)據(jù)進行整理,當STM32單片機上電時,通過BD ATGM332D-5N 3X接收所在地的經(jīng)度和緯度[13],調(diào)節(jié)相應(yīng)的地理位置服務(wù)程序處理后,在LCD12864顯示屏上得到輸出的經(jīng)緯度[14]。用LCD12864顯示的經(jīng)緯度作為測量數(shù)據(jù),高德地圖查詢本地的最官方的經(jīng)緯度數(shù)據(jù)為真實數(shù)據(jù),最后用文中所提出的公式加以計算得出表3、表4的數(shù)據(jù)?,F(xiàn)實驗如下,以家為定點作為第一組,以學(xué)校為定點作為第二組,測量經(jīng)緯度,對兩者數(shù)據(jù)進行加權(quán),校正后觀察、記錄、統(tǒng)計和分析。
根據(jù)表3、表4,再對6次測量結(jié)果進行加取平均值,第一組經(jīng)度的平均誤差為0.43%,緯度的平均誤差為0.14%。第二組經(jīng)度的平均誤差為0.1%,緯度的平均誤差為0.09%。
表3 第一組結(jié)果記錄
表4 第二組結(jié)果記錄
利用式(6)繼續(xù)對兩組加權(quán)后的經(jīng)度和緯度進行最小二乘回歸校正。校正后結(jié)果值如表3、4所示,對6次測量的誤差分別取平均值,第一組經(jīng)度的平均誤差為0.30%,緯度的平均誤差為0.08%。第二組的經(jīng)度平均誤差為0.08%,緯度平均誤差為0.05%。
由上述計算可以知道,經(jīng)校正后的第一組經(jīng)度誤差由0.43%降至0.30%,緯度誤差由0.14%降至0.08%。第二組經(jīng)度誤差由0.1%降至0.08%,緯度誤差由0.09%降至0.05%。實驗結(jié)果表明,根據(jù)所處地理位置的不同而采用加權(quán)平均計算減小誤差的方法與現(xiàn)有的工具進行比較,可以看出,在目前原有的傳統(tǒng)工具的基礎(chǔ)上,有效地減小了因地理位置的不同而帶來的誤差,而且也是可行且有效的,使得結(jié)果更加具有穩(wěn)定性[15]。
通過實驗得出結(jié)論,實現(xiàn)北斗導(dǎo)航系統(tǒng)的設(shè)計與應(yīng)用。通過多次測試,最終在這個設(shè)計上實現(xiàn)以STM32F103C8T6單片機為核心,通過C語言編程的方法可以得到定位系統(tǒng)的功能,基本上實現(xiàn)了實時定位的功能,最后在經(jīng)過加權(quán)平均計算和最小二乘法回歸算法正確地處理數(shù)據(jù),可以使得測量出來的誤差更小、更精準。目前北斗衛(wèi)星導(dǎo)航系統(tǒng)在船舶運輸、公路交通、鐵路運輸、海上作業(yè)、漁業(yè)作業(yè)、森林火災(zāi)預(yù)防、環(huán)境管理監(jiān)測等領(lǐng)域應(yīng)用廣泛,覆蓋部隊、公安、海關(guān)等其他有特殊指揮調(diào)度要求的單位,產(chǎn)生了顯著的經(jīng)濟效應(yīng)和社會效應(yīng)。北斗的應(yīng)用規(guī)模和范圍也隨著北斗衛(wèi)星導(dǎo)航系統(tǒng)功能和性能的不斷提高與完善,將逐漸擴大,前景可觀。當今世界,數(shù)字電子系統(tǒng)越來越先進,集成度越來越高。價格低廉,更好地顯示了圖像和數(shù)字,大大地簡化了制作的時間和成本。