【《基于高德地圖的智能小車控制系統(tǒng)的Android應(yīng)用設(shè)計案例》4200字】_第1頁
【《基于高德地圖的智能小車控制系統(tǒng)的Android應(yīng)用設(shè)計案例》4200字】_第2頁
【《基于高德地圖的智能小車控制系統(tǒng)的Android應(yīng)用設(shè)計案例》4200字】_第3頁
【《基于高德地圖的智能小車控制系統(tǒng)的Android應(yīng)用設(shè)計案例》4200字】_第4頁
【《基于高德地圖的智能小車控制系統(tǒng)的Android應(yīng)用設(shè)計案例》4200字】_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

III基于高德地圖的智能小車控制系統(tǒng)的Android應(yīng)用設(shè)計案例目錄TOC\o"1-3"\h\u7713基于高德地圖的智能小車控制系統(tǒng)的Android應(yīng)用設(shè)計案例 1225011.1Androidstudio工程創(chuàng)建及文件介紹 1262881.2Android應(yīng)用界面設(shè)計 360131.3Android基本控件和藍牙通信網(wǎng)絡(luò) 4310321.4高德地圖移植 552651.5Android應(yīng)用導(dǎo)航功能設(shè)計思路 7271652系統(tǒng)測試與誤差分析 9305022.1智能小車的硬件調(diào)試 9229632.2智能小車的MCU軟件測試 10156172.3Android應(yīng)用調(diào)試 10149542.4智能小車避障測試與誤差分析 11132222.5藍牙控制測試與分析 11320602.6導(dǎo)航測試與誤差分析 111.1Androidstudio工程創(chuàng)建及文件介紹創(chuàng)建工程:單擊NEW,選擇NEWProject,如圖4-1操作。接著就會跳出圖4-2,選擇一個Activity,然后單擊NEXT。接下來就是給工程命名,如圖4-3,最后單擊Finish,一個新工程就建好了。圖4-1創(chuàng)建工程圖圖4-2Activity選擇圖圖4-3工程命名AndroidApp文件目錄如圖4-4,AndroidManifest.xml文件內(nèi)部寫有Android的相關(guān)權(quán)限等。Java文件夾底下的是應(yīng)用的源代碼,其下的activity文件夾底下的是高德地圖的相關(guān)源代碼,bluetooth文件夾下的是藍牙的通信源碼和藍牙設(shè)備好獲取的源碼,Data是全局變量文件,MainActivity為主界面的源碼。在往后就是看res文件夾下的文件,layout文件夾下的是UI界面文件,drawable內(nèi)包含各種圖片文件,value則是包含字符串替代文件、顏色配置文件、以及APP的主題文件。圖4-4Android應(yīng)用文件目錄圖1.2Android應(yīng)用界面設(shè)計AndroidAPP界面如圖4-5,從圖可知,需要從左palette欄脫出8個Button,有箭頭的四個按鍵用于控制小車的前進、小車的后退、小車的左轉(zhuǎn)、小車的右轉(zhuǎn)。最底部的從左到右,分別用于設(shè)置小車為模式一、模式二、模式三。右上方的藍牙按鍵跳出AlertDialo對話框,對話框內(nèi)為一個列表,分別為打開藍牙、藍牙的連接、斷開藍牙。圖4-5AndroidAPP界面圖按鍵屬性改動:從palette其默認樣式為灰色,如圖4-6(b)。本APP界面的是加上了背景圖片,如圖4-6(a)。接下來說一下按鍵屬性,首先是Android:id是每個控件都有的,這是控件的id,用于Java文件中findViewById函數(shù)對控件的綁定,以作區(qū)分。Android:text是控件表面的文本信息,本App右上方的顯示的藍牙設(shè)置,就是通過以此來實現(xiàn)的。Android:background為控件的背景,想要作為其背景,需要將PNG格式文件放入drawable文件夾內(nèi)。講一下如何將jpg格式轉(zhuǎn)化為PNG格式,可以使用windows自帶的畫圖工具,將其粘貼進畫板,然后保存時,選擇PNG格式。圖4-6按鍵對比圖1.3Android基本控件和藍牙通信網(wǎng)絡(luò)首先介紹一些,簡單的控件的編程。按鍵編程:先創(chuàng)建一個Button類,使用findViewById()去綁定UI界面的控件,然后在編寫屬于該按鍵的監(jiān)聽函數(shù)。監(jiān)聽函數(shù)有兩種寫法,一種是setOnClickListener()函數(shù),另一種setOnTouchListener()函數(shù)。這兩種的區(qū)別在于后者重寫時,會多一個觸屏事件變量MotionEvent,該變量可以檢測按鍵的按下和彈起。有了以上的基本的控件編程了,接下來介紹一下,藍牙相關(guān)的組件。想要調(diào)用Android手機的藍牙組件,需要在AndroidManifest.xml文件中添加藍牙的三條權(quán)限,接著就是去獲得藍牙適配器,只需BluetoothAdapter.getDefaultAdapter()函數(shù)獲取即可。有了藍牙適配器,即可對手機藍牙進行打開和關(guān)閉操作。接下來就是藍牙設(shè)備連接,當(dāng)用戶單擊連接藍牙時,就會由MainActivity跳轉(zhuǎn)至BluetoothDeviceListActivity,同時傳遞請求碼。BluetoothDeviceListActivity內(nèi)部主要利用廣播去獲取藍牙設(shè)備,并將搜索到的設(shè)備存放在界面的列表中。選擇需要連接的藍牙設(shè)備后,會將請求碼和藍牙設(shè)備地址傳回MainActivity。MainActivity接收到返回的請求碼后,會進入onActivityResult()中將獲取的藍牙地址轉(zhuǎn)化為藍牙地址類,并調(diào)用ChatService中的連接線程,與該藍牙設(shè)備創(chuàng)建一個新的藍牙串口通信網(wǎng)絡(luò)。因為HC-05為藍牙串口透傳模塊,藍牙網(wǎng)絡(luò)的UUID必須00001101-0000-1000-8000-00805F9B34FB。ChatService為官方例程提供的源碼,只略做解釋,該文件內(nèi)含連接線程ConnectThread()、數(shù)據(jù)接收和發(fā)送線程ConnectedThread()以及接受連接線程,這里其實只是用到前了兩個線程。1.4高德地圖移植目前國內(nèi)主流的兩大地圖開發(fā)平臺為百度地圖API和高德地圖API,本應(yīng)用采用高德地圖,因為高德地圖有著覆蓋其全平臺產(chǎn)品的近千篇的開發(fā)文檔,并且平臺還提供了覆蓋核心產(chǎn)品典型使用場景的示例。在移植高德地圖之前需要做以下幾個準備:申請密鑰Key。首先需要注冊高德地圖開放平臺的賬號,成為高德地圖開放平臺的開發(fā)者,然后進入個人用戶的控制臺,單擊“應(yīng)用管理欄”下的“我的應(yīng)用”,創(chuàng)建新的應(yīng)用。在創(chuàng)建的應(yīng)用上點擊"添加"按鈕,在彈出的對話框,如下圖5-6所示。接下來只要填寫key名稱,同時去Androidstudio平臺獲取調(diào)試版的安全碼SHA1、發(fā)布版的安全碼SHA1、以及PackageName,即可獲得高德地圖的Key,切記一個Key只能一個應(yīng)用使用,否則會出現(xiàn)應(yīng)用無法訪問平臺的問題。圖4-7申請Key圖獲取圖4-7中所需要的信息。回到Androidstudio平臺,單擊Build欄下的GenerateSignedBunldorAPK,創(chuàng)建一個APK的Key,并將其加入工程中,詳細步驟可以查百度,這里不詳細說了。單擊Androidstudio平臺左下角的Terminal,利用cd命令進入Java的bin中,再輸入“keytool-v-list-keystore

