雷 丹
(四川信息職業(yè)技術(shù)學(xué)院,四川 廣元 628017)
隨著科技的發(fā)展和進步,采用機器人替代人工來探知一些危險區(qū)域或人類不能直接到達(dá)的地域,要求探測機器人在行進中可以實時檢測周圍的障礙物,然后根據(jù)檢測結(jié)果設(shè)計出合理的運行軌跡,保證機器人可以安全抵達(dá)任何位置。本文以自動避障功能為主要研究對象,選取合適的障礙物探測方式及避障控制算法,完成整個無人避障小車系統(tǒng)的設(shè)計。
根據(jù)目前特殊行業(yè)的需求,本文設(shè)計了無人避障小車,主要從以下幾個方面提出了相應(yīng)的設(shè)計方案。
本文采用了超聲波傳感器和紅外傳感器,超聲波傳感器采用HC-SR04,該傳感器探測距離為2 cm~450 cm,探測角度為15°,工作電壓為5 V,可以由單片機直接供電。為了實現(xiàn)無人避障小車180°的測距,增加了可旋轉(zhuǎn)360°伺服舵機來帶動超聲波傳感器進行測距,伺服舵機的轉(zhuǎn)動角度分別設(shè)計為0°、90°、180°,使得超聲波測距范圍形成一個封閉的半圓形結(jié)構(gòu)。由于超聲波測距有一個測距周期,當(dāng)沒有達(dá)到該測距周期時就使用紅外傳感器來代替超聲波傳感器進行障礙物的檢測,這是對超聲波傳感器的一個時間上的補償,這樣就能更加精確地對外界環(huán)境進行檢測。
超聲波傳感器需要在0°、90°、180°三個方位上分別進行數(shù)據(jù)檢測,每個方位上單次檢測會獲得5組數(shù)據(jù),分別為d1、d2、d3、d4、d5,然后采用冒泡排序法對5組數(shù)據(jù)進行計算,得出較為精確的結(jié)果。
冒泡排序法計算過程為:先對5組數(shù)據(jù)進行比較排序,得出最大值和最小值,假設(shè)最小值為d1,最大值為d5;然后將最小值d1和最大值d5排除;最后再對剩下的3個值d2、d3、d4求平均數(shù)得到如下結(jié)果:
(1)
本文中設(shè)計的無人避障小車系統(tǒng)采用4個直流電機,控制芯片為L293D,它是一款雙H橋驅(qū)動芯片,可同時驅(qū)動兩路直流電機,本文采用了兩個L293D,1個控制左側(cè)兩個直流電機,另一個控制右側(cè)兩個直流電機,然后通過輸入信號控制直流電機執(zhí)行正轉(zhuǎn)、反轉(zhuǎn)、停止來實現(xiàn)小車的直行、左轉(zhuǎn)、右轉(zhuǎn),具體的設(shè)計如下:
(1) 當(dāng)檢測到?jīng)]有障礙物時,左側(cè)電機正轉(zhuǎn),右側(cè)電機正轉(zhuǎn),實現(xiàn)無人小車直行。
(2) 當(dāng)檢測到左側(cè)有障礙物時,左側(cè)電機正轉(zhuǎn),右側(cè)電機反轉(zhuǎn),實現(xiàn)無人小車右轉(zhuǎn)。
(3) 當(dāng)檢測到右側(cè)有障礙物時,左側(cè)電機反轉(zhuǎn),右側(cè)電機正轉(zhuǎn),實現(xiàn)無人小車左轉(zhuǎn)。
無人避障小車的控制系統(tǒng)結(jié)構(gòu)框圖如圖1所示,無人避障小車系統(tǒng)分為電源模塊、檢測模塊、顯示模塊、驅(qū)動模塊和控制模塊五個部分。
圖1 無人避障小車控制系統(tǒng)結(jié)構(gòu)框圖
電源模塊:為了保證小車可以自主行駛,本文采用了獨立電源模塊,該電源模塊使用了供電、程序燒寫、串口通信三合一模塊,采用可充電18650鋰電池,主要給4個直流電機和單片機供電,以及進行程序燒寫和串口通信。
檢測模塊:該模塊分為超聲波測距模塊和紅外檢測模塊兩部分,超聲波測距模塊為主要模塊,當(dāng)超聲波失效時,作為儲備使用紅外傳感器避障系統(tǒng)。
顯示模塊:使用LCD1602液晶顯示模塊實時顯示超聲波檢測的距離值,LCD1602 液晶第一行顯示智能小車行駛方向,第二行顯示該方向與障礙物之間的距離。
驅(qū)動模塊:包括4個驅(qū)動電機,執(zhí)行小車的前進、左轉(zhuǎn)、右轉(zhuǎn)和后退動作。
按鍵模塊:主要控制小車的啟動與停止。
控制模塊:采用51單片機作為控制單元,主要負(fù)責(zé)協(xié)調(diào)控制其他4個模塊,使系統(tǒng)可以完整地完成自主避障功能,單片機的硬件接線圖如圖2所示。
圖2 單片機的硬件接線圖
無人避障小車控制部分軟件包括主程序、超聲波測距子程序、顯示模塊子程序、電機調(diào)速子程序和按鍵控制子程序等5個部分。
主程序的路徑設(shè)計過程如圖3所示。小車啟動后朝正前方前進,當(dāng)遇到障礙物時小車停止,這時單片機會先采集超聲波測量的正前方障礙物的距離并顯示,然后舵機左轉(zhuǎn)采集左側(cè)障礙物的距離并顯示,再讓舵機右轉(zhuǎn)測量右側(cè)障礙物的距離并顯示,如果三個方向的距離都小于10 cm說明空間極其狹窄,小車會原地左轉(zhuǎn)然后繼續(xù)檢測直至小車檢測到有一條合理的路線離開這個空間;如果小車左側(cè)的距離大于右側(cè)小車就原地左轉(zhuǎn),如果右側(cè)的距離大于左側(cè)小車就會右轉(zhuǎn)。然后小車?yán)^續(xù)前行,直到再次遇到障礙物進入下一個循環(huán)。
圖3 主程序流程圖
本文基于單片機開發(fā)了一款無人避障小車,為了實現(xiàn)180°的檢測范圍,將伺服電機與超聲波傳感器結(jié)合起來,以實時地檢測小車前方是否出現(xiàn)障礙物,并判斷出障礙物的具體方位,為小車設(shè)計出合理的避障路徑,實現(xiàn)了小車的智能化行駛。