新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于MSP430的智能小車自動糾偏與避撞的實現(xiàn)

基于MSP430的智能小車自動糾偏與避撞的實現(xiàn)

作者: 時間:2012-07-06 來源:網(wǎng)絡(luò) 收藏

輛是一種機(jī)器人,它可以按照預(yù)先設(shè)定的模式在一個環(huán)境里自動行駛,也可以根據(jù)現(xiàn)場情況自主執(zhí)行特定操作。其設(shè)計內(nèi)容涉及自動控制、計算機(jī)技術(shù)、傳感與檢測技術(shù)等多個學(xué)科。智能小車在自動控制領(lǐng)域具有廣闊的應(yīng)用前景。其中,如何保證車輛直線行駛,而不是“之”字形行駛、轉(zhuǎn)彎過程如何保證平行行駛,和超車是其中3個需要解決的基本問題。文中根據(jù)3個問題分別提出了解決方法,實際實驗效果良好。

1 現(xiàn)實應(yīng)用模擬原理

本文模擬現(xiàn)實應(yīng)用,借助圖1所示跑道(2塊細(xì)木工板拼接而成,離地面高度8 cm,板上邊界線由約2 cm寬的黑膠帶構(gòu)成:虛線由2 cm寬、長度為10 cm、間隔為10 cm的黑膠帶構(gòu)成)實現(xiàn)如下功能:甲車車頭緊靠起點標(biāo)志線,乙車車尾緊靠邊界,甲、乙兩輛小車同時起動,先后通過起點標(biāo)志線,在行車道同向而行,在超車區(qū)超車,并實現(xiàn)兩車交替超車領(lǐng)跑功能。


2 系統(tǒng)結(jié)構(gòu)

系統(tǒng)組成結(jié)構(gòu)如圖2所示。小車主要由控制中心(F149單片機(jī))、避撞檢測模塊、轉(zhuǎn)彎線檢測模塊(兼作彎道糾偏)、直道糾偏檢測模塊、電機(jī)驅(qū)動模塊、簡易按鍵、nRF905通信接口、電源等組成。



2.1 避撞檢測模塊

為保證兩車不相撞,需要使兩車之間距離保持在一個合適的范圍,即避撞。系統(tǒng)使用HY-SRF05超聲測距傳感器,將其安裝在小車車頭,可實時測得兩車縱向距離,從而控制兩車加速減速來使距離保持適中。HY-SRF05有優(yōu)秀的性能,感應(yīng)角度:不大于15度;探測距離:2~450 cm;精度可達(dá)0.2 cm。設(shè)l為測量距離,t為往返時間差,超聲波的傳播速度為c,則有t=2l/c,而聲波在空氣中傳輸速率為(m/s)。式中T為環(huán)境溫度;Co為絕對溫度時的速度,是常數(shù)。從上述兩式可以推出。



2.2 轉(zhuǎn)彎線檢測模塊

采用紅外反射收發(fā)對管來檢測黑色標(biāo)志線,放置在小車車頭,用于檢測圖1中的轉(zhuǎn)彎標(biāo)志線和超車標(biāo)志線,紅外發(fā)射管發(fā)出的紅外線照射到平板上,若紅外接收管不能接收到反射回的光線則表示光線全被吸收,則檢測出黑色標(biāo)志線,從而輸出高電壓,若能接收到反射回的光線則表示檢測到非黑色標(biāo)志線,輸出低電壓。

2.3 直道糾偏檢測模塊

行車道40 cm,邊界由2 cm黑膠帶圍成,如果不加防護(hù)措施小車容易滑落。正常如果不加防護(hù)措施,小車容易脫離跑道。由小車側(cè)面兩個E18-D80NK紅外傳感器進(jìn)行直道中的糾偏,將兩個紅外避障傳感器分別向外傾斜一定角度,安裝在小車兩側(cè),如圖4所示,調(diào)節(jié)紅外避障傳感器的感應(yīng)距離,使避障距離介于傳感器到跑道與傳感器到地面之間,當(dāng)傳感器探測到跑道時,輸出低電平,表示小車在跑道上,當(dāng)探測到地面時,輸出高電平,說明小車即將脫離跑道,這時及時糾偏,確保小車正常行駛。



