基于MSP430的智能小車自動(dòng)糾偏與避撞的實(shí)現(xiàn)
智能車輛是一種機(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寬、長(zhǎng)度為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í)長(zhǎng)為2*nTurnHold(繼續(xù)保持2*nTurnHold轉(zhuǎn)彎是為了將小車調(diào)整向跑道中間);反向轉(zhuǎn)彎,時(shí)長(zhǎng)為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í)長(zhǎng)nVeerTime),轉(zhuǎn)彎函數(shù)調(diào)用此參數(shù)。這樣一種“負(fù)反饋式修正”的方法,能使小車在轉(zhuǎn)彎后基本平行于跑道,且去向跑道中間。
評(píng)論