智能型動(dòng)態(tài)圖像追蹤自控車
去年十月份Toyota Lexus 的2007 年最新車款Lexus LS 460 和Lexus LS 460L 在美國市場上市,兩部車子都裝置了Toyota 最新發(fā)展的”高級停車導(dǎo)引系統(tǒng)(Advanced Parking Guidance System)”,這個(gè)系統(tǒng)是使用一個(gè)向后的攝像頭和停車聲納傳感器偵測周邊狀況,駕駛?cè)丝吭谝粋€(gè)停車位旁邊,按個(gè)按鈕,踩煞車以控制速度,系統(tǒng)便會(huì)自動(dòng)接手控制電動(dòng)動(dòng)力方向盤,完成路邊停車的動(dòng)作。除此之外,在目前最常應(yīng)用于工廠自動(dòng)化系統(tǒng)之中的自動(dòng)導(dǎo)引車輛(Automatic Guided Vehicle, AGV)系統(tǒng),可按照程序所下的命令及導(dǎo)引路線進(jìn)行、停止、轉(zhuǎn)彎,并能和搬運(yùn)系統(tǒng)作連結(jié);AGV是一種物料搬運(yùn)設(shè)備,能在固定位置自動(dòng)進(jìn)行貨物的裝載,并自動(dòng)行走到另一位置,以完成貨物的卸載的全自動(dòng)運(yùn)輸設(shè)備。AGV基本功能為能自動(dòng)依循固定的軌道行走,雖然說這個(gè)技術(shù)早己引用在工廠中,但是由于路線必須是規(guī)劃好并在地上畫上行走路徑,并無法應(yīng)用于較復(fù)雜的環(huán)境之中,而我們所提出來的設(shè)計(jì),是利用圖像來辨別標(biāo)志,而標(biāo)志擺放位置也可以根據(jù)實(shí)際的應(yīng)用環(huán)境來做改變,所以應(yīng)用范圍較傳統(tǒng)AGV更為廣泛。
不僅如此,本設(shè)計(jì)也具有特定標(biāo)志搜尋功能,能夠自動(dòng)的分析現(xiàn)有的圖像信息,自動(dòng)鎖定目標(biāo)物并進(jìn)行自動(dòng)化車控的控制,故我們設(shè)計(jì)這套系統(tǒng)來協(xié)助民眾自動(dòng)停車、自動(dòng)倒車入庫,也可應(yīng)用于機(jī)場對飛機(jī)的管控或是任何具有動(dòng)力的交通運(yùn)輸工具。本文將機(jī)械視覺算法以硬件加速的模塊實(shí)現(xiàn),結(jié)合多核的高效能的嵌入式處理器Nios,完成一個(gè)自動(dòng)化汽車導(dǎo)引的平臺,未來可實(shí)現(xiàn)很多汽車駕駛安全方面的應(yīng)用,包括防撞、車道偏離警報(bào)和車道維持(可導(dǎo)引駕駛?cè)嘶氐皆嚨?、背面障礙物警報(bào)、行人監(jiān)測、車距監(jiān)測(讓駕駛?cè)撕颓败嚤3诌m當(dāng)?shù)木嚯x)、夜視、自動(dòng)頭燈調(diào)節(jié)、交通/限速標(biāo)志識別和盲點(diǎn)監(jiān)測等等。
設(shè)計(jì)介紹
我們使用“軟硬件共同設(shè)計(jì) (Co-design)方法”集成圖像輸入端、車控平臺及動(dòng)力控制模塊,完成自動(dòng)化目標(biāo)追蹤的實(shí)驗(yàn)平臺,通過效能佳的軟核CPU來控制外圍的模塊,并利用VHDL自制圖像處理核心電路,建立智能型圖像追蹤的嵌入式系統(tǒng)平臺,如圖1所示。
圖1 智能型圖像追蹤的嵌入式系統(tǒng)平臺
系統(tǒng)核心組成器件可分成以下三類:
1. CMOS 傳感器硬件模塊:CMOS 傳感控制器 、數(shù)據(jù)簡化、SDRAM 控制器
(1) CMOS 傳感器控制器:驅(qū)動(dòng)CMOS 傳感器并進(jìn)行連續(xù)圖像擷取,將動(dòng)態(tài)圖像數(shù)據(jù)流傳入。
(2) 數(shù)據(jù)簡化:將CMOS 傳感器擷取的圖像數(shù)據(jù)(GB&GR)進(jìn)行壓縮,以便大幅減少計(jì)算量及分析時(shí)間。
(3) SDRAM 控制器:通過六組FIFO控制器,將SDRAM資源規(guī)劃給兩組CMOS傳感器控制器及VGA控制器來使用(三寫三讀)。
2. VGA硬件模塊:
(1) VGA 控制器:通過其器件,可以實(shí)時(shí)將圖像直接顯示在VGA上。
(2) XY Histogram:并通過XY坐標(biāo)標(biāo)示出目標(biāo)位置,并在實(shí)時(shí)圖像上進(jìn)行X軸及Y軸的圖像數(shù)據(jù)統(tǒng)計(jì)(Histogram)。
3. 動(dòng)力控制:
通過第二顆軟核CPU來依序執(zhí)行外部給入的命令,CPU通過四組PIO來驅(qū)動(dòng)車體前后輪的控制電路,達(dá)到車體前進(jìn)、后退、左轉(zhuǎn)、右轉(zhuǎn)的控制。
主要硬件器件
以SOPC Builder完成雙CPU核心的設(shè)定,并利用Verilog設(shè)計(jì)硬件電路器件,以waveform進(jìn)行時(shí)序仿真并驗(yàn)證,再通過PIO方式和CPU連結(jié),除了SOPC Builder所提供的外圍電路以外尚有雙CMOS 傳感器圖像擷取電路、六端口SDRAM控制器、VGA控制器(含圖像處理電路),說明如下,如圖3所示,自行開發(fā)的硬件電路已集成為一個(gè)較大的模塊(在圖2左方的方塊),而圖3右方的方塊則是利用SOPC Builder所建立的雙CPU模塊。
圖2 硬件器件
1. 雙核處理器:
在圖3中的cpu_0是用來控制CMOS 傳感器及圖像處理所用,而cpu_1是用來控制車控動(dòng)力的。
圖3 雙CPU系統(tǒng)
2. 2個(gè) CMOS 傳感器擷?。?/p>
撰寫鏡頭圖像擷取的控制硬件電路,并利用DE2發(fā)展板上的雙IDE接口(Expansion Header1,2)可同時(shí)擷取到雙重鏡頭的圖像。
3. 多端口SDRAM 控制器:
利用Mega Wizard Plug-In Manager來生成三寫三讀的六接口FIFO(以內(nèi)置RAM實(shí)現(xiàn)),讓二組CMOS 傳感器擷取及一組VGA 控制器能讀寫SDRAM設(shè)備。
4. VGA 控制器 和圖像處理:
撰寫VGA輸出的硬件控制電路,并在圖像輸出的同時(shí),進(jìn)行X軸及Y軸的圖像數(shù)據(jù)統(tǒng)計(jì),并將結(jié)果存于片上內(nèi)存(On-Chip Memory)之中,以便Nios處理器來讀取。
SOPC系統(tǒng)端接口設(shè)定
圖4 系統(tǒng)端SOPC接口設(shè)定
由DE2發(fā)展板所提供的范例新增用戶自定腳位來控制自制的外圍電路,并通過PLL生成100MHz頻率的時(shí)鐘源供SDRAM來使用,如圖5所示。
圖5 cpu_0在SOPC(上)及在NIOS IDE(下)中的內(nèi)存配置
系統(tǒng)軟件執(zhí)行時(shí)內(nèi)存的配置
由于開發(fā)板上的SDRAM已被CMOS 傳感器擷取及VGA 控制器所使用,所以cpu_0及cpu_1的程序內(nèi)存是放于Flash上,而cpu_0執(zhí)行程序時(shí)的例外向量是放于SRAM上;而cpu_1是放于片上內(nèi)存之中,當(dāng)然在NIOS IDE開發(fā)該CPU的軟件時(shí),也必須分別要把變量堆疊區(qū)指定到相關(guān)的內(nèi)存之中,如圖5、圖6所示。
圖6 cpu_1在SOPC(上)及在NIOS IDE(下)中的內(nèi)存配置效能參數(shù)
本設(shè)計(jì)主要是針對每秒10張frame,而每個(gè)frame為640×480全彩24bit的實(shí)時(shí)圖像進(jìn)行圖像辨視,每秒必須處理8.78M Byte的數(shù)據(jù)量,并進(jìn)行二值化及X軸、Y軸Histogram的圖像處理,由于必須快速處理大量圖像信息,所以采用硬件加速,軟件控制的架構(gòu)來實(shí)現(xiàn),此外,由于本設(shè)計(jì)的SDRAM資源可以切換給Nios來使用,所以亦可使用Nios來讀取SDRAM的圖像信息并進(jìn)行圖像處理,此外,在測試圖像處理算法時(shí),也利用BCB開發(fā)出PC端的仿真程序,而配備如下(Intel 1.6GHz Core Duo,1G RAM, 1.3 Mega CMOS 傳感器 ),以下就三者實(shí)驗(yàn)數(shù)據(jù)進(jìn)行比較,如表1所示。
設(shè)計(jì)架構(gòu)
系統(tǒng)流程
圖7 系統(tǒng)流程圖
系統(tǒng)流程如圖7所示。
系統(tǒng)架構(gòu)圖
圖8 系統(tǒng)方框圖
由系統(tǒng)方框圖8可知,本設(shè)計(jì)使用雙核的系統(tǒng),其中一個(gè)CPU是用來控制CMOS 控制器模塊,而另一個(gè)CPU可以控制大部份的外圍器件,而兩個(gè)CPU之間是利用輸出及輸入PIO腳位,來達(dá)到傳遞數(shù)據(jù)的目的,這樣設(shè)計(jì)的好處是,可利用一個(gè)CPU全速處理大量圖像信息,而另一個(gè)CPU可以負(fù)責(zé)車控系統(tǒng),若從圖像中偵測到偏離或碰撞危險(xiǎn)時(shí),將能通過PIO來觸發(fā)另一個(gè)CPU的中斷,進(jìn)而實(shí)時(shí)告知車控系統(tǒng)下達(dá)較正方向或閃避的控制命令,本設(shè)計(jì)使用到許多的外圍器件包含:Flash Memory、SDRAM、SRAM、M4K RAM、LCM、JTAG-UART、RS232、GPIO、Button、Switch、Timer、LED、Segment、VGA、CMOS 傳感器等。
圖像處理方框圖
圖9圖像處理方框圖
由圖9可發(fā)現(xiàn),本設(shè)計(jì)之所以能達(dá)到實(shí)時(shí)圖像及實(shí)時(shí)動(dòng)態(tài)追蹤,是因?yàn)楫?dāng)CMOS 傳感器下圖像擷取時(shí),便能通過硬件器件,將數(shù)據(jù)從RAW Data轉(zhuǎn)成RGB再進(jìn)行二值化或灰階的處理,以利進(jìn)行圖像處理,而且同時(shí)亦在VGA上立即顯示出該圖像,整個(gè)過程均是由硬件來做;在圖像追蹤時(shí),Nios可以通過X軸或Y軸的直方圖統(tǒng)計(jì)方式來進(jìn)行標(biāo)示目標(biāo)物,所以一張新的圖像進(jìn)來時(shí),Nios并不用做任何處理,即可讀出所需要的數(shù)值,這樣一來才能達(dá)到所期待的硬件加速效能。
表1 三種圖像處理平臺的效能分析
軟件流程
1.為了加速運(yùn)算,由硬件分別做了二值化和數(shù)據(jù)統(tǒng)計(jì)。
2.一開始先搜尋目標(biāo)標(biāo)線位置。
3.找到標(biāo)線后進(jìn)行動(dòng)態(tài)鎖定。
4.開始判斷標(biāo)線長度,自控車是否在標(biāo)線最近距離,若否,則判斷標(biāo)線長是否大于標(biāo)框長的70%,如果大于70%則放大標(biāo)框。
5.由PIO送出前進(jìn)的控制信號給自控車。
6.若自控車在標(biāo)線最近距離則判斷是否為左右轉(zhuǎn)標(biāo)線,若是 則依標(biāo)線左(右)轉(zhuǎn),否則停止動(dòng)作。
硬件電路
(1) 雙CMOS 傳感器圖像擷取器件:通過Switch開關(guān)來達(dá)到切換主畫面/子母畫面的功能,F(xiàn)rame的速度由其中一個(gè)CMOS 傳感器來主導(dǎo),每一次CMOS 傳感器所輸出的數(shù)值為10bit,并同時(shí)輸出該pixel的x,y坐標(biāo),以利讀取。
(2) 多端口 SDRAM 控制器:通過六個(gè)FIFO來提供三讀三寫的SDRAM控制器,每一個(gè)FIFO的大小為2KB,全利用M4K RAM來生成。
VGA 控制器 & 圖像處理:將SDRAM讀來的數(shù)值,配合適當(dāng)?shù)腍_sync及V_sync信號一個(gè)一個(gè)把Pixel打出去,在這同時(shí)亦順便進(jìn)行X軸或Y軸的直方圖統(tǒng)計(jì),并將結(jié)果存儲(chǔ)于另一個(gè)M4K RAM中,待NIOS需要時(shí)即可以馬上從此M4K RAM中讀到數(shù)值。
直流電機(jī)驅(qū)動(dòng)電路
我們使用全橋電路來控制輪子的正轉(zhuǎn)及反轉(zhuǎn)、Nios通過CAR_CMD[3..0]這個(gè)PIO來控制車體的運(yùn)動(dòng),CAR_CMD[1..0]為后輪的開關(guān),而CAR_CMD[3..2]為前輪的開關(guān),在圖十五中為一可控制電流正流或逆流的全橋電路開關(guān),而前輪也相同,其中詳細(xì)的控制命令,如表2所示。
表2 金橋電路控制命令
圖10 軟件流程圖
圖11 雙CMOS 傳感器模塊
圖12 6-ports SDRAM controlle
圖13 VGA controler & Image Processing模塊
圖14 后輪的全橋電路開關(guān)
實(shí)境測試
在圖15中,智能型圖像追蹤車已鎖定特定的目標(biāo)物了,并朝著目標(biāo)物前進(jìn),圖中可以清楚地看出除了自色箭頭標(biāo)志外,尚有許多其它的白色干擾物,如白色墻壁、面紙…等,而在圖16中是智能型圖像追蹤車的VGA輸出,可以清楚地看到圖中是二值化的圖像,并且已智能型圖像追蹤車已鎖定白色箭頭標(biāo)志(綠框圍住),在車體前進(jìn)時(shí),綠框會(huì)自動(dòng)變大并鎖定白色箭頭。
圖15 智能型圖像追蹤車正朝著目標(biāo)物前進(jìn)
圖16 智能型圖像追蹤車前進(jìn)時(shí)鎖定的目標(biāo)
圖17 智能型圖像追蹤車
結(jié)語
本設(shè)計(jì)使用兩顆嵌入式Nios軟核,通過快速設(shè)計(jì)且高集成性的Avalon總線,將復(fù)雜的外圍電路及數(shù)種內(nèi)存模塊集成為車控平臺,通過Nios高性能的表現(xiàn),可以很輕易地實(shí)現(xiàn)實(shí)時(shí)圖像處理及高速自動(dòng)控制的產(chǎn)品。圖17為最終設(shè)計(jì)成型的智能型圖像追蹤車。