作為衛星導航系統,GPS具有性能好、精度高、應用廣的特點,是迄今為止應用最廣泛的導航定位系統。將GPS與嵌入式技術融合在一起,形成一個嵌入式的地理平臺,是當前GPS領域的一個重要趨勢。本文是在PXA270嵌入式開發板和GPS模塊上開發實現的。在Linux下的嵌入式開發環境中,利用C++設計完成定位。嵌入式系統利用軟件設計主要完成GPS定位信號的處理、電子地圖的移植、地球坐標的轉換、定位的顯示等功能。
1 系統概述
嵌入式系統是控制、監視或者輔助裝置、機器和設備運行裝置;是軟件和硬件的綜合體,可涵蓋機械等附屬裝置;有著友好的人機界面,支持LCD及GPS模塊;主要完成提取GPS定位信號的數據、坐標轉換、電子地圖的顯示等功能。軟件設計流程如圖1所示。
2 嵌入式系統軟件設計
2.1 GPS模塊輸出的信息的提取
GPS模塊通電后,會自動搜索衛星信號,并把計算數據從串口輸出。所有GPS接收機以通用的NMEA格式輸出數據。NMEA-0183協議定義的語句較多,但常用且兼容性較廣的語句只有:$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL等。如圖2所示。
用串口連接宿主機與開發板的串口0。宿主機進入Linux,打開Minicom終端。設置波特率115 200,8位數據,1位停止,無校驗,無流控。串口的設備文件為/dev/ttyS*,其中,ttyS0為串口1,ttyS1為串口2,以此類推。在對串口通信之前,首先要對串口參數進行初始化、設置它的屬性以保證通信雙方的通信參數保持一致。初始化完串口,就可以進行讀取操作了。由于GPS發送的數據類型都是以&GPGGA符號開頭,所以檢測&GPGGA符號,進而進行下一步的處理。關鍵代碼如下:
2.2 坐標轉換
GPS模塊輸出的地理坐標是WGS-84坐標系。而國內地圖一般是以54北京坐標系作高斯-克呂格平面投影。所以必須作一個坐標轉換,即將GPS坐標(WGS-84坐標系)轉換到電子地圖坐標(54北京坐標系)。坐標轉換的具體步驟如下:
(1)空間直角坐標轉換成國家大地坐標,國家大地坐標轉換成地圖平面坐標。
(2)由于x,y的具體推算過程復雜,這里就不全部列舉,其結果如下
(3)地圖平面坐標轉換成屏幕坐標。例地圖比例尺為1:k,窗口要顯示的區域長、寬各為M和N,窗口像素點位A×B點,則定位數據xs,ys在窗口上坐標分別為