基于GPS的路線測量與擬合
前言
本文引用地址:http://www.ex-cimer.com/article/197815.htmGPS(全球定位系統(tǒng))由24顆衛(wèi)星支持,具備全球性,全天候,連續(xù)的導(dǎo)航與定位。由于其高精度,高速度,低成本,使用方便的特點,不僅在軍事上獲得廣泛的關(guān)注,在民用部門的應(yīng)用也越來越多。
目前,國內(nèi)對GPS的應(yīng)用主要集中在車輛信息服務(wù)系統(tǒng)和鐵路、公路施工勘測上。對鐵、公路路線的勘測可分兩種情況,一是建設(shè)路線的需要,利用 GPS進(jìn)行初測導(dǎo)線點與水準(zhǔn)點的定位,一是對現(xiàn)有路線通過GPS采集路線數(shù)據(jù),還原出實際路線圖。對后一種情況,由于路線采集點密度和測量誤差的因素,在實際應(yīng)用中,需要利用所得數(shù)據(jù)進(jìn)行一定的擬合。
2 課題背景
在國內(nèi) ,現(xiàn)有機(jī)車頭燈都是固定的,當(dāng)機(jī)車進(jìn)入彎道時,光線并不能實時照射在前方鐵軌上。設(shè)計一種活動頭燈,以機(jī)車路線數(shù)據(jù)為基礎(chǔ),通過GPS獲得機(jī)車當(dāng)前位置,并實時調(diào)整頭燈轉(zhuǎn)角,可以大大提高機(jī)車行車安全。該系統(tǒng)框圖如下:
圖1 機(jī)車頭燈控制系統(tǒng)框圖
在車載控制器中,GPS接收機(jī)獲得的位置、速度數(shù)據(jù)與預(yù)先存儲的路線數(shù)據(jù)表進(jìn)行比較計算,最終得出當(dāng)前機(jī)車所在位置需要發(fā)出的控制轉(zhuǎn)角信號量。預(yù)先存儲的路線數(shù)據(jù)表需要在個人計算機(jī)機(jī)中提前進(jìn)行處理,即前言提到的擬合。無論是在車輛信息服務(wù)系統(tǒng)還是其他與地理路線相關(guān)的應(yīng)用系統(tǒng)中,路線數(shù)據(jù)的采集與擬合都是極為重要的環(huán)節(jié)。
3 GPS數(shù)據(jù)的采集
GPS接收機(jī)接收到的數(shù)據(jù)是按一定報文格式的數(shù)據(jù)流以串口方式輸出的。其格式為:
$GP RMC,081546,A,105.7038,N,30.3624,E,0.000,0.0,220406,1.1,W*78
以逗號為分隔符,各數(shù)據(jù)項依次表示新數(shù)據(jù)幀的開始標(biāo)志、格林威治標(biāo)準(zhǔn)時間、數(shù)據(jù)有效標(biāo)志、緯度 、南北緯標(biāo)志 、精度 、東西經(jīng)標(biāo)志、移動速度、日期 、磁變、東西磁變標(biāo)志與校驗和。對于路線的擬合,實際需要的只是每個點的經(jīng)緯度,為此需要進(jìn)行提取處理,具體可通過便攜計算機(jī)隨車采集,計算機(jī)與GPS接收機(jī)之間通過串口通信, 通信控制可利用微軟公司的MSCcomm串行通信控件進(jìn)行簡單靈活的編程,另外也可以直接調(diào)用Windows API函數(shù)或動態(tài)鏈接庫進(jìn)行更底層豐富的設(shè)計。這些方法有很多文章進(jìn)行專門的論述,本文就該系統(tǒng)實際采用的PC104微型主板通過串口通信的方法做個簡單介紹。PC104微型主板體積小,加上GPS接收機(jī)仍然非常小巧,便于攜帶,采集路線數(shù)據(jù)時置于機(jī)車上,采集的數(shù)據(jù)存儲在自身FLASH上,采集完畢可以通過IDE接口拷貝到個人計算機(jī)硬盤上。PC104裝載的是DOS6.0系統(tǒng), 對串口操作分軟中斷和硬中斷兩種方式,硬中斷相對效率要高些。采用C語言在DOS下進(jìn)行硬中斷方式的串口通信編程步驟及注意事項如下:
1. 串行通信以通用異步發(fā)送/接收器8250進(jìn)行控制,8250有10個可編程的單字節(jié)寄存器,占用7個端口地址,復(fù)用地址通過讀/寫操作和線路控制寄存器的第7位來區(qū)分。COM1、COM2對應(yīng)的7個端口地址分別為3F8H~3FEH、2F8H~2FEH。初始化串口主要是寫波特率因子寄存器以設(shè)定通信速率,其次是讀取接收寄存器和中斷標(biāo)志寄存器以清除現(xiàn)有的接收或發(fā)送中斷標(biāo)志。
2. 硬中斷通道IRQ4(COM1)和IRQ3(COM2)分別對應(yīng)中斷向量0BH和0CH,在載入新的中斷服務(wù)程序之前必須獲取并保存原中斷服務(wù)程序的入口地址,相應(yīng)函數(shù)為getvect()和setvect()。
3. 中斷控制器8259有兩個口線用作COM1和COM2硬中斷通道,可通過設(shè)置其中斷屏蔽寄存器位(bit4對應(yīng)IRQ4,bit3對應(yīng)IRQ3)來開啟或屏蔽,中斷屏蔽寄存器的端口地址為21H。每次中斷服務(wù)程序返回必須往中斷命令寄存器(地址20H)寫入20H以使8259清除相關(guān)寄存器位。
評論