基于ARM和Linux的路徑記憶循跡小車
摘要:針對智能小車在實際應(yīng)用中的需要,設(shè)計了一種基于ARM和Linux的具有路徑記憶循跡功能的智能小車。利用ARM和Linux操作系統(tǒng),實現(xiàn)了對智能小車的超聲波避障模塊、電機等的控制。利用電子羅盤,實現(xiàn)了小車在無黑線情況下精確轉(zhuǎn)向;利用超聲波測距避障以及Linux文件系統(tǒng)建立和保存了智能小車運行的路徑記憶庫;通過讀取記憶庫的數(shù)據(jù)實現(xiàn)智能小車的循跡功能。結(jié)果表明,該設(shè)計方案可以很好地實現(xiàn)循跡功能并且對環(huán)境的適應(yīng)性較強。
本文引用地址:http://m.butianyuan.cn/article/201609/303641.htm引言
智能車是近年來發(fā)展起來的一門新興的綜合技術(shù),在軍事領(lǐng)域得到了廣泛應(yīng)用,而且在生產(chǎn)和生活中的應(yīng)用也日趨普遍。
目前智能小車的自主移動方式有兩種:循跡和避障。一般的循跡功能可以通過算法使其能精確地在黑線上行駛,但是由于一些室內(nèi)環(huán)境的因素,要實施黑線的布置并不符合實際要求。一般的避障功能僅僅是通過探測前方障礙物而進(jìn)行躲避,通過算法可以完成從出發(fā)點到定點的行駛,但是算法運算量大且放在不同的環(huán)境,就需要更改程序,這對實際應(yīng)用帶來很大的不便。
基于這種背景,設(shè)計了一種利用超聲波測距避障功能以及Linux文件系統(tǒng)的路徑記憶循跡智能小車,通過人為地設(shè)置障礙物來規(guī)劃小車的行走路線,并將路線記錄入庫。小車只需讀取庫中的數(shù)據(jù)即可按照規(guī)劃的路線行駛以實現(xiàn)循跡功能,可擺脫尋查黑線的循跡方式。當(dāng)環(huán)境發(fā)生變化時,利用按鍵設(shè)置小車的工作模式,可以直接重新建立記憶庫,無需更改程序,具有一定的實際意義。
1 總體設(shè)計
圖1為本系統(tǒng)總體結(jié)構(gòu)框圖,主要由超聲波測距模塊與云臺、S3C6410控制器、電機驅(qū)動模塊、光電測速模塊以及電源等部分組成。其中,電源用于完成對整個系統(tǒng)的供電,超聲波測距模塊與云臺完成對小車運行狀態(tài)的預(yù)判,電機驅(qū)動模塊根據(jù)預(yù)判的結(jié)果執(zhí)行相應(yīng)的操作,光電測速模塊用于PID控制的反饋以及在轉(zhuǎn)向時控制車輪運行的周數(shù),S3C6 410控制器在移植Linux操作系統(tǒng)的基礎(chǔ)上完成對各模塊的控制并建立小車運行狀態(tài)的記憶庫。
2 系統(tǒng)硬件設(shè)計
2.1 控制器
S3C6410控制器是由三星公司推出的一款低功耗、高性價比的RISC處理器,它基于ARM11內(nèi)核(ARM1176JZF—S),可廣泛應(yīng)用于移動電話和通用處理等領(lǐng)域??刂破饔珊诵碾娐钒搴椭靼鍍刹糠纸M成,核心板上設(shè)計有S3C6410、SDRAM存儲電路、NAND Flash、1.25 V電源電路和處理器復(fù)位電路等,主板上設(shè)計有串口、網(wǎng)口、按鍵等。
2.2 電源與電機驅(qū)動模塊
電源采用現(xiàn)有的鋰充電電池供電,鋰電池的電壓約為7.2 V。電機驅(qū)動采用的是L298N驅(qū)動模塊,該模塊采用ST公司的L298N芯片,采用高質(zhì)量鋁電解電容,可使電路穩(wěn)定工作;可以直接驅(qū)動兩路3~16 V直流電機,并提供了5 V輸出接口,可以給5 V單片機電路系統(tǒng)供電,支持3.3 V ARM控制,可以方便地控制直流電機速度和方向。
2.3 超聲波測距模塊與云臺
采用US-100超聲波測距模塊,該模塊可實現(xiàn)0~4.5 m的非接觸測距功能,擁有2.4~5.5 V的寬電壓輸入范圍,靜態(tài)功耗低于2 mA,自帶溫度傳感器對測距結(jié)果進(jìn)行校正,同時具有GPIO、串口等多種通信方式,內(nèi)置看門狗,工作穩(wěn)定可靠。
云臺采用SG90舵機,工作電壓為4.8~6 V,無負(fù)載的情況下轉(zhuǎn)速為0.12 s/60℃。控制信號由接收機的通道進(jìn)入信號調(diào)制芯片,獲得直流偏置電壓。它內(nèi)部有一個基準(zhǔn)電路,產(chǎn)生周期為20 ms、寬度為1.5 ms的基準(zhǔn)信號。將獲得的直流偏置電壓與電位器的電壓比較,獲得電壓差輸出。最后,電壓差的正負(fù)輸出到電機驅(qū)動芯片,決定電機的正反轉(zhuǎn)。
2.4 光電測速模塊
本設(shè)計中的測速模塊采用槽型對射光電,只要在非透明物體中通過槽型即可觸發(fā)(配合小車測速碼盤20格使用)輸出5 V TTL電平,采用了施密特觸發(fā)器去抖動脈沖,非常穩(wěn)定,用于小車測轉(zhuǎn)速、測距離等。
2.5 電子羅盤
電子羅盤采用霍尼韋爾HMC5883L芯片,該芯片帶有數(shù)字接口的弱磁傳感器,應(yīng)用于低成本羅盤和磁場檢測領(lǐng)域,并附帶霍尼韋爾專利的集成電路,包括放大器、自動消磁驅(qū)動器、偏差校準(zhǔn)、能使羅盤精度控制在1°的I2C系列總線接口。
3 記憶庫的設(shè)計
3.1 智能小車避障方案選擇
根據(jù)設(shè)計要求,小車在行駛過程中需要準(zhǔn)確地檢測前方的人為障礙物,并通過障礙物的位置來確定小車下一步的運行狀態(tài),因此對測量距離有一定要求。障礙物檢測可以有多種方法:紅外光檢測、超聲波檢測和機械接觸。這些方法各有優(yōu)缺點,常用的有紅外檢測和超聲波檢測,兩種方案的區(qū)別見表1。對比兩種方案的指標(biāo)后,本文避障方案選擇超聲波檢測,并且為了滿足系統(tǒng)要求添加了SG90舵機作為輔助,使用超聲波可以檢測多個方向。
3.2 智能小車的路徑狀態(tài)設(shè)計
為了簡化記憶庫的設(shè)計以及結(jié)合實際應(yīng)用中的情況,智能小車的運行狀態(tài)設(shè)定成4種情況:直行、90°左轉(zhuǎn)彎、90°右轉(zhuǎn)彎和180°掉頭。其中,直行狀態(tài)在記憶庫中的表示是時間,通過Linux中的時間函數(shù)測量直行狀態(tài)的持續(xù)時間,單位為s。
為了使智能小車能按照上面的4種情況運行,智能小車在行進(jìn)中遇到的路徑情況是人為設(shè)定的,如圖2所示。
3.3 記憶庫的建立
智能小車的運行狀態(tài)是人為設(shè)定的4種情況,記憶庫中的數(shù)據(jù)就是由這4個狀態(tài)標(biāo)志組成。人為設(shè)置好從起點到終點的障礙物后,即可讓小車在起點開始運行,并在每次改變運行狀態(tài)前將運行狀態(tài)記錄入庫。在到達(dá)終點后以180°掉頭作為結(jié)束標(biāo)志,然后利用Linux文件系統(tǒng)將記憶庫里的數(shù)據(jù)保存到Linux下的一個文件當(dāng)中,到此完成記憶庫的建立。
評論