<前面創(chuàng)建APK的Key的路徑>”,然后就會得到發(fā)布版的SHA1,如圖4-8。相對于發(fā)布版SHA1,調(diào)試版安全的SHA1獲取就容易多了,具體操作如圖4-9。最后就是獲取PackageName,該信息只需打開AndroidManifest.xml文件,在開頭就會有這一句“<manifestxmlns:android="http://S/apk/res/android"package="XXXXX">”,只需要吧XXXX的內(nèi)容填入即可。單擊提交,就會獲得高德地圖的Key。圖4-8發(fā)布版的SHA1獲取圖圖4-9調(diào)試版安全SHA1操作圖添加高德地圖的開發(fā)包。首先去高德地圖API官網(wǎng),單擊開發(fā)支持下的Android導(dǎo)航SDK。然后下拉,找到“相關(guān)下載”,即可下載到高德地圖的開發(fā)包,接下來將開發(fā)包的文件移植到工程文件夾內(nèi)的lib文件夾內(nèi)。再如圖4-10操作,就完成了開發(fā)包的添加。圖4-10build.gradle操作圖添加權(quán)限和高德地圖的Key,該操作全是在AndroidManifest.xml內(nèi)完成。權(quán)限和高德地圖具體內(nèi)容,如圖4-11。圖中android:value的值為步驟二獲取到的。圖4-11權(quán)限和高德地圖Key1.5Android應(yīng)用導(dǎo)航功能設(shè)計思路首先,由于高德地圖的API過于復(fù)雜,所以可以去高德地圖的開放平臺學(xué)習(xí)提供的例程,然后依照官方例程仿寫自己需要實現(xiàn)的功能。先確定目標:使用MCU傳過來的經(jīng)度和緯度信息來定位,因此我們需要去平臺的開發(fā)者指南尋找,發(fā)現(xiàn)僅在Android導(dǎo)航SDK開發(fā)指南里,有關(guān)于“傳入外部GPS數(shù)據(jù)”指導(dǎo)和介紹。簡單介紹高德地圖的“傳入外部GPS數(shù)據(jù)”,其等價于不再使用系統(tǒng)的定位點進行驅(qū)動了,導(dǎo)航SDK內(nèi)部將會以您傳入的定位點數(shù)據(jù)為標準進行無起點算路和實時導(dǎo)航,建議傳入頻率為一秒一次,否則可能影響導(dǎo)航效果。想要使用這一功能,需要做好以下幾步:(1)開啟外部數(shù)據(jù)定位點,調(diào)用AMapNavi的setIsUseExtraGPSData()方法開啟使用外部定位點數(shù)據(jù),將其設(shè)置為true。(2)傳入外部GPS數(shù)據(jù),調(diào)用AMapNavi的setExtraGPSData()方法傳入外部定位點數(shù)據(jù)。注意:傳入的定位點數(shù)據(jù)必須是WGS84坐標系(type傳入1)或者高德坐標系(type傳入2),并且經(jīng)度、緯度、速度、精度、角度、時間參數(shù)缺一不可。

