【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實現(xiàn)一個車載導(dǎo)航系統(tǒng)_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實現(xiàn)一個車載導(dǎo)航系統(tǒng)_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實現(xiàn)一個車載導(dǎo)航系統(tǒng)_第3頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實現(xiàn)一個車載導(dǎo)航系統(tǒng)_第4頁
【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實現(xiàn)一個車載導(dǎo)航系統(tǒng)_第5頁
免費預(yù)覽已結(jié)束,剩余2頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

【移動應(yīng)用開發(fā)技術(shù)】Android中怎么實現(xiàn)一個車載導(dǎo)航系統(tǒng)

這篇文章給大家介紹Android中怎么實現(xiàn)一個車載導(dǎo)航系統(tǒng),內(nèi)容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。1Android操作系統(tǒng)介紹Google公司于2007年11月發(fā)布的Android操作系統(tǒng),是一款建立在Linux操作系統(tǒng)2.6版本內(nèi)核之上的手機操作系統(tǒng)平臺。Google公司是這樣定義Android操作系統(tǒng)的,它是***專門為移動終端打造的真正意義上的開源且系統(tǒng)完整的移動平臺,而且不存在不同設(shè)備上的兼容性問題。Android平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。Linux內(nèi)核層用來提供系統(tǒng)的底層服務(wù),位于硬件和其他軟件層之間,采用YAFFS2文件系統(tǒng)。Android運行庫包含一組核心庫和Dalvik虛擬機,Android提供豐富的類庫支持且大部分為開源代碼,如采用嵌入式數(shù)據(jù)庫SQLite。應(yīng)用框架層為Android開發(fā)人員提供了訪問框架應(yīng)用程序接口的全部權(quán)限,采用結(jié)構(gòu)化設(shè)計簡化了組件之間的重用。在應(yīng)用程序?qū)樱珹ndroid本身附帶了一些核心的應(yīng)用程序,大大簡化了Android應(yīng)用程序的開發(fā)。因此,利用Android操作系統(tǒng)作為車載導(dǎo)航終端的應(yīng)用平臺,由于操作系統(tǒng)與軟件免費,導(dǎo)航終端更便宜;同一平臺克服格式問題,功能更多元化;使用者決定功能,比個人電腦更人性化、更貼近消費者。2系統(tǒng)框架設(shè)計本系統(tǒng)是一款以三星公司的S3C6410處理器為核心的嵌入式開發(fā)板,先開發(fā)Bootloader引導(dǎo)程序,接著在此基礎(chǔ)上移植Linux內(nèi)核,然后制作Android文件系統(tǒng);在移植好Android操作系統(tǒng)后,進行車載導(dǎo)航功能的開發(fā),任務(wù)集中在通過GPS實時獲取路徑,使用地圖匹配算法校正定位模塊的定位誤差,采用最短路徑導(dǎo)航規(guī)劃算法進行導(dǎo)航,通過語音提示實現(xiàn)路徑的引導(dǎo),并且通過電子地圖配合Android系統(tǒng)軟件的API接口,同時它還具有不斷升級的地圖庫,并能按照用戶的需求進行各種信息查詢,真正實現(xiàn)一個體積小、耗電少、成本低并且人機界面友好的嵌入式操作系統(tǒng)平臺。系統(tǒng)框架圖如圖1所示。圖1系統(tǒng)框架圖利用Android操作系統(tǒng)在ARM硬件平臺上實現(xiàn)車載導(dǎo)航終端各功能模塊的整合,配合相應(yīng)的串口驅(qū)動、液晶屏驅(qū)動等完成指定的功能,如對接收到的數(shù)據(jù)進行處理,計算所在位置的經(jīng)度、緯度、海拔、速度和時間等,并且采用地圖匹配算法進行定位誤差校正,自主導(dǎo)航路徑規(guī)劃采用Dijkstra算法,實現(xiàn)最短路徑導(dǎo)航。GPS系統(tǒng)具有全天候、全球覆蓋、三維定速、定時、高精度、快速、省時、高效率、應(yīng)用廣泛、多功能等特點,因此可廣泛應(yīng)用于陸地、海洋以及航空航天等。電子地圖的使用,直觀地將豐富的城市地圖、全國的公路網(wǎng)圖、加油站、便利商店、政府機關(guān)、餐館、醫(yī)院、停車場等信息同步地在LCD液晶顯示屏上顯示出來,方便中高端使用人員進行查詢參考。3車載定位導(dǎo)航系統(tǒng)軟件設(shè)計在車載導(dǎo)航系統(tǒng)軟件設(shè)計過程中,利用了Android軟件平臺的5大功能模塊,分別為Android應(yīng)用程序?qū)?、?yīng)用框架層、普通函數(shù)庫、Java程序運行環(huán)境和Linux內(nèi)核層。在應(yīng)用程序?qū)永肁ndroid的各種組件API接口開發(fā)了針對車載導(dǎo)航的GPS、電子地圖的Java應(yīng)用程序,并在內(nèi)核層提供了相應(yīng)串口以及液晶屏等其他的底層驅(qū)動。Android操作系統(tǒng)支持GPS

