基于面陣CCD的賽道參數(shù)檢測(cè)方法
前言
本文提出一種使用面陣CCD并且能夠有效利用S12單片機(jī)內(nèi)部硬件資源的路徑參數(shù)檢測(cè)方法。普通CCD圖像傳感器的工作電壓一般為12V,輸出NTSC或者PAL制式的模擬視頻信號(hào)。利用S12內(nèi)部的AD轉(zhuǎn)換器,配合從視頻信號(hào)中分離出的同步信號(hào),可直接將圖像信號(hào)采集到單片機(jī)內(nèi)部RAM中,然后通過軟件對(duì)圖像信息進(jìn)行處理,得到路徑各種參數(shù)。
技術(shù)難點(diǎn)與解決方法:
直接利用S12單片機(jī)中的AD采集視頻圖像,存在著采集速度、存儲(chǔ)數(shù)據(jù)空間、處理速度、工作電壓以及同步信號(hào)分離等方面的技術(shù)難點(diǎn)。下面就這些問題及其解決方法進(jìn)行討論。
采集速度
跑道都是由直線和圓弧組成,檢測(cè)車模前方一段路線參數(shù),只需要得到中心線上3~5個(gè)點(diǎn)的位置信息就可以估算出路徑參數(shù)(位置、方向、曲率等)。這些點(diǎn)的位置,通過圖像中若干行信息就可以檢測(cè)出來(如圖1所示)。因此,所需檢測(cè)圖像應(yīng)該是水平分辨率高、垂直分辨率低。
圖1 部分賽道形狀,賽道中心線檢測(cè)位置
將S12單片機(jī)采集的圖像分辨率特點(diǎn),與賽道檢測(cè)對(duì)圖像分辨率的要求進(jìn)行對(duì)比,可以發(fā)現(xiàn),在安裝CCD攝像頭的時(shí)候,只要將它旋轉(zhuǎn)90度,輸出的圖像信息也相應(yīng)旋轉(zhuǎn)90度(如圖2所示)。這樣一來,S12中的AD轉(zhuǎn)換器采集的圖像信息,水平分辨率與垂直分辨率就會(huì)互換,原來水平分辨率低、垂直分辨率高的圖像,就會(huì)變成水平分辨率高、垂直分辨率低的實(shí)際圖像,正好滿足道路參數(shù)檢測(cè)的要求。
圖2 賽道圖像以及旋轉(zhuǎn)90度后的賽道圖像
此外,我們還可以通過讓S12適當(dāng)超頻運(yùn)行、降低AD轉(zhuǎn)換器精度等方式,提高AD轉(zhuǎn)換器的速度。
圖像存儲(chǔ)空間:
由于將圖像水平旋轉(zhuǎn)了90度,需要將圖像數(shù)據(jù)進(jìn)行存儲(chǔ),在整幅圖像的基礎(chǔ)上計(jì)算出路徑水平信息。S12內(nèi)部有8K字節(jié)的RAM空間。如果存儲(chǔ)300*48分辨率圖像則不夠,但可以存儲(chǔ)若干幅75*24的低分辨率圖像數(shù)據(jù)。從低分辨率圖像所得到的路徑參數(shù),其精度仍可以滿足車??刂频男枰?。一般情況下,只需要兩塊圖像存儲(chǔ)空間即可,一塊作為采集圖像的存儲(chǔ)空間,另外一塊作為處理緩沖區(qū)。
圖像信息處理速度:
如果采用75*24分辨率的圖像,每隔4行采集一行圖像信息,圖像采集所占用的CPU時(shí)間不會(huì)超過1/4。因此,大部分的CPU工作時(shí)間可以用于圖像處理以及運(yùn)動(dòng)控制。
由于采集到的圖像由白色背景和黑色中心線組成,所以檢測(cè)每一行路徑中心線位置可以通過簡(jiǎn)單的閾值比較的方式計(jì)算出來。在此基礎(chǔ)上,還可以通過參數(shù)擬合獲取道路位置、方向以及曲率等參數(shù)。另外,通過適當(dāng)?shù)膭?dòng)態(tài)閾值的方法,可以提高算法的穩(wěn)定性。核心算法如果處理相對(duì)簡(jiǎn)單,可通過適當(dāng)?shù)膬?yōu)化方法,在圖像采集周期20毫秒內(nèi)計(jì)算出結(jié)果,達(dá)到實(shí)時(shí)圖像處理的要求。如果算法比較復(fù)雜,可以將核心算法采用匯編語(yǔ)言完成,以提高效率,配合CPU超頻運(yùn)行方法,保證算法需要時(shí)間小于20毫秒。
CCD器件工作電壓:
CCD器件工作電壓需要在12V左右。為此,需要在系統(tǒng)電路設(shè)計(jì)中,增加獨(dú)立12V電源模塊。或者也可以采用斬波升壓的方式獲得12V電壓,具體電路后面給出。
視頻同步信息分離:
為了采集圖像信息,CPU需要根據(jù)行、場(chǎng)同步信號(hào)啟動(dòng)AD轉(zhuǎn)換器,采集穩(wěn)定的圖像。由于視頻信號(hào)的變化很快,所以需要另外設(shè)計(jì)同步分離電路。在本方案中,使用了LM1881視頻同步分離集成塊,獲取視頻同步信號(hào),將此同步信號(hào)連到單片機(jī)的中斷輸入端口。
系統(tǒng)設(shè)計(jì)與實(shí)驗(yàn)結(jié)果
硬件設(shè)計(jì)
基于S12單片機(jī)采集視頻圖像電路系統(tǒng)框圖如圖3。
圖3 單片機(jī)采集圖像系統(tǒng)框圖
其中包括有S12單片機(jī)最小系統(tǒng)、同步分離電路、5V穩(wěn)壓電路、12V斬波升壓電路等。
其中S12單片機(jī)端口資源配置如下:
1) AD 輸入端口PAD02 :輸入視頻模擬信號(hào);
2) 外部中斷口IRQ :輸入視頻行同步信號(hào);
3) 數(shù)字IO口 PM1 :輸入奇偶場(chǎng)信號(hào);
4) PWM輸出端口:PWM2 12V斬波升壓控制信號(hào);
部分系統(tǒng)電路圖見圖4、5。
圖4 12V斬波升壓電路
圖5 同步信號(hào)分離電路
圖5中,只需要將行同步信號(hào)和奇偶場(chǎng)信號(hào)輸入到單片機(jī),視頻信號(hào)不經(jīng)過電容隔直直接輸入到單片機(jī)的AD轉(zhuǎn)換口。
軟件設(shè)計(jì)
軟件設(shè)計(jì)主要包括由圖像采集模塊,圖像處理模塊以及通訊模塊。
其中圖像采集模塊的主要功能包括:
1)初始化模塊
2)外部中斷響應(yīng)模塊
3)AD 轉(zhuǎn)換中斷響應(yīng)模塊
圖像處理模塊主要完成采集圖像中的黑色中心線參數(shù)的計(jì)算。實(shí)驗(yàn)中,我們采用了簡(jiǎn)單的動(dòng)態(tài)閾值比較的方法,得到每一行的中心線的水平位置,然后通過參數(shù)擬合得到中心線在圖像坐標(biāo)系中的位置、方向以及曲率。
為了能夠在PC上顯示出單片機(jī)采集的圖像信息,軟件中還包括了串口通訊模塊,通過軟件將內(nèi)存中的圖像數(shù)據(jù)傳輸?shù)轿C(jī)進(jìn)行顯示。
實(shí)驗(yàn)結(jié)果:
下面是兩幅S12單片機(jī)采集到并通過串口傳送到微機(jī)顯示的前方直線路徑中心線的圖像,它們的分辨率為72 * 24。實(shí)驗(yàn)證明通過簡(jiǎn)單的動(dòng)態(tài)閾值比較的方式,即可以將每行中心線位置計(jì)算出來,整個(gè)處理時(shí)間約為8毫秒左右。
實(shí)驗(yàn)結(jié)果證明,上述CCD檢測(cè)方法可以有效的獲取路徑圖像信息,并計(jì)算出其中的參數(shù)。
圖6 賽道中心線圖像:垂直位置
圖7 賽道中心線圖像: 傾斜位置
結(jié)語(yǔ)
從實(shí)驗(yàn)結(jié)果中可以看出,通過合理放置CCD攝像頭,并且充分利用S12單片機(jī)內(nèi)部的硬件資源,可以獲得滿足路徑參數(shù)檢測(cè)需要的圖形數(shù)據(jù),進(jìn)而可以通過圖像處理算法,得到路徑參數(shù)。
當(dāng)然,利用CCD檢測(cè)路徑參數(shù)也存在一些缺點(diǎn):比如占用RAM資源比較多、道路信息檢測(cè)速率受到限制(CCD每秒產(chǎn)生50幀圖像)、檢測(cè)有延時(shí)(1/50秒)等。
另外,除了使用單一CCD攝像頭檢測(cè)路徑參數(shù)之外,還可以采用光電管與CCD相結(jié)合的方式,發(fā)揮各自的優(yōu)點(diǎn)。