引言
隨著我國經濟水平的快速發展,汽車行業也蓬勃發展起來。汽車的增長速度遠遠超過公路的增長速度,汽車擁有量的急劇增加和城市現代化交通建設的相對滯后導致城市交通情況不斷惡化。同時,現代物流對運輸車輛和貨物安全與準時調運的要求、公交與出租車的運營管理、大型的企事業單位日常車輛管理也都對車輛的監控與導航有迫切的需求。面且隨著旅游行業的發展,人們急需要一種可以隨時隨地知道自己方位和目的地的方便設備。
GPS(全球定位系統)具有全球、全天候工作,定位精度高,功能多,應用廣的特點,通過GPS接收機可以實現精確的自主定位,這為實現車輛的定位和導航奠定了基礎。伴隨ARM處理器、嵌入式操作系統、路徑優化控制算法和GPS網絡的成熟,車輛定位導航系統有了新的發展,可以在短時間內實現定位和最優路徑導航。
1 方案簡介
1.1 功能簡介
該嵌入式GPS導航系統由GPS系統獲得當時所在的位置的經緯度,通過換算和地圖匹配在地圖上得到當時的實際位置,然后由用戶輸入目的地,通過最短路徑算法計算最短路徑并在矢量地圖上顯示,同時提取GPS提供的速度,時間等信息顯示在屏幕上。
1.2 硬件實現
本嵌入式GPS導航系統的硬件核心是意法半導體ARM7系列中的16/32位RISC處理器STR710FZ2T6芯片,該芯片強大的實時處理能力和豐富的外圍接口非常適合嵌入式系統的開發,本系統正是基于該芯片的這些特點面設計的。系統框圖如圖1所示。
圖1 硬件框圖
系統以STR710FZ2T6微處理器為核心,與2片512KB的SDRAM(IS61LV25616)、一片8MB的NAND Flash和一片2MB NOR FLASH(SST39LF160)組成。外部添加了用于接收GPS信號的GPS模塊,用于顯示的液晶面板以及鍵盤輸入模塊。
2 軟件設計
2.1 軟件數據設計
導航軟件中的數據主要是導航地圖的空間數據,主要由與導航需求相關的一些信息組成,包括道路網幾何形狀、道路等級、道路特征、交規限制、地理政治邊界、感興趣的點、路標和服務設施等。這些數據主要分為兩大類:道路網數據和非道路網數據。道路網數據包括基本的道路網的地理數據以及道路上與車輛行駛相關的數據。道路網數據的主要特征是有較強的拓撲關系。非道路網數據主要包括能反映區域的基本地理面貌的地物信息(如河流。湖泊。邊界等)以及與出行信息相關的單位信息。整個導航數據的獲取和錄入可以通過轉換通用的地圖為矢量圖,并且以點代替具體的路面實況。
2.2 軟件系統設計
導航軟件是以導航數據庫為數據基礎的。針對導航數據庫的操作行為。從功能上將導航軟件分為具有導航功能的部分和具有瀏覽功能的部分。導航功能部分是在動態行進過程中進行導航規劃服務的,可分為導航定位、地圖匹配、路徑規劃和路徑引導等模塊。主要通過導航界面與用戶實現交互、瀏覽功能主要是在靜態過程中對導航的地理信息提供瀏覽查詢服務的通過瀏覽界面與用戶實現交互。軟件系統結構如圖2所示。
圖2.軟件系統框圖
2.2.1 導航功能模塊設計
該方面的設計中主要包括以下4個模塊的設計:
(1)導航定位模塊實時地從通信端口讀取數據。然后進行分析處理,得到可以進行地圖匹配的經、緯度數據并將其傳給地圖匹配模塊。
?。?)地圖匹配模塊根據導航定位模塊輸入的經緯度在導航數據庫中進行匹配。
(3)路徑規劃模塊主要是根據用戶指定的出發地和目的地在導航數據庫中的道路網絡中規劃出一條最佳路徑。
?。?)導航引導模塊將地圖匹配的結果和規劃好的路徑結合導航地圖數據庫的數據以地圖的方式顯示出來。這樣就可以直觀、無誤地引導用戶行進。
2.2.2 瀏覽功能模塊設計
該方面的設計中主要包括以下2個模塊的設計:
?。?)地圖瀏覽模塊主要是在瀏覽界面中實現對地圖的縮放、平移等基本瀏覽操作。
?。?)地圖查詢模塊主要是根據用戶的要求在導航地圖數據庫中進行查詢操作并通過瀏覽界面顯示出來。
2.3 嵌入式軟件設計
該嵌入式系統采用uC/OSII操作系統,由于MCU的處理功能有限,所以在具體的軟件實現過程中采用多線程技術,如圖3所示。
圖3.線程圖
主控線程主要實現界面功能、導航功能中的地圖匹配和導航引導模塊、瀏覽功能中的地圖瀏覽模塊以及這些模塊間的消息派送、接收和處理,同時協調各個工作線程異步運行。
導航定位線程主要完成導航定位模塊中的接收當前位置數據(經、緯度)的功能。在導航過程中運行線程,線程處理函數把接收到的經、緯度數據實時通過消息發到主線程,由主線程調用地圖匹配模塊作處理。
路徑規劃線程主要完成在道路網中求解最佳路徑的任務。在用戶要求提供最佳路徑時根據用戶的出發地和目的地求出一條最佳路徑。在最佳路徑求解算法中采用A*算法。
2.3.1 軟件的導航功能由主控線程控制實現
其基本實現流程如下(可見圖4)
圖4.導航功能流程圖
2.3.2 GPS數據提取
GPS板只要處于工作狀態就會源源不斷地把接收并計算出的GPS導航定位信息通過串口傳送到嵌入式系統中。由于從串口接收的數據幀是一長串ASCII碼字節流,在沒有經過分類提取之前是無法加以利用的。因此,必須通過程序將各個字段的信息從接收到的字節流中提取出來,將其轉化成有實際意義的,可供高層決策使用的定位信息數據。對GPS信息進行提取必須首先明確其幀結構,數據幀主要由幀頭、幀尾和幀內數據組成。對于不同的數據幀,其幀頭是不同的,主要有“$GPGGA”、 “$GPGSA”、“$GPGSV”以及“$GPRMC“等。這些幀頭標識了后續幀內數據的組成和結構特點。各幀均以回車符《CR》和換行符《LF》作為幀尾,標識一幀的結束。
對數據幀處理,是先對幀頭進行判斷,然后只對感興趣的幀進行數據的提取處理。由于幀內各數據段被逗號分割,因此在處理接收數據時一般是首先通過搜尋ASCII碼“$”來判斷是否是幀頭,接著對幀頭的類別進行識別,然后再根據識別出來的幀類型以及逗號‘,’個數來確定當前正在讀取的是哪個定位導航參數,并作出相應的提取和存儲。流程圖如圖5所示。
圖5.GPS數據接收與提取流程圖
2.3.3 顯示與查詢
通過GPS和人工輸入接收到的數據,經過MCU的處理,在地圖上用醒目的顏色顯示出來流程圖如下:
圖6.顯示流程圖
3 結論
在導航定位系統中GPS系統是口前世界上應用得最為廣泛的,其功能作用已廣為人所接受,加之GPS的接收模塊的種類也很多,選擇余地很大,可根據系統要求的精度、體積、定時標準加以選擇。而且,GPS是一個全天候的系統,極少有工作盲區,除非在有著較為嚴重的空間遮擋的情況下,一般GPS天線都可以較為順利的接收到GPS信號。同時,國內外相關行業的產品己大量運用該技術,因此,將GPS定位系統應用于本導航系統不僅具有很高的可行性,還具有相當的可靠性。
(審核編輯: 智匯小新)
分享