杜俊杰,胡思琪,伍馮潔,鄭振勤,鄧柏鋒
(1.廣州大學(xué) 機(jī)械與電氣工程學(xué)院,廣東 廣州 510006;2.廣州大學(xué) 電子與通信工程學(xué)院,廣東 廣州 510006;3.廣州大學(xué) 實(shí)驗(yàn)中心,廣東 廣州 510006)
在四輪小車設(shè)計過程中,避障系統(tǒng)的設(shè)計是非常關(guān)鍵的一環(huán)[1]。精準(zhǔn)靈敏的避障系統(tǒng)將使小車實(shí)現(xiàn)快速無障礙的自主行走,而靈敏度低、誤差大的避障系統(tǒng)將導(dǎo)致小車在行進(jìn)過程中多走彎路、誤碰障礙物,甚至走進(jìn)某個死角,嚴(yán)重影響小車自主行走效果。目前,四輪小車避障功能一般采用1個或2個超聲波,或少量紅外線傳感器來實(shí)現(xiàn)[2]。由于單個超聲波的測距角度存在局限性,紅外傳感器又往往易受光線干擾,導(dǎo)致常規(guī)避障設(shè)計方法效果不理想,容易出現(xiàn)偏離預(yù)定軌跡、觸碰到障礙物、局部范圍兜圈等問題。
為解決四輪小車常用避障設(shè)計方法存在的不足之處,本文將超聲波、舵機(jī)與紅外線傳感器相結(jié)合,在四輪小車的頭部均勻分布2個由超聲波與舵機(jī)組成的模塊,在車體兩側(cè)分別安裝1個超聲波及1個紅外傳感器,通過綜合分析處理4個超聲波及2個紅外傳感器測量的結(jié)果,自動判斷小車運(yùn)動狀態(tài),從而實(shí)現(xiàn)其自主行走及自動避障。
四輪小車的自動避障系統(tǒng)主要由超聲波傳感器、舵機(jī)與紅外傳感器組成[3],其空間分布情況如圖1及圖2所示。如圖1所示,1號和2號點(diǎn)位各安裝一個由舵機(jī)與超聲波傳感器組成的模塊,主要負(fù)責(zé)小車前方障礙物的多角度檢測;3號和4號點(diǎn)位各安裝一個超聲波傳感器,負(fù)責(zé)檢測車體兩旁的障礙物,提高避障的能力。如圖2所示,5號和6號點(diǎn)位各安裝一個紅外傳感器,負(fù)責(zé)檢測圖1中1、2號點(diǎn)位超聲波模塊的盲區(qū),其中5、6號點(diǎn)位位于車體底部,可有效減少光線對紅外傳感器檢測效果的影響。
圖1 超聲波傳感器分布情況
圖2 紅外傳感器布置情況
對于超聲波傳感器,其檢測到障礙物與車身的距離稱為障礙物距離d,當(dāng)障礙物距離小于一個閾值時,小車需要進(jìn)行避障操作,這個閾值稱為安全距離D,而對測量范圍較大的小車頭部區(qū)域,還通過引入舵機(jī)以實(shí)現(xiàn)多個角度a的超聲波障礙檢測[4];同時設(shè)定1號與2號點(diǎn)位的超聲波模塊障礙物距離分別為d1與d2,安全距離為D1與D2,兩點(diǎn)位舵機(jī)每次轉(zhuǎn)動角度為a1與a2;3號與4號點(diǎn)位的超聲波模塊障礙物距離分別為d3與d4,安全距離為D3與D4。對于5號與6號點(diǎn)位處的紅外傳感器,其檢測的有效直線距離定義為n,在有效距離內(nèi)若有障礙物,小車也需要進(jìn)行避障操作。小車在行駛過程中,動態(tài)地分析超聲波和紅外傳感器反饋回來的數(shù)據(jù),計算出小車在遇到障礙物時需要轉(zhuǎn)動的角度值φ,進(jìn)而實(shí)現(xiàn)自動避障[5]。
小車轉(zhuǎn)動角度值φ的具體計算過程如下,設(shè)φ初始值為0,“+”表示轉(zhuǎn)向右方向,“-”表示轉(zhuǎn)向左方向,有:
(1)1,2號位中,當(dāng)d<D,表示障礙物過于靠近,此時小車停止,需要進(jìn)一步判斷d1與d2的數(shù)值。
(2)若d1<D1,表示小車左邊有障礙物,則1,2號點(diǎn)位的舵機(jī)往右轉(zhuǎn)動a,兩側(cè)的超聲波重新獲取障礙物距離d1,d2,并再次與安全距離進(jìn)行比較;若d1>D1并且d2>D2,表示此時小車轉(zhuǎn)動φ度即可避開障礙物,用公式φ=+(a+φ)表示,而其他情況,記錄為φ=φ+a,并重新執(zhí)行步驟(2),直到計算出轉(zhuǎn)彎角度;當(dāng)舵機(jī)轉(zhuǎn)動角度到達(dá)上限時,則默認(rèn)φ=+90°。
(3)同理,若d2<D2,表示小車右邊有障礙物,則1,2號點(diǎn)位的舵機(jī)往左轉(zhuǎn)動a,重復(fù)步驟(2),最后得到小車車身向左轉(zhuǎn)φ的角度值。
(4)5,6號位中,紅外傳感器主要用于檢測底部超聲波的盲區(qū),從而保護(hù)車體底盤的安全,所以當(dāng)在有效距離內(nèi)檢測到障礙物時,則默認(rèn)小車轉(zhuǎn)動角度φ=+30°。
(5)3,4號位中,車身兩側(cè)的超聲波模塊主要用于檢測小車轉(zhuǎn)彎時兩旁的障礙物,其轉(zhuǎn)彎的角度默認(rèn)為φ=±30°。
小車在行進(jìn)過程中需要不斷地檢測所有傳感器的狀態(tài),并對傳感器反饋的數(shù)據(jù)進(jìn)行分析處理,最后形成有效的避障方案。為了提高小車避障的靈敏度和準(zhǔn)確性,本文選用STM32F407VGT6型32位ARM芯片作為避障系統(tǒng)的微控制器,并以該單片機(jī)為核心進(jìn)行避障系統(tǒng)控制單元及外圍電路、傳感器接口模塊、舵機(jī)接口模塊及工作狀態(tài)指示等電路的設(shè)計[6]。超聲波、紅外線傳感器及舵機(jī)接口電路原理圖如圖3所示。
圖3 避障系統(tǒng)接口電路設(shè)計
如圖3所示,小車的1~4號超聲波傳感器均包含TRIG、ECHO、VCC和GND 4個引腳。其中這 4個超聲波的VCC、GND由STM32單片機(jī)統(tǒng)一供電,分別與STM32的3.3 V、GND相連,而1~4號超聲波的TRIG、ECHO引 腳 則 分 別 與 STM32的 PB5-PB6、PB8-PB9、PC8-PC9、PD14-PD15引腳相連。當(dāng)小車在行進(jìn)過程遇到障礙物時,先由單片機(jī)發(fā)出44 μs的TTL觸發(fā)信號,然后超聲波的TRIG連續(xù)發(fā)送8個40 kHz方波,并檢測是否有信號返回,當(dāng)有信號返回時,超聲波ECHO給出一個高電平。超聲波從發(fā)射到返回的時間即是高電平持續(xù)的時間,那么超聲波測距的距離=(高電平時間×聲速(340 m/s))/2。
對于5、6號紅外線傳感器,其輸出端口OUT分別與STM32的PC6、PC7引腳連接,VCC、GND分別與STM32的3.3 V、GND相連。小車在行進(jìn)過程中,當(dāng)5號或6號紅外傳感器檢測到前方障礙物信號時,相對應(yīng)的OUT端口將持續(xù)輸出低電平信號。STM32單片機(jī)通過電平檢測來判斷前方是否有障礙物。當(dāng)PC6或PC7引腳為低電平時,表示小車前方遇到障礙物;反之,當(dāng)PC6及PC7引腳為高電平時,小車前方不存在障礙物。
對于1,2號舵機(jī),其PWM端口分別與STM32的PA6、PA7引腳連接,VCC、GND分別與單片機(jī)供電電源5 V、GND相連。STM32單片機(jī)通過調(diào)節(jié)PWM的占空比來控制1,2號舵機(jī)轉(zhuǎn)動的角度,其對應(yīng)控制關(guān)系為:0.5 ms-0°,1.0 ms-45°,1.5 ms-90°,2.0 ms-135°,2.5 ms-180°。小車在行進(jìn)過程中,通過控制1,2號舵機(jī)轉(zhuǎn)動的角度,來實(shí)現(xiàn)1,2號超聲波角度轉(zhuǎn)動的控制,從而實(shí)現(xiàn)小車前方寬角度、實(shí)時性的障礙檢測。
在小車避障系統(tǒng)設(shè)計中,通過STM32單片機(jī)采集1~4號超聲波及5~6號紅外傳感器的測量數(shù)據(jù),并對該數(shù)據(jù)進(jìn)行分析處理,計算出小車的最佳轉(zhuǎn)彎角度,使小車在行進(jìn)過程中及時、準(zhǔn)確地避開障礙物[7-9],系統(tǒng)程序設(shè)計流程圖如圖4所示。
如圖4所示,在系統(tǒng)初始化完成后[10],小車開始行進(jìn),1~4號超聲波及5~6號紅外傳感器發(fā)出障礙物檢測信號。當(dāng)1,2號超聲波檢測到安全距離內(nèi)有障礙物時,即把該障礙物的距離返回給STM32單片機(jī),單片機(jī)收到距離數(shù)據(jù)后給小車發(fā)送停止前進(jìn)命令,同時通過調(diào)節(jié)PWM多次控制舵機(jī)轉(zhuǎn)動,實(shí)現(xiàn)1,2號超聲波的多角度掃描,從而得到小車合適的轉(zhuǎn)彎角度。在小車轉(zhuǎn)彎過程中,利用小車兩側(cè)的3,4號超聲波檢測障礙物是否在安全距離外,當(dāng)障礙物在安全距離內(nèi)時,需及時給單片機(jī)反饋信息調(diào)整合適的轉(zhuǎn)彎角度,以防止因轉(zhuǎn)彎角度不精確而導(dǎo)致撞到障礙物。此外,利用5,6號紅外傳感器對前方低處的障礙物進(jìn)行檢測,當(dāng)檢測到障礙物處于安全距離內(nèi)時,將及時通知單片機(jī)控制小車停止前進(jìn)或轉(zhuǎn)動合適的角度,以避免低處的障礙物與小車底盤相撞。
圖4 系統(tǒng)程序設(shè)計流程圖
該四輪避障小車設(shè)計完成后,通過以下方法進(jìn)行避障參數(shù)及避障效果的測試,測試過程如下:
(1)在小車的正前方20 cm處放置3個障礙物,左右兩邊20 cm處各放置一個障礙物;
(2)設(shè)定小車1,2號點(diǎn)位超聲波的安全距離D1,D2為15 cm,舵機(jī)初始角度都對準(zhǔn)正前方,且每次轉(zhuǎn)動角度為5°;
(3)設(shè)定小車3,4號點(diǎn)位超聲波的安全距離D3與D4為15 cm,5,6號點(diǎn)位紅外傳感器的安全距離x5與x6為5 cm;
(4)所有傳感器與舵機(jī)參數(shù)設(shè)置完成后,小車開始行走,記錄小車成功壁開的障礙物數(shù);
(5)調(diào)整傳感器與舵機(jī)參數(shù),對于D1~D4,x5與x6,每次測試的增量都為1 cm,舵機(jī)每次轉(zhuǎn)動角度的增量為1度,再重復(fù)步驟(4)。
在以上測試過程中,以避開的障礙物數(shù)作為參考值,避開的障礙物越多,說明該組參數(shù)越好。在得到一組較好的數(shù)據(jù)后,再改變障礙物的距離重新測試。通過多次的測試,最終得到D1,D2各為20 cm,D3,D4各為15 cm,舵機(jī)每次轉(zhuǎn)動角度為5°,x5與x6各為10 cm的效果最好。
在此將該四輪小車應(yīng)用在本校電信專業(yè)的單片機(jī)實(shí)踐教學(xué)中,2017—2019年間,電信16級、17級及18級共9個班級(每屆3個班),合計約400學(xué)生使用該小車開展STM32單片機(jī)進(jìn)行綜合性、設(shè)計性與創(chuàng)新性實(shí)驗(yàn)。按照本文的設(shè)計方法,97%以上學(xué)生能順利完成四輪避障小車的制作與程序設(shè)計,92%以上學(xué)生的設(shè)計能獲得較好的避障效果。該實(shí)踐調(diào)動了學(xué)生學(xué)習(xí)單片機(jī)技術(shù)的積極性與主動性,較好地滿足了不同層次學(xué)生的單片機(jī)課程學(xué)習(xí)需要,達(dá)到了預(yù)期教學(xué)效果。
本文基于STM32單片機(jī)實(shí)現(xiàn)多種傳感器有效的協(xié)同工作,對其傳入的數(shù)據(jù)進(jìn)行合理的分析與計算,實(shí)現(xiàn)了四輪小車寬角度有效避障。該設(shè)計彌補(bǔ)了單個超聲波測距角度有限及紅外傳感器往往易受光線干擾等不足,對四輪小車在行進(jìn)過程中偏離預(yù)定軌跡、觸碰到障礙物、局部范圍兜圈等問題提供了一種有效的解決方案。