基于智能車非勻速行駛記憶算法的研究和實(shí)現(xiàn)
3.1、初圈的控制和記憶:
本文引用地址:http://2s4d.com/article/95472.htm智能車在行使第一圈時(shí)的主要目的就是記憶賽道信息特征,并進(jìn)行一定的處理。按常規(guī)方法小車需要?jiǎng)蛩傩旭?,以便在固定的時(shí)間間隔或固定的路程間隔記憶相關(guān)的道路信息。本文在算法上進(jìn)行了改進(jìn),第一圈行使時(shí)按照模糊控制算法計(jì)算相應(yīng)的速度和方向。在角度的控制上,由于前輪左右轉(zhuǎn)向力臂不同,導(dǎo)致左右轉(zhuǎn)角控制不一致,同時(shí)對(duì)于特定情況下PID有著響應(yīng)滯后的缺點(diǎn),減低了系統(tǒng)的響應(yīng)度和靈敏度,因此本文取消了傳統(tǒng)意義上的PID控制算法,而采用更為準(zhǔn)確的模糊控制和遺傳算法。根據(jù)光電傳感器的個(gè)數(shù)來確定其量化的等級(jí),再根據(jù)所要求的精度進(jìn)行細(xì)化。在不同賽道由于摩擦系數(shù)不同,轉(zhuǎn)角需要微調(diào),在調(diào)試確定轉(zhuǎn)角時(shí),除了根據(jù)當(dāng)前引導(dǎo)線的偏移外還需要根據(jù)當(dāng)前車的運(yùn)動(dòng)趨勢(shì)來綜合考慮,從而得到轉(zhuǎn)角的經(jīng)驗(yàn)值。當(dāng)小車實(shí)際運(yùn)行時(shí),按照測(cè)試得到的傳感器偏移量,再通過查表就可獲得對(duì)應(yīng)的角度偏移值。小車的速度也是按照傳感器偏移情況和當(dāng)前小車的速度計(jì)算而得。
數(shù)據(jù)記憶時(shí),采用了12個(gè)磁鋼的霍爾傳感器,車輪轉(zhuǎn)一圈得到12個(gè)計(jì)數(shù),即使在速度很快的情況下響應(yīng)時(shí)間也是us級(jí)的,精度足夠滿足要求。
在非勻速的條件下,本文采用了新的數(shù)據(jù)存儲(chǔ)格式。首先對(duì)當(dāng)前的狀態(tài)進(jìn)行彎直的判斷,根據(jù)迷糊控制得到的舵機(jī)的轉(zhuǎn)角值c_ang,判斷得到當(dāng)前車的彎直情況。同時(shí)由于車是非勻速行駛的,而第二圈所行駛的時(shí)間間隔和路程間隔也并不一定和第一圈完全相同,因此本文只判斷彎直情況,在彎道時(shí),記憶每一個(gè)測(cè)試點(diǎn)的轉(zhuǎn)角值,而直道時(shí),既沒必要存儲(chǔ)轉(zhuǎn)角,又可節(jié)省大量存儲(chǔ)空間,因此對(duì)于直道時(shí)只記憶直道的起點(diǎn)和終點(diǎn)路程,而該路程是小車相對(duì)于起始點(diǎn)的絕對(duì)路程,也即霍爾傳感器檢測(cè)到的磁鋼的個(gè)數(shù)ect_cnt。其數(shù)據(jù)格式用如下表1所示語法來描述,其中0x7f是分隔符,因?yàn)檗D(zhuǎn)角值不可能出現(xiàn)0x7f的值。
表1 道路信息數(shù)據(jù)格式
系統(tǒng)按照前一狀態(tài)和當(dāng)前狀態(tài)的不同情況分別進(jìn)行數(shù)據(jù)存儲(chǔ),其算法如下:當(dāng)前一狀態(tài)是彎道,現(xiàn)狀態(tài)是直道時(shí),即彎直態(tài),則寫入0x7f,ect_cnt,其中ect_cnt是當(dāng)前的路徑計(jì)數(shù);當(dāng)直直態(tài)時(shí),不存儲(chǔ);當(dāng)直彎時(shí),寫入當(dāng)前的ect_cnt,0x7f,當(dāng)前的c_ang;當(dāng)彎彎時(shí),寫入c_ang。系統(tǒng)初始化時(shí)為彎道,則開始行駛后,進(jìn)入起跑線,此時(shí)檢測(cè)到是直道,進(jìn)入彎直狀態(tài),寫入0x47和當(dāng)前的ect_cnt,這就是道路的起始存儲(chǔ)數(shù)據(jù)。
3.2、數(shù)據(jù)的分析及處理:
第二圈行駛時(shí)對(duì)存儲(chǔ)數(shù)據(jù)進(jìn)行分析處理。首先,第二圈是采用不同彎直判斷條件,考慮到車在直道上可能發(fā)生的抖動(dòng)以及在過S彎時(shí)會(huì)將短暫平緩的彎道檢測(cè)為直道,第二圈彎直判斷的條件必須比第一圈嚴(yán)格。數(shù)據(jù)的處理過程,是放在直彎,和彎直的兩種狀態(tài)下執(zhí)行。
第二圈過起跑線時(shí),系統(tǒng)配置成進(jìn)入彎直狀態(tài),此時(shí)應(yīng)該根據(jù)第一圈記錄的數(shù)據(jù)算出直道的長(zhǎng)度,這樣車在直線上就可以以很高的速度行使,并且能夠提前減速,安全進(jìn)彎,達(dá)到很好的控制效果。根據(jù)不同的長(zhǎng)度的直道,應(yīng)該采用不同的路程來進(jìn)行提前減速,可以采用路程比例的方式,也可以采用分段細(xì)化的方式。當(dāng)分析數(shù)據(jù)發(fā)現(xiàn)c_ang個(gè)數(shù)小于某一值時(shí),認(rèn)為該角度是因?yàn)檐囋谥本€上非正常的晃動(dòng)所造成的,將其過濾。
評(píng)論