APILBS,可以通過集成GPS芯片或外接GPS設(shè)備來接收衛(wèi)星信號,通過GPS全球定位系統(tǒng)中至少3顆衛(wèi)星和原子鐘來獲取當(dāng)前設(shè)備的坐標(biāo)數(shù)據(jù)。對于定位功能而言,穩(wěn)定性好是重中之重,而Android實現(xiàn)了這一點。Android提供了許多定位相關(guān)的類以及相關(guān)的函數(shù),使得開發(fā)人員可以靈活應(yīng)用。使用位置信息管理類LocationManager進行GPS定位,使用Criteria類來實現(xiàn)自定義定位功能。當(dāng)然在設(shè)計的導(dǎo)航系統(tǒng)中,我們希望所實現(xiàn)的GPS設(shè)備盡可能省電,定位盡可能精確,并且需要獲取運動物體的速度。因此,設(shè)置的Criteria對象如下所示:Criteria

mCriteria=new

Criteria();

mCriteria.setAccuracy(Criteria.ACCURACY_FINE);

/*經(jīng)緯度是否精確提供*/

mCriteria.setAltitudeRequired(false);

/*是否提供高度信息*/

mCriteria.setBearingRequired(false);

/*是否提供航向信息*/

mCriteria.setCostAllowed(true);

/*費用*/

mCriteria.setPowerRequirement(Criteria.POWER_LOW);

/*

設(shè)置低電量參數(shù)*/

mCriteria.setSpeedRequired(true);

/*

是否獲取當(dāng)前物體的速度*/接著將Criteria的參數(shù)傳遞給LocationManager對象。然后啟動GPS定位功能,LocationManager對象就開始通過自身的函數(shù)來獲取經(jīng)緯度和其他一些數(shù)據(jù)。其獲取數(shù)據(jù)的方法如下所示:①對于經(jīng)緯度,getLatitude()返回維度數(shù)據(jù),getLongitude()返回經(jīng)度數(shù)據(jù);②對于方向,hasBearing()判斷是否有方向數(shù)據(jù),而getBearing()則以度為單位返回其值;③對于海拔高度,hasAltitude()判斷是否有海拔數(shù)據(jù),而getAltitude下則以m為單位返回海拔數(shù)據(jù);④對于速度,hasSpeed()判斷是否有速度值,而getSpeed()則以m/s為單位返回速度值。⑤***,LocationManager對象返回的數(shù)據(jù)及時地更新在電子地圖上,并且隨著物體和時間位置的變化,開發(fā)者可以利用LocationManager,使用定位監(jiān)聽器LocationListener根據(jù)時間和物體移動距離進行數(shù)據(jù)更新。地圖匹配以某個車輛位置點或某段車行軌跡曲線作為待匹配樣本,以該點或該軌跡曲線附近的所有道路上的位置點或道路曲線作為模板,通過待匹配樣本或模板間的匹配,選擇相似度***的匹配樣本或模板作為匹配結(jié)果。***根據(jù)匹配結(jié)果校正定位模塊的定位誤差。車載導(dǎo)航系統(tǒng)中將車輛定位顯示在電子地圖上時,應(yīng)該根據(jù)車輛的行駛方向,將車輛定位顯示于某一道路上。但是,由于各種誤差(主要是定位技術(shù)的誤差),電子地圖上顯示的車輛會偏離實際的道路,失去其導(dǎo)航的功能;而地圖匹配這一軟件技術(shù)能校正定位技術(shù)的誤差,使車輛位置準(zhǔn)確地顯示在電子地圖上??捎脕砼袛嘬囕v當(dāng)前可能在哪條路段上行駛的信息主要有3個:當(dāng)前車輛定位點距候選路段的投影距離、車輛當(dāng)前行駛方向與候選路段方向的夾角以及候選路段與前一匹配路段的幾何拓撲關(guān)系。一般來講,投影距離和方向夾角越小的候選路段成為匹配路段的可能性越大,反之亦然。此外,與前一匹配路段相同或拓撲相連的候選路段成為匹配路段的可能性大,其余的可能性小。車輛在行駛的過程中,把GPS原始定位點向各待匹配路段作投影,可計算GPS原始定位點與待匹配路段之間的最短距離ri(i=1,…,n);另外車輛行駛方向與各待匹配路段之間的夾角θi(i=1,…,n)也可以得到,進而計算各待匹配路段的匹配值λi(i=1,…,n)。地圖匹配算法在進行匹配時的步驟如下:①通過特征提取把所有的待匹配路段分析、描述,提取出相應(yīng)的匹配因子。圖2距離與夾角示意圖②計算定位點P到各個待匹配路段的最短距離。距離與夾角示意圖如圖2所示。其中r1、r2為要求的最短距離;α1、α2為所求夾角。根據(jù)匹配規(guī)則,依次計算定點P到各個待匹配路段的匹配值。③把匹配值中最小的路段作為最終匹配路段,并把在此路段上距離原始定位點最近的點作為最終匹配點。利用Android平臺開發(fā)導(dǎo)航地圖過程中,主要采用Android提供的MapView和MapActivity兩個類實現(xiàn)。其中MapView是一個展示地圖的視圖,它可以獲取鍵盤事件來支持地圖的移動和縮放功能,地圖可以以不同的形式來顯示,如街景模式、衛(wèi)星模式等,通過setSatellite(boolean)

