楊 梅 張施展
(貴陽(yáng)學(xué)院電子與通信工程學(xué)院,貴州 貴陽(yáng) 550005)
隨著汽車工業(yè)的進(jìn)一步發(fā)展,智能小車的相關(guān)研究也備受關(guān)注。近年來(lái)以智能小車為主題的競(jìng)賽也為推動(dòng)無(wú)人汽車的發(fā)展起著重要作用。本文以第十四屆“恩智浦杯”全國(guó)大學(xué)生智能車競(jìng)賽為背景,設(shè)計(jì)并實(shí)現(xiàn)了基于單片機(jī)控制的信標(biāo)智能小車設(shè)計(jì),解決傳統(tǒng)智能小車在尋跡追蹤方面對(duì)復(fù)雜賽道及環(huán)境處理能力不夠的問(wèn)題,優(yōu)化紅外信標(biāo)燈進(jìn)行識(shí)別處理能力,實(shí)現(xiàn)小車更高效的尋跡追蹤功能。
信標(biāo)智能小車主要是由H 車的車模、小鉆風(fēng)硬件二值化OV7725 紅外攝像頭、四個(gè)RS-380的電機(jī)和顯示屏等部件組成,根據(jù)小車四輪的轉(zhuǎn)速,再通過(guò)編碼器正交解碼后得到的速度反饋信息,通過(guò)PWM波以及PID 實(shí)現(xiàn)電機(jī)速度的控制,便可實(shí)現(xiàn)小車的全向運(yùn)動(dòng)。這在尋跡的過(guò)程中能達(dá)到縮短尋跡路徑的優(yōu)勢(shì)。如圖1 所示為系統(tǒng)框架設(shè)計(jì)。
圖1 智能小車系統(tǒng)框架圖
智能小車的攝像頭是采用的是硬件二值化OV7725 紅外攝像頭。該攝像頭的最大有效像素點(diǎn)是320*240,硬件方面的主要特點(diǎn)是圖像數(shù)據(jù)已經(jīng)經(jīng)過(guò)二值化,控制端可直接使用單片機(jī)采集攝像頭模組輸出0、1的黑白圖像,在處理圖像時(shí)會(huì)更加方便。
硬件設(shè)計(jì)中需要為信標(biāo)智能小車提供7.2V 電源電壓,該7.2V 電源由鋰電池提供。此外,硬件系統(tǒng)還需3.3V 和5V的供電電壓。3.3V 主要用于給單片機(jī)K66 芯片,OLED 顯示屏供電,使用TPS7333 線性穩(wěn)壓芯片產(chǎn)生。5V 電壓主要用于攝像頭模塊,編碼器模塊供電,并且為TPS7333 提供電壓,使用的是TPS7350 芯片產(chǎn)生,電路圖如圖2 所示。
圖2 5V 電源電路圖
在驅(qū)動(dòng)電路設(shè)計(jì)前端,設(shè)計(jì)使用了74HC08 芯片,如圖3 所示,其主要功能將TPS7350 轉(zhuǎn)換來(lái)的5V 和單片機(jī)輸出的PWM信號(hào)做與運(yùn)算,以此保證PWM信號(hào)的平穩(wěn)性。
圖3 74HC08 平穩(wěn)PWM 信號(hào)圖
信標(biāo)智能小車采用硬件二值化OV7725 紅外攝像頭,該攝像頭對(duì)紅外光線十分的敏感,必須要在封閉而且無(wú)陽(yáng)光的前提下進(jìn)行過(guò)調(diào)試跑車。對(duì)于攝像頭的放置方法也有講究,夾角太大可能無(wú)法看到近處的燈,夾角太小可能無(wú)法看到遠(yuǎn)處的燈,因此本系統(tǒng)是將攝像頭與碳素竿的夾角設(shè)定為60 度,如圖4 所示。
圖4 攝像頭安裝示意圖
對(duì)于攝像頭的補(bǔ)光環(huán)境,本系統(tǒng)采用LQ-R&IRLEDV4的信標(biāo)燈給信標(biāo)智能小車進(jìn)行補(bǔ)光。該信標(biāo)燈的發(fā)射頻率是10Hz,閃爍頻率是40kHz,在該頻率下,可以保證小車在賽道上能看到紅外光。
硬件二值化的紅外攝像頭的圖像采集是通過(guò)DMA 和場(chǎng)中斷進(jìn)行采集圖像。DMA 是直接存儲(chǔ)器訪問(wèn),該功能在圖像采集中把一個(gè)數(shù)據(jù)地址傳輸?shù)狡渌牡刂?,通過(guò)這個(gè)原理,最后采集到的數(shù)據(jù)分辨率是80*60(畫面長(zhǎng)*寬)的平面。經(jīng)過(guò)二值化的攝像頭采集的圖像里有一個(gè)黑塊,該黑塊代表紅外發(fā)射器發(fā)射出來(lái)的光經(jīng)過(guò)了二值化的圖像。黑塊的數(shù)據(jù)在數(shù)組中顯示數(shù)字0,白色區(qū)域顯示數(shù)字1。攝像頭采集到紅外光之后,把看到的圖像數(shù)據(jù)輸入到MCU的flash 中。
實(shí)驗(yàn)進(jìn)行圖像優(yōu)化時(shí),首先利用嵌套for 循環(huán)找到每行或者每列的黑點(diǎn)個(gè)數(shù),再使用冒泡法比較出每行每列黑點(diǎn)個(gè)數(shù)最大值。黑點(diǎn)個(gè)數(shù)最多的行列形成的交點(diǎn)即可近似看成信標(biāo)燈的位置。具體流程圖如圖5 所示。
圖5 軟件設(shè)計(jì)程序流程圖
首先先設(shè)定一個(gè)燈亮的參數(shù)。如果攝像頭識(shí)別到了紅外光,并且利用算法把識(shí)別到的紅外光優(yōu)化成一個(gè)點(diǎn),此時(shí)算法中設(shè)置燈亮參數(shù)為1,反之,設(shè)置為0。
采集的圖像經(jīng)過(guò)算法處理后,在方向環(huán)進(jìn)行誤差的處理時(shí),error=Dy_Center-center_line[rowline],即誤差error 等于中心線Dy_Center 值減去黑點(diǎn)的列數(shù)center_line [rowline],由計(jì)算出的error 值判定當(dāng)前方向誤差。根據(jù)方向誤差值,經(jīng)過(guò)PID 算法設(shè)定MCU 輸出PWM 信號(hào)的占空比,從而可以控制小車電機(jī)轉(zhuǎn)速,實(shí)現(xiàn)小車差速轉(zhuǎn)彎的結(jié)果,具體流程圖如圖6 所示。
圖6 小車尋跡設(shè)計(jì)流程圖
在調(diào)試的過(guò)程中若遇攝像頭采集到干擾光線,相應(yīng)的誤差會(huì)變得很大,在此需要對(duì)誤差進(jìn)行限幅處理,處理過(guò)程如下代碼所示。
限幅在一定程度上可以保護(hù)電路,防止元器件燒壞。
本文通過(guò)飛思卡爾智能車競(jìng)賽規(guī)則中小車對(duì)于圖像識(shí)別和定向移動(dòng)而展開的話題,基于K66 單片機(jī)控制攝像頭對(duì)紅外信標(biāo)燈進(jìn)行優(yōu)化識(shí)別處理,通過(guò)二值化和算法對(duì)目標(biāo)物進(jìn)行識(shí)別和追蹤。經(jīng)過(guò)大量的賽道實(shí)驗(yàn)與檢測(cè),證實(shí)了本文方案的可靠性。