智能小車自動(dòng)糾偏與避撞的實(shí)現(xiàn)
摘要:文中采用MSP430F149作為主控芯片,由超聲測(cè)距模塊、轉(zhuǎn)彎線檢測(cè)模塊、自動(dòng)糾偏檢測(cè)模塊、電機(jī)驅(qū)動(dòng)模塊等構(gòu)成小車。主要對(duì)行駛過程中3種情況提出了3種算法,分別是直道二次糾偏算法、彎道糾偏算法和超車算法。實(shí)現(xiàn)了智能小車的自主行駛和超車。
關(guān)鍵詞:智能小車;糾偏;主動(dòng)避撞;超車
智能車輛是一種機(jī)器人,它可以按照預(yù)先設(shè)定的模式在一個(gè)環(huán)境里自動(dòng)行駛,也可以根據(jù)現(xiàn)場(chǎng)情況自主執(zhí)行特定操作。其設(shè)計(jì)內(nèi)容涉及自動(dòng)控制、計(jì)算機(jī)技術(shù)、傳感與檢測(cè)技術(shù)等多個(gè)學(xué)科。智能小車在自動(dòng)控制領(lǐng)域具有廣闊的應(yīng)用前景。其中,如何保證車輛直線行駛,而不是“之”字形行駛、轉(zhuǎn)彎過程如何保證平行行駛,和超車是其中3個(gè)需要解決的基本問題。文中根據(jù)3個(gè)問題分別提出了解決方法,實(shí)際實(shí)驗(yàn)
效果良好。
1 現(xiàn)實(shí)應(yīng)用模擬原理
本文模擬現(xiàn)實(shí)應(yīng)用,借助圖1所示跑道(2塊細(xì)木工板拼接而成,離地面高度8 cm,板上邊界線由約2 cm寬的黑膠帶構(gòu)成:虛線由2 cm寬、長度為10 cm、間隔為10 cm的黑膠帶構(gòu)成)實(shí)現(xiàn)如下功能:甲車車頭緊靠起點(diǎn)標(biāo)志線,乙車車尾緊靠邊界,甲、乙兩輛小車同時(shí)起動(dòng),先后通過起點(diǎn)標(biāo)志線,在行車道同向而行,在超車區(qū)超車,并實(shí)現(xiàn)兩車交替超車領(lǐng)跑功能。
2 系統(tǒng)結(jié)構(gòu)
系統(tǒng)組成結(jié)構(gòu)如圖2所示。小車主要由控制中心(MSP430F149單片機(jī))、避撞檢測(cè)模塊、轉(zhuǎn)彎線檢測(cè)模塊(兼作彎道糾偏)、直道糾偏檢測(cè)模塊、電機(jī)驅(qū)動(dòng)模塊、簡(jiǎn)易按鍵、nRF905通信接口、電源等組成。
2.1 避撞檢測(cè)模塊
為保證兩車不相撞,需要使兩車之間距離保持在一個(gè)合適的范圍,即避撞。系統(tǒng)使用HY-SRF05超聲測(cè)距傳感器,將其安裝在小車車頭,可實(shí)時(shí)測(cè)得兩車縱向距離,從而控制兩車加速減速來使距離保持適中。HY-SRF05有優(yōu)秀的性能,感應(yīng)角度:不大于15度;探測(cè)距離:2~450 cm;精度可達(dá)0.2 cm。設(shè)l為測(cè)量距離,t為往返時(shí)間差,超聲波的傳播速度為c,則有t=2l/c,而聲波在空氣中傳輸速率為(m/s)。式中T為環(huán)境溫度;Co為絕對(duì)溫度時(shí)的速度,是常數(shù)。從上述兩式可以推出。
2.2 轉(zhuǎn)彎線檢測(cè)模塊
采用紅外反射收發(fā)對(duì)管來檢測(cè)黑色標(biāo)志線,放置在小車車頭,用于檢測(cè)圖1中的轉(zhuǎn)彎標(biāo)志線和超車標(biāo)志線,紅外發(fā)射管發(fā)出的紅外線照射到平板上,若紅外接收管不能接收到反射回的光線則表示光線全被吸收,則檢測(cè)出黑色標(biāo)志線,從而輸出高電壓,若能接收到反射回的光線則表示檢測(cè)到非黑色標(biāo)志線,輸出低電壓。
2.3 直道糾偏檢測(cè)模塊
行車道40 cm,邊界由2 cm黑膠帶圍成,如果不加防護(hù)措施小車容易滑落。正常如果不加防護(hù)措施,小車容易脫離跑道。由小車側(cè)面兩個(gè)E18-D80NK紅外傳感器進(jìn)行直道中的糾偏,將兩個(gè)紅外避障傳感器分別向外傾斜一定角度,安裝在小車兩側(cè),如圖4所示,調(diào)節(jié)紅外避障傳感器的感應(yīng)距離,使避障距離介于傳感器到跑道與傳感器到地面之間,當(dāng)傳感器探測(cè)到跑道時(shí),輸出低電平,表示小車在跑道上,當(dāng)探測(cè)到地面時(shí),輸出高電平,說明小車即將脫離跑道,這時(shí)及時(shí)糾偏,確保小車正常行駛。
2.4 通信接口
超車時(shí),為了確定兩車的位置、及時(shí)調(diào)節(jié)兩車的速度、減少超車時(shí)間,需要使用nRF905在兩車間進(jìn)行無線通信。nRF905是挪威Nordic VLSI公司推出的單片射頻收發(fā)器,使用SPI接口與微控制器通信。
2.5 電機(jī)驅(qū)動(dòng)模塊
采用L298N驅(qū)動(dòng)直流電機(jī),利用它內(nèi)部的橋式電路來驅(qū)動(dòng)電機(jī),這種方法的優(yōu)點(diǎn)是利用PWM波來控制電機(jī)速度,其余端口可以控制電機(jī)的正反轉(zhuǎn)。
3 軟件設(shè)計(jì)
小車行駛模式分為:自主模式、跟隨模式。自主模式即前面的車依照事先設(shè)定的速度行駛,并自動(dòng)糾偏。跟隨模式即后車緊跟在前車后面,保持一定距離,并自動(dòng)糾偏。自主模式和跟隨模式能自動(dòng)切換。
3.1 直道糾偏算法
小車行駛過程中,直道糾偏采用兩次糾偏的方式。如果僅采用一次糾偏,如圖5左所示,雖然可以把小車的前進(jìn)方向糾正,但小車整體處在跑道邊緣,偏離跑道中心,在下次出現(xiàn)偏離時(shí)很容易出現(xiàn)來不及糾正而小車已經(jīng)掉落跑道的情況。根據(jù)否定之否定規(guī)律,采用兩次糾偏,在糾正行車方向同時(shí),調(diào)整小車位置趨向跑道中心。該算法如下:
直道糾偏的同時(shí)開啟TimerA計(jì)時(shí);小車離開跑道邊緣時(shí)關(guān)閉TimerA,保存計(jì)時(shí)值:nTurnHold。
繼續(xù)轉(zhuǎn)彎,時(shí)長為2*nTurnHold(繼續(xù)保持2*nTurnHold轉(zhuǎn)彎是為了將小車調(diào)整向跑道中間);反向轉(zhuǎn)彎,時(shí)長為nTurnHold(反向轉(zhuǎn)彎是為了糾正小車方向);恢復(fù)原來的行駛模式。具體流程圖如圖6所示,先判斷接近的是左或右邊線,做好左右轉(zhuǎn)標(biāo)記,然后以直道兩次糾偏算法進(jìn)行計(jì)算,最后根據(jù)左右轉(zhuǎn)標(biāo)記進(jìn)行反方向糾偏。
3.2 彎道糾偏算法
采用小車兩邊轉(zhuǎn)速不同、輔以延時(shí)的方法來實(shí)現(xiàn)轉(zhuǎn)彎,因此延時(shí)時(shí)間是關(guān)鍵。然而,通常在過轉(zhuǎn)彎標(biāo)志線時(shí),車身與線不垂直且角度也不固定,如圖7所示。這將造成無法確定一個(gè)固定的延時(shí)值。為此,采用彎道糾偏的方法,確保小車過彎后姿態(tài)可控,該方法流程圖如圖8所示。其中,每輛車配有兩塊對(duì)稱分布于車頭兩邊的轉(zhuǎn)彎線檢測(cè)模塊,當(dāng)其中有一塊檢測(cè)到轉(zhuǎn)彎線時(shí),先判斷是左還是右,如果是左邊先檢測(cè)到線則符號(hào)為“+”,否則為“-”,然后立刻打開MSP430的計(jì)時(shí)器TimerA,計(jì)算兩塊傳感器檢測(cè)到轉(zhuǎn)彎線的時(shí)間差。根據(jù)符號(hào)是“+”或“-”,將上面得到的時(shí)間差以一定比例加/減到固定延時(shí)時(shí)間上,這個(gè)比例無準(zhǔn)確計(jì)算方法,實(shí)際數(shù)值主要根據(jù)跑道的摩擦力,小車速度等客觀條件確定,進(jìn)而得到最終的時(shí)間參數(shù)(即轉(zhuǎn)彎時(shí)長nVeerTime),轉(zhuǎn)彎函數(shù)調(diào)用此參數(shù)。這樣一種“負(fù)反饋式修正”的方法,能使小車在轉(zhuǎn)彎后基本平行于跑道,且去向跑道中間。
轉(zhuǎn)彎時(shí)長:nVeerTime;左、右傳感器探測(cè)到轉(zhuǎn)彎時(shí)間差:nDiffValue;轉(zhuǎn)彎固定延時(shí)值:nStaticTime;比例系數(shù):fRatio。
nVeerTime=nStaticTime+nDiffValue*fRatio
超車時(shí)需要多次轉(zhuǎn)彎,因而超車標(biāo)志區(qū)設(shè)置多條黑線,可以多次調(diào)整,將保證小車進(jìn)入超車區(qū)后的姿態(tài)最理想。
3.3 超車糾偏算法
到達(dá)圖1中超車區(qū)后,先經(jīng)超車標(biāo)志區(qū)多條線采用類似彎道糾偏方法調(diào)整好小車姿態(tài)。然后,根據(jù)超聲測(cè)距的結(jié)果判斷本車是前車還是后車。若是后車,轉(zhuǎn)彎進(jìn)入超車道,加速超車后返回行車道,發(fā)送無線信號(hào)告知另一車超車已完成,最終恢復(fù)自主模式行駛。若是前車,則減速慢行,等待后車的超車結(jié)束信號(hào),最終恢復(fù)跟隨模式行駛。超車時(shí)后車進(jìn)入超車區(qū)行駛,前車則在原跑道行駛,只要保證兩車速度差足夠大,就可以保證后車順利超過前車。
具體流程圖如圖9所示,其中關(guān)鍵是兩車配合的時(shí)間問題,通過無線模塊可以使兩車進(jìn)行同步。小車在直道、轉(zhuǎn)彎、超車過程中,自動(dòng)糾偏將一直運(yùn)行,并實(shí)現(xiàn)自主模式和跟隨模式自動(dòng)切換。
3.4 避撞算法
在直線行駛中,為了防止后車撞上前車,需要使用避撞檢測(cè)模塊來保持車距。本文采用HY-SRF05超聲測(cè)距傳感器測(cè)量兩車間距離,并預(yù)設(shè)安全值25 cm。車距大于安全值時(shí),后車可加速行駛;車距小于安全值時(shí),則減速。如此,可使得后車跟隨前車,實(shí)現(xiàn)跟隨行駛,但在轉(zhuǎn)彎及超車時(shí),全部自主行駛,不再跟隨前車,當(dāng)轉(zhuǎn)彎,超車等特例操作結(jié)束后,再恢復(fù)自主行駛/跟隨行駛。避撞算法流程圖如圖10所示。
4 結(jié)束語
文中針對(duì)具有引導(dǎo)線環(huán)境下的路徑跟蹤這一熱點(diǎn)問題,采用多傳感器,通過單片機(jī)控制,實(shí)現(xiàn)智能小車的路徑跟蹤和自動(dòng)糾偏的功能,在此基礎(chǔ)上還實(shí)現(xiàn)了車輛的超車功能。在實(shí)際測(cè)試中,運(yùn)行一圈大約需要14.85±1.52 s,小車運(yùn)行穩(wěn)定,在測(cè)試的25圈中未出現(xiàn)掉落的情況。表明效果較好,并易于實(shí)現(xiàn)。