攝像頭智能循跡小車設(shè)計(jì)與實(shí)現(xiàn)
摘要:智能循跡小車可以根據(jù)前端攝像頭的輸入圖像識別出道路狀況,通過優(yōu)化智能車的軟硬件設(shè)計(jì),能夠確保其在不同環(huán)境下行駛的快速性和準(zhǔn)確性,本文以Kinetis60為核心處理器,完成了智能車路徑檢測、速度檢測、數(shù)據(jù)傳輸模塊、電機(jī)舵機(jī)驅(qū)動(dòng)模塊的設(shè)計(jì)與實(shí)現(xiàn),并在此基礎(chǔ)上提出了一種利用攝像頭實(shí)時(shí)圖像進(jìn)行智能車循跡判斷的方法,能夠提取出精確的路徑特征信息,實(shí)踐證明該方法具有可行性。
隨著智能交通系統(tǒng)的廣泛應(yīng)用,智能車的系統(tǒng)控制也逐步成為一項(xiàng)新興技術(shù),該領(lǐng)域涵蓋了控制、模式識別、傳感技術(shù)、電子、電氣、計(jì)算機(jī)、機(jī)械等多個(gè)學(xué)科。本方案采用攝像頭作為信號采集的傳感器,根據(jù)攝像頭采集的圖像進(jìn)行精密計(jì)算,確定速度參考和舵機(jī)轉(zhuǎn)向參考。攝像頭組的智能車對于道路信息預(yù)測能力強(qiáng),而且攝像頭對道路的探測精細(xì),視角范圍大,因此受到眾多智能車設(shè)計(jì)者的歡迎。但攝像頭圖像受周圍光線的影響大;算法運(yùn)算量大,算法復(fù)雜,需要占用較多的NCU資源,因此其中圖像識別算法的設(shè)計(jì)成為系統(tǒng)設(shè)計(jì)的關(guān)鍵步驟。
1 系統(tǒng)設(shè)計(jì)
智能車系統(tǒng)由核心處理器KINETIS60、路徑檢測模塊、起跑線檢測模塊、車速檢測模塊、電源模塊,無線數(shù)據(jù)傳輸模塊、電機(jī)驅(qū)動(dòng)模塊、舵機(jī)驅(qū)動(dòng)模塊組成。其中攝像頭組的路徑檢測模塊由OV7620攝像頭實(shí)現(xiàn)。
車速檢測模塊由編碼器構(gòu)成,實(shí)現(xiàn)速度的實(shí)時(shí)采集。電機(jī)驅(qū)動(dòng)模塊由八片IRF3205構(gòu)成H橋來實(shí)現(xiàn)。電源模塊由三塊LM2940組成。舵機(jī)使用S-D5連接至PWM引腳,起跑線檢測模塊由兩個(gè)TCRT5000以及一個(gè)LM339組成。無線數(shù)據(jù)傳輸通過NRF24L01進(jìn)行數(shù)據(jù)傳輸。
智能車由路徑傳感器采集得到前方道路的圖像,從中提取出有用信息,判斷所處的跑道類型(直道,大彎道,S彎道),確定小車的舵機(jī)轉(zhuǎn)向及車速。從而通過電機(jī)和舵機(jī)驅(qū)動(dòng)小車流暢地在跑道上行進(jìn)。系統(tǒng)框圖如圖1所示。
2 軟件算法總體設(shè)計(jì)
本方案中,以IAR為開發(fā)工具,系統(tǒng)軟件設(shè)計(jì)包括以下幾個(gè)方面:系統(tǒng)初始化、視頻圖像信號采集、小車的方向(舵機(jī))控制和速度(電機(jī))控制。系統(tǒng)軟件流程罔如圖2所示。
3 圖像采集
OV7620是CMOS彩色/黑白圖像傳感器。它支持連續(xù)和隔行兩種掃描方式,VGA與QVGA兩種圖像格式;最高像素為664×492;數(shù)據(jù)格式包括YUV、YCrCb、RGB3種,能夠滿足一般圖像采集系統(tǒng)的要求。
由于芯片處理能力不足以達(dá)到PC的運(yùn)算能力,因此本方案采用了黑白攝像頭,由于受片內(nèi)總線頻率的限制,每行能夠采集到的點(diǎn)數(shù)有限而且圖像質(zhì)量很差,并且會(huì)占用CPU大部分的時(shí)間,所以我們采用了K60自帶的DMA進(jìn)行數(shù)據(jù)采集,實(shí)踐證明,DMA能夠采集到絕大多數(shù)的點(diǎn),并且圖像質(zhì)量很好。
為了更好的檢測黑線中心位置,要保證單行上有足夠的點(diǎn),為了提高處理速度,可適當(dāng)降低采樣行數(shù),綜合了以上條件,最終決定采用100行信息進(jìn)行方向判斷,每幅圖像大小限定為180×100。
4 圖像識別
攝像頭智能車系統(tǒng)是否能辨識正確的方向的關(guān)鍵就是其中的圖像識別算法的設(shè)計(jì),在本算法中根據(jù)采集來的圖像,首先進(jìn)行圖像二值化,然后再對二值化后的圖像進(jìn)行去噪處理,得到只含有賽道黑線的圖像,再對圖像進(jìn)行圖像識別,根據(jù)設(shè)定的閾值進(jìn)行方向識別,得到的結(jié)果送至舵機(jī)控制模塊進(jìn)行舵機(jī)的方向控制?;?strong>圖像識別算法的路徑識別流程圖如圖3所示。
4.1 黑線提取
二值化是一種廣泛使用的圖像分割技術(shù),它利用了圖像中要提取的目標(biāo)物與其背景在灰度特性上的差異,把原圖像變?yōu)閮H用兩個(gè)灰度值表示的圖像目標(biāo)物和背景的二值圖像,考慮到所采集的圖像目標(biāo)物(黑色中心線)與背景(白色跑道)的灰度值差異比較明顯,采用固定閾值法進(jìn)行圖像的二值化。二值化的實(shí)現(xiàn)是由下面的公式來實(shí)現(xiàn):
式中g(shù)(x,y)為二值化結(jié)果;T為閾值,f(x,y)為原圖像的灰度值。
本方案采用固定的閾值進(jìn)行圖像二值化,因?yàn)閱纹瑱C(jī)沒有足夠的時(shí)間進(jìn)行動(dòng)態(tài)閾值計(jì)算。因此要確定一個(gè)合理的算法來確定一個(gè)固定閾值,小車在不同光照條件下的圖像閾值不同,因此小車每一次啟動(dòng)時(shí)計(jì)算一次固定閾值,如圖4所示。
4.2 舵機(jī)及電機(jī)控制算法
提取出圖像的中心線以后,需要根據(jù)中心線的位置,來判斷賽道的類型,區(qū)分直道、S型彎道和左轉(zhuǎn)彎和右轉(zhuǎn)彎。利用攝像頭識別道路在識別性能方面具有優(yōu)勢,相對于光電和電磁傳感器,可以有較遠(yuǎn)的前瞻距離,賽道信息不是根據(jù)單行數(shù)據(jù)來判斷,而是根據(jù)每幅圖像的多行信息來判斷。根據(jù)前述,每幅圖像采用80行的信息進(jìn)行判斷。
根據(jù)二值化圖像的結(jié)果,以圖像重心為界,分別計(jì)算邊界左右側(cè)白點(diǎn)數(shù)目和(式2、式31,然后對左右側(cè)白點(diǎn)數(shù)和leftSum,rightSum做差,然后對差值除以行數(shù),得到賽道偏移量(式4),根據(jù)偏移量centerAVG大小,centerAVG的大小基本上可以判斷當(dāng)前賽道情況,根據(jù)賽道情況,對centerAVG乘以不同的系數(shù)k(式5),得到舵機(jī)值(式6),然后進(jìn)行方向控制。
5 結(jié)論
文中提出一種基于攝像頭的智能循跡車的設(shè)計(jì)及實(shí)現(xiàn)方法,處理簡單,占用MCU資源少,執(zhí)行效率高。文中提到的算法在具有本文特征的其他賽道上也可以使用。通過多次實(shí)踐,算法正確識別率達(dá)93%以上,在實(shí)際的大學(xué)智能車競賽中被多次采用,并取得優(yōu)異成績。但攝像頭的高度和角度還需要進(jìn)一步的試驗(yàn)、調(diào)整以得到更好的圖像采集效果,算法仍需進(jìn)一步優(yōu)化,以提高系統(tǒng)的穩(wěn)定性。