2.4 通信接口

超車時,為了確定兩車的位置、及時調(diào)節(jié)兩車的速度、減少超車時間,需要使用nRF905在兩車間進(jìn)行無線通信。nRF905是挪威Nordic VLSI公司推出的單片射頻收發(fā)器,使用SPI接口與微控制器通信。

2.5 電機(jī)驅(qū)動模塊

采用L298N驅(qū)動直流電機(jī),利用它內(nèi)部的橋式電路來驅(qū)動電機(jī),這種方法的優(yōu)點是利用PWM波來控制電機(jī)速度,其余端口可以控制電機(jī)的正反轉(zhuǎn)。

3 軟件設(shè)計

小車行駛模式分為:自主模式、跟隨模式。自主模式即前面的車依照事先設(shè)定的速度行駛,并自動糾偏。跟隨模式即后車緊跟在前車后面,保持一定距離,并自動糾偏。自主模式和跟隨模式能自動切換。

3.1 直道糾偏算法

小車行駛過程中,直道糾偏采用兩次糾偏的方式。如果僅采用一次糾偏,如圖5左所示,雖然可以把小車的前進(jìn)方向糾正,但小車整體處在跑道邊緣,偏離跑道中心,在下次出現(xiàn)偏離時很容易出現(xiàn)來不及糾正而小車已經(jīng)掉落跑道的情況。根據(jù)否定之否定規(guī)律,采用兩次糾偏,在糾正行車方向同時,調(diào)整小車位置趨向跑道中心。該算法如下:

直道糾偏的同時開啟TimerA計時;小車離開跑道邊緣時關(guān)閉TimerA,保存計時值:nTurnHold。

繼續(xù)轉(zhuǎn)彎,時長為2*nTurnHold(繼續(xù)保持2*nTurnHold轉(zhuǎn)彎是為了將小車調(diào)整向跑道中間);反向轉(zhuǎn)彎,時長為nTurnHold(反向轉(zhuǎn)彎是為了糾正小車方向);恢復(fù)原來的行駛模式。具體流程圖如圖6所示,先判斷接近的是左或右邊線,做好左右轉(zhuǎn)標(biāo)記,然后以直道兩次糾偏算法進(jìn)行計算,最后根據(jù)左右轉(zhuǎn)標(biāo)記進(jìn)行反方向糾偏。


3.2 彎道糾偏算法

采用小車兩邊轉(zhuǎn)速不同、輔以延時的方法來實現(xiàn)轉(zhuǎn)彎,因此延時時間是關(guān)鍵。然而,通常在過轉(zhuǎn)彎標(biāo)志線時,車身與線不垂直且角度也不固定,如圖7所示。這將造成無法確定一個固定的延時值。為此,采用彎道糾偏的方法,確保小車過彎后姿態(tài)可控,該方法流程圖如圖8所示。其中,每輛車配有兩塊對稱分布于車頭兩邊的轉(zhuǎn)彎線檢測模塊,當(dāng)其中有一塊檢測到轉(zhuǎn)彎線時,先判斷是左還是右,如果是左邊先檢測到線則符號為“+”,否則為“-”,然后立刻打開的計時器TimerA,計算兩塊傳感器檢測到轉(zhuǎn)彎線的時間差。根據(jù)符號是“+”或“-”,將上面得到的時間差以一定比例加/減到固定延時時間上,這個比例無準(zhǔn)確計算方法,實際數(shù)值主要根據(jù)跑道的摩擦力,小車速度等客觀條件確定,進(jìn)而得到最終的時間參數(shù)(即轉(zhuǎn)彎時長nVeerTime),轉(zhuǎn)彎函數(shù)調(diào)用此參數(shù)。這樣一種“負(fù)反饋式修正”的方法,能使小車在轉(zhuǎn)彎后基本平行于跑道,且去向跑道中間。


上一頁 1 2 下一頁

關(guān)鍵詞: 智能車 MSP430 主動避撞

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