智能小車自動糾偏與避撞的實現(xiàn)
直道糾偏的同時開啟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ù)左右轉(zhuǎn)標(biāo)記進行反方向糾偏。本文引用地址:http://butianyuan.cn/article/160343.htm
3.2 彎道糾偏算法
采用小車兩邊轉(zhuǎn)速不同、輔以延時的方法來實現(xiàn)轉(zhuǎn)彎,因此延時時間是關(guān)鍵。然而,通常在過轉(zhuǎn)彎標(biāo)志線時,車身與線不垂直且角度也不固定,如圖7所示。這將造成無法確定一個固定的延時值。為此,采用彎道糾偏的方法,確保小車過彎后姿態(tài)可控,該方法流程圖如圖8所示。其中,每輛車配有兩塊對稱分布于車頭兩邊的轉(zhuǎn)彎線檢測模塊,當(dāng)其中有一塊檢測到轉(zhuǎn)彎線時,先判斷是左還是右,如果是左邊先檢測到線則符號為“+”,否則為“-”,然后立刻打開MSP430的計時器TimerA,計算兩塊傳感器檢測到轉(zhuǎn)彎線的時間差。根據(jù)符號是“+”或“-”,將上面得到的時間差以一定比例加/減到固定延時時間上,這個比例無準(zhǔn)確計算方法,實際數(shù)值主要根據(jù)跑道的摩擦力,小車速度等客觀條件確定,進而得到最終的時間參數(shù)(即轉(zhuǎn)彎時長nVeerTime),轉(zhuǎn)彎函數(shù)調(diào)用此參數(shù)。這樣一種“負反饋式修正”的方法,能使小車在轉(zhuǎn)彎后基本平行于跑道,且去向跑道中間。
轉(zhuǎn)彎時長:nVeerTime;左、右傳感器探測到轉(zhuǎn)彎時間差:nDiffValue;轉(zhuǎn)彎固定延時值:nStaticTime;比例系數(shù):fRatio。
nVeerTime=nStaticTime+nDiffValue*fRatio
超車時需要多次轉(zhuǎn)彎,因而超車標(biāo)志區(qū)設(shè)置多條黑線,可以多次調(diào)整,將保證小車進入超車區(qū)后的姿態(tài)最理想。
評論