、setTraffic(boolean)和setStreetView(boolean)

方法,同時也支持多層Overlay的使用。可以在地圖上畫坐標(biāo)、寫地名、畫圖片等。MapView只能通過MapActivity來建立,因為MapView需要在后臺使用文件系統(tǒng)和網(wǎng)絡(luò)。所有這些線程需要在Activity的生命周期中被控制。如何利用電子地圖功能將GPS模塊定位得到的經(jīng)緯度信息在地圖上顯示出來呢?地球上的任何一個地點都可以利用經(jīng)緯度來表示。在Android的類庫中,Point類代表了一個地點的經(jīng)緯度,函數(shù)格式為:Pointment(int

latitudeE6,intlongitudeE6)。E6是微度,即度數(shù)乘以1000

000。如果要指定地圖地點,須傳遞一個Point類到地圖中。然后調(diào)用setMapLocationCenter方法將地圖移動到合適的位置,***調(diào)用MapController對象的animateTo方法將該坐標(biāo)位置設(shè)置為地圖的中心點。在實際應(yīng)用中,可以使用zoomTo(int)縮放到需要的級別,同時利用mapView.toggleSatellite()和mapView.toggleTraffic()來獲得衛(wèi)星圖和路況圖。求解最短路徑問題的算法中,Dijkstra算法是國內(nèi)外公認的比較成功的算法,該算法通用性強,而且編程實現(xiàn)簡單,是目前理論上比較完善、應(yīng)用最廣泛的最短路徑分析算法。Dijkstra算法按路徑長度的遞增次序,逐條產(chǎn)生最短路徑。Dijkstra算法的基本思想是:設(shè)從頂點V0出發(fā),搜索從它到其他頂點的最短路徑。把有向圖中的頂點集V分為兩個集合,已求出最短路徑的頂點集合S,尚未確定最短路徑的頂點集合V-S(定義為T);按最短路徑長度遞增的順序逐個把集合T中的頂點加到集合S中,直到和出發(fā)點V0有路徑相通的所有頂點都包含在集合S中。在整個過程中,V0到集合S中各頂點的最短路徑長度都不大于V0到集合T中的任意頂點的最短路徑長度。設(shè)帶權(quán)有向圖G={V,E},V={V0,V1,…,Vn-1},用帶權(quán)的鄰接矩陣Arcs表示圖G;Arcs[i][j]表示弧<Vi,Vj>上的權(quán)值,S表示已求得的從V0出發(fā)的最短路徑終點的集合;向量D的每個分量D[i]表示當(dāng)前求得的從始點V0到每個終點Vi的最短路徑的長度,算法描述如下:①初始化集合S、向量D。S={V0},D[i]=Arcs[0][i](i=0,1,…,n-1)。②選擇Vj,使得D[j]=min{D[i]|Vi∈V-S},S=S∪{Vi}。③修改從V0出發(fā)到集合V-S上任意節(jié)點Vk的最短路徑長度。若D[k]>D[j]+Arcs[j][k],則修改D[k]為D[k]=D[j]+Arcs[j][k]。④重復(fù)②、③操作n-1次,即可求得從V0到其余各頂點Vi的最短路徑長度。Dijkstra算法的時間復(fù)雜度是O(n2)。在實際應(yīng)用中往往只需要搜素從某一源點到某一或某幾個特定終點的最短路徑,用Dijkstra算法求解,此問題與求源點到其余各頂點的最短路徑的時間復(fù)雜度相同,也為O(n2)。4性能測試分析基于Android操作系統(tǒng)和ARM微處理器進行設(shè)計的車載導(dǎo)航系統(tǒng),利用Android通用框架和與設(shè)備無關(guān)的應(yīng)用程序開發(fā)平臺,實現(xiàn)了車載導(dǎo)航的軟件總體架構(gòu)。圖3為車輛定位顯示的應(yīng)用程序窗口。截圖所示范圍為廈門軟件園附近,箭頭為汽車所在位置。在實現(xiàn)的導(dǎo)航設(shè)備中,對導(dǎo)航設(shè)備的定位精度、電子地圖顯示速度以及在最短路徑導(dǎo)航規(guī)劃所需的時間進行性能測試。圖3車輛定位顯示的應(yīng)用程序窗口(1)定位精度測試現(xiàn)在國內(nèi)民用較好的產(chǎn)品的導(dǎo)航定位精度基本控制在5~10m,不太好的設(shè)備可能達到幾十米甚至幾百米,本次設(shè)計的導(dǎo)航終端經(jīng)測試,定位精度約為7m。(2)電子地圖顯示時間測試當(dāng)導(dǎo)航設(shè)備接收

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論