智能小車自動糾偏與避撞的實現
直道糾偏的同時開啟TimerA計時;小車離開跑道邊緣時關閉TimerA,保存計時值:nTurnHold。
繼續轉彎,時長為2*nTurnHold(繼續保持2*nTurnHold轉彎是為了將小車調整向跑道中間);反向轉彎,時長為nTurnHold(反向轉彎是為了糾正小車方向);恢復原來的行駛模式。具體流程圖如圖6所示,先判斷接近的是左或右邊線,做好左右轉標記,然后以直道兩次糾偏算法進行計算,最后根據左右轉標記進行反方向糾偏。本文引用地址:http://www.j9360.com/article/160343.htm
3.2 彎道糾偏算法
采用小車兩邊轉速不同、輔以延時的方法來實現轉彎,因此延時時間是關鍵。然而,通常在過轉彎標志線時,車身與線不垂直且角度也不固定,如圖7所示。這將造成無法確定一個固定的延時值。為此,采用彎道糾偏的方法,確保小車過彎后姿態可控,該方法流程圖如圖8所示。其中,每輛車配有兩塊對稱分布于車頭兩邊的轉彎線檢測模塊,當其中有一塊檢測到轉彎線時,先判斷是左還是右,如果是左邊先檢測到線則符號為“+”,否則為“-”,然后立刻打開MSP430的計時器TimerA,計算兩塊傳感器檢測到轉彎線的時間差。根據符號是“+”或“-”,將上面得到的時間差以一定比例加/減到固定延時時間上,這個比例無準確計算方法,實際數值主要根據跑道的摩擦力,小車速度等客觀條件確定,進而得到最終的時間參數(即轉彎時長nVeerTime),轉彎函數調用此參數。這樣一種“負反饋式修正”的方法,能使小車在轉彎后基本平行于跑道,且去向跑道中間。
轉彎時長:nVeerTime;左、右傳感器探測到轉彎時間差:nDiffValue;轉彎固定延時值:nStaticTime;比例系數:fRatio。
nVeerTime=nStaticTime+nDiffValue*fRatio
超車時需要多次轉彎,因而超車標志區設置多條黑線,可以多次調整,將保證小車進入超車區后的姿態最理想。
評論