基于A(yíng)RM和Linux的路徑記憶循跡小車(chē)
根據具體環(huán)境,可建立一個(gè)起點(diǎn)、多個(gè)終點(diǎn)的路線(xiàn)記憶庫,并將各個(gè)路線(xiàn)記憶分別保存在Linux下的不同文件中,智能小車(chē)通過(guò)讀取文件中內容實(shí)現循跡功能。
4 系統軟件設計
系統軟件設計分為3個(gè)層次:應用層、操作系統層和驅動(dòng)層。應用層包括智能小車(chē)控制策略程序、建立記憶庫和按鍵控制小車(chē)的工作模式;操作系統層包括Bootloader移植、操作系統ARM—Linux內核的移植和根文件系統移植;驅動(dòng)層主要包括us-100超聲波模塊、SG90舵機以及電機驅動(dòng)模塊等驅動(dòng)程序。
4.1 系統移植以及驅動(dòng)程序
操作系統的移植包括uboot、內核和文件系統的燒寫(xiě),內核包含GPIO口、DM9000網(wǎng)卡、內存等關(guān)鍵的底層驅動(dòng)。小車(chē)啟動(dòng)時(shí),通過(guò)uboot對S3C6410進(jìn)行必要的初始化,然后引導Linux的啟動(dòng)。
智能小車(chē)需要的驅動(dòng)程序有:電機驅動(dòng)模塊驅動(dòng)程序、SG90舵機驅動(dòng)程序、光電測速模塊驅動(dòng)程序以及us-100超聲波模塊驅動(dòng)程序。其中,舵機與超聲波編寫(xiě)到一個(gè)驅動(dòng)文件中。這些模塊的驅動(dòng)程序都是以混雜設備驅動(dòng)的方式編寫(xiě),主要的驅動(dòng)函數采用ioctl函數。而電機驅動(dòng)模塊與超聲波避障驅動(dòng)程序的結構相似,僅是實(shí)現功能不同。電機驅動(dòng)模塊驅動(dòng)程序框架如下:
光電測速模塊驅動(dòng)程序完成兩種功能:①采用中斷的方式來(lái)記錄小車(chē)的測速,并反饋給應用層作為PID控制的反饋;②通過(guò)應用層傳遞車(chē)輪運轉的周數,驅動(dòng)中利用異步通知的方式在運轉完規定周數后通知應用層,作為小車(chē)轉向時(shí)的控制。
4.2 記憶庫程序設計
超聲波避障是決定智能小車(chē)運行狀態(tài)的關(guān)鍵所在。利用超聲波測得人為障礙物,讓智能小車(chē)通過(guò)躲避障礙物實(shí)現按預定路線(xiàn)行走,并通過(guò)Linux文件系統將小車(chē)行走過(guò)程中所有的狀態(tài)都記錄在一個(gè)文件中形成記憶庫。程序流程圖如圖3所示。
4.3 智能小車(chē)控制策略程序設計
智能小車(chē)基本的控制是通過(guò)電機驅動(dòng)模塊將模塊上對應的引腳與ARM11的GPL口和GPK口中的部分引腳相連,通過(guò)對GPIO口輸出高低電平來(lái)控制小車(chē)的直行、90°左轉彎、90°右轉彎和180°掉頭。
由于小車(chē)在轉向時(shí),輪胎會(huì )出現打滑現象,這樣會(huì )影響小車(chē)的90°與180°的精確轉向。為了讓小車(chē)能在無(wú)黑線(xiàn)的情況下精確轉向,本設計中采用hmc58831電子羅盤(pán)作為小車(chē)的“眼睛”。一般的電子羅盤(pán)都會(huì )存在一定的偏差,通過(guò)校正以后可以使精度達到1°左右。
由于本設計中只是為了讓小車(chē)轉向,并非準確地測出與地理北極方向的偏向角,所以在校正后可直接使用輸出數據。為了讓小車(chē)轉向時(shí)迅速且準確,設計了分段的轉向運行方案,利用光電測速模塊和20格碼盤(pán)控制小車(chē)的運行。主要的程序流程圖如圖4所示。
為了讓小車(chē)能在無(wú)黑線(xiàn)的情況下走出相對距離內的直線(xiàn),在電機的控制中采用PID控制算法進(jìn)行調速。根據測速系統反饋回來(lái)的當前電機速度和設定速度進(jìn)行比較,將偏差作為新的輸入量控制PWM信號的占空比,從而實(shí)現各個(gè)電機在單位時(shí)間內走的路程近似相等。PID控制算法原理如圖5所示。
在記憶庫建立完成后,智能小車(chē)的運行是從記憶庫中讀取已定路線(xiàn)在各點(diǎn)的狀態(tài)值,最后實(shí)現小車(chē)按照規定路線(xiàn)行駛。主要的程序流程如圖6所示,而從終點(diǎn)回到起點(diǎn)只需將記憶庫的內容反向讀取,并將左右轉向取反。
4.4 工作模式的控制
本設計中智能小車(chē)的運行有兩種工作模式:第一是建立記憶庫;第二是按照記憶庫實(shí)現循跡。通過(guò)按鍵控制小車(chē)的工作模式,當環(huán)境發(fā)生改變時(shí),只需通過(guò)按鍵設置成建立記憶庫模式,即可完成記憶庫的修改。
5 系統測試結果及結論
通過(guò)對智能小車(chē)的測試,小車(chē)能將行駛過(guò)程中各個(gè)狀態(tài)記錄入庫,完成了利用超聲波避障和Linux文件系統的記憶庫的建立,并且通過(guò)記憶庫可實(shí)現小車(chē)按設定路徑的循跡的功能。
本方案使得小車(chē)在不同的環(huán)境中只需人為地重新設置障礙,通過(guò)設置小車(chē)的功能模式讓智能小車(chē)按障礙路線(xiàn)運行一次便可建立新的記憶庫,不需要重新布線(xiàn)或更改程序。本設計進(jìn)一步地擴展了智能小車(chē)的應用,增強了小車(chē)的環(huán)境適應性,并且可以擴展到智能家居和遠程監控領(lǐng)域,具有較強的實(shí)用性。
評論