摘 要: 借鑒現有導航產品優點,結合GPS、GIS以及嵌入式開發技術,開發了個人移動導航系統。導航系統以微軟的Windows Mobile 6.5為操作系統,采用ST-92 GPS模塊接收GPS數據。軟件開發采用Visual Studio 2005開發環境,嵌入Mapx Mobile組件,通過RS232接口接收并處理模塊數據,實現了實時定位、路徑記錄等功能。對地圖匹配算法進行了分析,并對系統功能進行了驗證。
關鍵詞: Mapx Mobile;嵌入式;GPS
如今,隨著交通工具的普及和交通狀況的改善,人們的移動性逐漸增強,對于空間信息的依賴更大。全球定位系統GPS(Global Positioning System)能有效解決此類問題,為出行提供便捷服務[1]。目前車載導航產業蓬勃發展,然而車載GPS系統受到道路限制,不能隨時隨地提供位置信息。個人移動導航系統基于移動終端(如手機、掌上電腦等)設計,可以彌補車載GPS系統受地形限制的不足,為個人用戶提供方便可靠的位置信息,幫助用戶在陌生環境中快速地找到目的地,具有體積小、便于攜帶等優點。
1 系統構成與功能
個人移動地理信息系統GIS(Geographic Information System)是在傳統GIS基礎上利用空間定位手段結合嵌入式技術,以數字地圖為顯示背景、與個人手持設備相結合,通過無線通信網絡提供移動目標實時位置及周圍信息的系統。本文根據大多數用戶需求及我國網絡通信現狀開發個人移動導航系統,系統主要由五部分組成,如圖1所示。
系統從GPS模塊獲取數據,根據NMEA-0183協議對數據進行篩選處理;由地圖匹配模塊將獲取的位置信息與電子地圖進行匹配;位置顯示模塊在完成地圖匹配的前提下,將位置信息實時地在地圖上顯示出來,它是路徑記錄模塊的基礎;路徑記錄模塊將行進位置記錄下來,將之前和當前位置同時顯示出來,并不斷更新,從而實現行進軌跡顯示功能;將地圖的縮放及移動功能設計于輔助功能模塊中。
本系統可根據用戶需求實現地圖縮放、平移、實時定位、路徑顯示等功能,有效地適用于個人移動定位。
2 開發平臺搭建
2.1 硬件平臺
本系統采用Goeget公司生產的ST-92系列GPS模塊,該模塊使用SIFR III芯片組,可以同時追蹤20個衛星信號,具有靈敏度高(-159 dBm)、定位坐標精度高(可達5 m(1 Ω))、體積小、支持NMEA-0183協議等特點。GPS數據通過RS232接口傳遞給搭載有Windows Mobile系統的開發板,進行數據提取利用。系統結構示意圖如圖2所示。
2.2 軟件開發平臺
Windows Mobile操作系統是微軟專門為手持移動設備推出的“移動版Windows”,它將Windows桌面擴展到個人設備,使用Windows Mobile操作系統的設備主要有手機、PDA等[2]。導航系統采用微軟的Windows Mobile 6.5操作系統以及Windows Mobile 6 Professional SDK。開發平臺選用Visual Studio 2005,它針對.net開發,并且提供了智能設備模擬器,可真實地模擬物理機器代碼,把軟件安裝在這個模擬器上運行,可使開發更加方便。
2.3 Mapx Mobile組件的嵌入
Mapx Mobile是Mapinfo公司提供的一種基于OLE(Object Linking and Embedding)的嵌入式GIS組件,可以嵌入在Pocket PC、Windows Mobile平臺下的應用程序中,運用Mapx Mobile建立的軟件可單獨在設備上運行,并且可以與Pocket PC的Windows CE操作系統兼容[3]。
對Mapx Mobile組件的嵌入,首先需要在PC機安裝Mapx Mbile,在VS2005工具箱選項窗口中,選擇COM組件欄,勾選Mapinfo Mapx Mobile V5選項,然后在工具箱中可看到新增的Mapx工具。對地圖操作時需要將組件拖到對話框窗口中,然后在VS2005界面中可對地圖屬性進行操作,選擇載入需要的地圖。
Mapx Mobile是移動GIS的高性能低成本的解決方案,具有標準用戶控制功能,可有效地嵌入到個人移動導航系統中[4]。
3 系統實現過程分析
3.1 定位數據流獲取與分析
GPS模塊與應用程序間通過RS232接口交互信息,因此需要在VS2005平臺上編寫對串口的驅動。
m_hComm=CreateFile(Port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); //打開串口
dcb.BaudRate=9600; //設置波特率為9 600
dcb.ByteSize=8; //數據長度為8 B
dcb.Parity=0; //無校驗位
dcb.StopBits=0; //無停止位
通過進入函數LRESULT CwindowsmobileDlg::OnData-
ArrivedMsg(WPARAM wParam,LPARAM lParam)來處理收到的數據。因為讀到的數據不是CString型,所以需要做進一步處理。
unsigned char *data=(unsigned char*)wParam;
m_strDataReceived=CString(data).Left(length);
以下數據是GPS模塊接收到的部分數據。
$GPGGA,014717.000,3600.1142,N,12007.3654,E,
1,06,4.7,-4.3,M,4.4,M,,0000*44
$GPGSA,A,3,27,15,26,02,09,29,,,,,,,6.7,4.7,4.8*39
$GPRMC,014717.000,A,3600.1142,N,12007.3654,E,
0.00,20.45,220410,,,A*5F
本系統只需要提取經度、緯度和時間數據,根據NMEA-0183協議,這里篩選接收GPGGA下的數據[5]。
3.2 定位點與路徑線的建立
首先創建圖層,并將其設置為動態圖層,然后創建動態圖元,對其進行初始化,將其與mapx插件建立關聯。初始化中可設置定位點的大小、形狀及顏色。
CMapX LayergpsLayer=m_ctrlMapX;
GetLayers().CreateLayer(_T("GPSLayer"),NULL,1);
//創建動態圖層GPSLayer
m_ctrlMapX.GetLayers().SetAnimationLayer(gpsLayer);
//設置圖層GPSLayer為動態圖層
CMapXFeature mobileFtr;//動態點圖元
mobileFtr.CreateDispatch(mobileFtr.GetClsid());//初始化
mobileFtr.Attach(m_ctrlMapX.GetDispatch());
//與m_ctrlMapX建立關聯
通過語句mobile.GetPoint().Set(gpsLongitude, gpsLatitude)將當前坐標數據與電子地圖進行關聯,然后通過mobile.Update()更新到地圖上并顯示出來。
對于路徑線的創建,需要對之前的定位點進行儲存,獲得定位點集[6]。通過CMapX Feature中的CreateLine函數將儲存的點用直線連接起來,可利用CMapXStyle中提供的函數設置線的寬度、顏色等屬性。
3.3 地圖匹配算法分析
GIS基礎數據主要來源于地形圖、航片、衛片等。車載及個人導航系統主要數據源是地形圖,地形圖通過掃描矢量化將地圖轉換成矢量化數字地圖。就掃描矢量化而言,除了原圖質量影響數據經度外,在掃描過程中圖像預處理、矢量化過程等各個環節對數據質量都有一定程度的影響[7]。為保證定位準確性,在實際應用中需要對地圖進行匹配研究。
地圖匹配需要確定在給定定位數據和地圖信息的基礎上獲得最可能的路段,以及行人在該路段上最可能的位置。
本文采用最短距離匹配算法[8],該算法根據道路屬性預先設置一個閾值,通過計算當前GPS數據與各路段間的距離以及該數據在該路段上最短距離點,將在閾值范圍內的各路段匹配距離進行比較,得到一條最短路徑。
圖3表示基于投影的匹配算法基本原理,圖中V點表示行人當前位置,L1和L2表示附近的兩條路,V1、V2表示V點在兩條路上的投影,投影距離表示為d1、d2。在候選道路中選擇距離最短的作為匹配道路,并將在該條道路上的投影點認為是行人的當前位置。該算法可以在很大程度上消除地圖匹配中的各種誤差產生的影響。
地圖匹配算法具體實現過程如圖4所示。
3.4 地圖縮放及平移
地圖縮放及平移包括地圖的縮小、放大及平移。實現函數為SetCur2rentTool( )。
m_ctrlMapX.SetCurrentTool(miZoomOutTool);//縮小
m_ctrlMapX.SetCurrentTool(miZoomInTool);//放大
m_ctrlMapX.SetCurrentTool(miPanTool);//平移
m_ctrlMap為Map對象設定了以上工具,分別是縮小、放大和平移工具,點擊鼠標即可進行地圖瀏覽。
4 系統驗證
在開發板(手機)上安裝MapX組件,該組件位于PC機的MapX安裝目錄下,將開發的軟件和對應的地圖拷貝到開發板中的maps文件夾中,雙擊運行即可。拷貝過程使用的是微軟的ActiveSync同步工具,它允許PC機與設備之間傳輸數據文件。
系統驗證時采用青島市區地圖,軟件運行界面示意圖如圖5所示。測試中端口號選擇為COM1,波特率為9 600 b/s,單擊右下角按鈕后啟動系統。GPS數據通過RS232接口進入開發板中,軟件進行處理后將位置坐標與電子地圖進行匹配,將該點位置以紅色五星符號在地圖上顯示出來,同時用戶可在界面下方看到經度及緯度數據。隨著位置的改變,定位點在地圖上會隨之實時移動,可準確地進行實時定位顯示。
經過如上測試,系統可正確地、實時地獲取顯示位置信息并記錄行進軌跡,可滿足用戶基本導航需求。
本文利用Visual Studio平臺,嵌入MapX Mobile地圖化組件,設計了一款基于Windows Mobile系統的導航軟件,并結合ST-92 GPS模塊,開發了一個移動導航定位系統,同時對其具體實現過程進行了闡述。本系統搭載青島市地圖進行測試,通過串口獲取GPS數據,完成了數據與電子地圖匹配,完成了地圖的顯示、縮放、平移,實現了定位導航功能。
參考文獻
[1] 孫兵.基于AGPS的智能導航系統軟件開發與研究[D]. 北京:北京郵電大學,2010.
[2] 凌澤軍,魏文娟,孫震強.智能終端的主流平臺——Windows Mobile分析[J].移動通信,2010(9):78-82.
[3] MapInfo Corporation.MapInfo MapX Mobile production introduce[S].2003.
[4] 李凱鋒,呂志平.基于MapX Mobile開發的個人移動導航系統[J].海洋測繪,2006,26(9):99-103.
[5] 錢恭斌,尹文濤,王文富.基于WM6.0操作系統的智能手機定位監控系統設計[J].電子技術應用,2009,35(12):24-30.
[6] 馬紅皎,胡永輝,張志武.使用Mapx Mobile開發Pocket PC上導航軟件[C].全國時間頻率學術交流會,2005.
[7] 曾波,江資斌.GPS車載導航系統的地圖匹配算法[J].測繪工程,2004,13(3):65-67.
[8] 吳忻.基于GPS定位和電子地圖的最佳路徑搜索[D].西安:西安電子科技大學,2006.