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