(3)調(diào)用導(dǎo)航API,實現(xiàn)導(dǎo)航。啟動導(dǎo)航需要有導(dǎo)航的路徑,所以算路的API也是不可缺少的。根據(jù)官方的開放指南,算路分為經(jīng)緯度算路和POI算路,很明確我們使用的是外部GPS數(shù)據(jù),因此選擇經(jīng)緯度算路。開發(fā)指南給的算路指導(dǎo),如圖4-12。圖4-12算路代碼例程圖根據(jù)圖4-12,我們只需將接收到的經(jīng)緯度信息,填入NaviLatLng(double緯度信息,double經(jīng)度信息).然后調(diào)用AMapNavi類下的calculateRideRoute進行算路即可。(4)定時器更新定位信息,并重新導(dǎo)航。采用了Android的定時器來定時更新經(jīng)度和緯度信息,并重新啟動導(dǎo)航,同時將航向角發(fā)送給MCU,以此實現(xiàn)實時導(dǎo)航。Android的定時器程序框架,如圖4-13。圖4-13定時器程序框架圖不同Activity之間的數(shù)據(jù)傳遞。通過學(xué)習(xí)和查資料,了解的方法有兩種,一種是Bundle和Itent,跳轉(zhuǎn)界面來傳遞數(shù)據(jù),該方法弊端,每秒會跳出一個導(dǎo)航界面,導(dǎo)致按下Android手機的返回鍵,無法立馬返回主界面。第二種,定義一個Android應(yīng)用的全局變量,所有的Activity都有修改和獲取的權(quán)限。只需新建一個Java類文件,將其繼承于Application,然后修改AndroidMainfest.Xml內(nèi)application下的android:name=“全局變量文件名”即可。接下來,只需在全局變量文件內(nèi)編寫修改函數(shù)和獲取函數(shù),在Activity中調(diào)用,就能完成數(shù)據(jù)的傳遞。經(jīng)緯度轉(zhuǎn)化為高德地圖坐標,該內(nèi)容寫在Android定時器任務(wù)里面的。講轉(zhuǎn)化前,先簡單的介紹一下坐標體系。主要的坐標格式有WGS84格式、高德坐標以及百度坐標。WGS84為常見的GPS經(jīng)緯度,而高德坐標和百度坐標是兩個平臺各自將WGS84進行處理后的坐標體系。因此,在使用外部GPS數(shù)據(jù)定位時,需要先將WGS84轉(zhuǎn)化為高德坐標。至此關(guān)于Android應(yīng)用方面的修改和編寫已全部完成,剩下的就是不停的調(diào)試和修改,讓小車和手機通信穩(wěn)定。5系統(tǒng)測試與誤差分析系統(tǒng)調(diào)試分為三部分:智能小車的硬件調(diào)試、智能小車的MCU軟件調(diào)試、Android應(yīng)用調(diào)試、整體調(diào)試。這樣可以快速定位問題由哪一部分引起的,大大的縮減了調(diào)試難度。2.1智能小車的硬件調(diào)試智能小車的硬件方面調(diào)試,主要分為萬用表檢測PCB板和觀測各模塊是否正常工作。檢測引腳:主要的檢查的是引腳是否存在虛焊或者漏焊現(xiàn)象。首先,將萬用表調(diào)到蜂鳴檔,然后打開PCB圖,根據(jù)PCB圖,檢查每個引腳之間的導(dǎo)通關(guān)系。若導(dǎo)通,萬用表就會發(fā)出“bi~”的聲音。模塊的觀測:先查看L298N模塊的指示燈,確認電源是否存在問題。指示燈常亮,表示電源無問題。查看最重要的主控的指示燈,燈亮起,MCU最小系統(tǒng)板已通電。再觀測藍牙模塊的指示燈,若指示燈快速閃爍,表示準備就緒,等待連接;若其一秒一閃爍,表示已連接設(shè)備。最后觀測到GPS模塊閃爍,表示定位成功,一定要記住這點,Android應(yīng)用無法接收到經(jīng)緯度信息。也可以使用野火的串口助手,查看GPS的定位,如圖5-1。圖5-1GPS模塊定位圖2.2智能小車的MCU軟件測試MCU軟件調(diào)試,主要是通過ST-Link和MDK進行仿真、Android手機的藍牙串口應(yīng)用進行調(diào)試以及測試。首當(dāng)其沖的是測試L298N對直流電機控制的程序,這部分測試十分簡單,只需要再主程序中依次調(diào)用寫好的前進函數(shù)、左轉(zhuǎn)函數(shù)、右轉(zhuǎn)函數(shù)、后退函數(shù)以及停止函數(shù),來觀測智能小車的行駛。其次測試的是藍牙模塊代碼,這里直接調(diào)用printf()函數(shù)隨意輸出一個字符串,然后用Android手機串口應(yīng)用查看接收的數(shù)據(jù),與發(fā)送的數(shù)據(jù)是否一致。然后手機端發(fā)送之前約定的指令,看智能小車執(zhí)行的動作,是否與指令相符合。2.3Android應(yīng)用調(diào)試Android方面的測試,采用藍牙模塊與USB串口轉(zhuǎn)TTL相連,利用電腦的串口助手發(fā)送數(shù)據(jù)和查看數(shù)據(jù),并在Androidstudio平臺上查看Android應(yīng)用的輸出日志。具體步驟,首先需要將手機設(shè)置為允許USB調(diào)試,通過USB線連接電腦,如圖5-2操作,即可進行Android應(yīng)用的仿真。圖5-2Android應(yīng)用仿真操作圖2.4智能小車避障測試與誤差分析在實際測試中,智能小車能夠基本的識別障礙物。經(jīng)過多次測試后,發(fā)現(xiàn)在識別曲面或斜面的物體時,有較大的概率無法識別出,還有就是面積小于0.5平方面的物體,也有小概率被無法識別出。2.5藍牙控制測試與分析藍牙控制智能小車的基本行動時,動作流暢,延遲小。相對來說,比較成功。2.6導(dǎo)航測試與誤差分析

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論