邱永華
(廣東女子職業(yè)技術學院,廣東 廣州 510450)
隨著自動化程度的不斷提高,機器視覺的應用在制造業(yè)的生產過程中日益廣泛。例如:在產品的質量控制中,可以對機械零件的外觀、產品包裝的正誤、電路板焊接的好壞和IC字符印刷的質量等進行檢測。應用機器視覺來代替人工檢測,可以大大提高生產效率和檢測的可靠性,減輕工作人員的勞動強度。機器視覺還可以完成人工檢測難以快速完成的工作,獲得準確的檢測數據,比如零件的寬度、圓孔的直徑以及基準點的坐標等。
機器視覺系統(tǒng)根據硬件平臺的不同大致分為:基于PC的機器視覺系統(tǒng)和嵌入式機器視覺系統(tǒng)。前者開發(fā)周期短,開發(fā)成本較低,但局限于PC機的應用;后者則具有高度的靈活性,使機器視覺技術的應用領域大大擴展。所以,進行嵌入式視覺系統(tǒng)的研究具有實際意義和廣闊的應用前景。
本文研究的嵌入式機器視覺系統(tǒng)是人機對弈智能化機器人系統(tǒng)的子部分。機器人系統(tǒng)包括3個部分:機器視覺系統(tǒng)、多DSP嵌入式控制器和6自由度機器人。機器視覺系統(tǒng)采集棋盤信息,進行識別并將識別結果發(fā)送到多DSP控制器系統(tǒng),再用控制器系統(tǒng)來控制機器人落子下棋。系統(tǒng)結構如圖1所示。
圖1 人機對弈智能化機器人系統(tǒng)
機器視覺系統(tǒng)包括圖像采集部分、圖像緩存部分(包括CPLD:復雜可編輯器件總線接口)和圖像處理部分。圖像采集部分要求CMOS圖像傳感器接收到采集命令后能夠以視頻和快照兩種模式采集圖像數據,并配合行、場同步信號輸出數字數據。CPLD構成的總線傳輸接口對前一個部分輸出的數據進行時序和位數的處理,能準確地采集一行或一幀數據并以直接內存存取 (DMA)的方式將其保存到指定的RAM中。當保存完完整的一幀數據后,圖像處理部分能從緩存中讀取數據并進行處理,結果由USB或以太網口輸出。本文重點介紹前面兩個部分。
機器視覺系統(tǒng)硬件結構包括兩個模塊:CMOS模塊和嵌入式處理器(ARM9)模塊。CMOS模塊主要包括LM629芯片及其外部電路,ARM9模塊除了包括核心芯片SC2410和CPLD以外,還包括FLASH、RAM存儲器,USB、串口和以太網口輸出電路,以及電源和顯示電路。ARM9模塊上有CMOS模塊的接線插槽,為CMOS模塊提供時鐘、電源和其它控制信號。CMOS模塊能夠根據不同的應用要求 (如不同的分辨率)而進行任意更換。系統(tǒng)的硬件布局如圖2所示。
ARM9通過I2C總線編程初始化和控制CMOS模塊,對LM629的內部寄存器設定缺省參數,例如:對增益、對比度、亮度、清晰度、系數、曝光、時鐘、水平窗口和垂直窗口的設置等。同時還控制CMOS模塊圖像采集的開始、暫停、結束等操作。CMOS模塊在ARM9的控制下主要完成圖像的采集,其采集的圖像數據隨著像素時鐘、行場同步信號輸出到CPLD構成的總路線接口。CPLD通過內部編程實現一行或一幀數據的準確采集以及16位數據到32位的轉換處理。當采集到一定量的數據后發(fā)出DMA請求,ARM9交出總線控制權給DMA,CPLD和SRAM之間按設好的數據量和地址進行數據傳輸;當數據傳輸完畢,DMA將總線控制權交還給ARM9;完成圖像數據的存儲。ARM9將采集的圖像數據與預存數據進行比較,通過相關的算法處理,找出二者的區(qū)別,獲得當前所需的數據信息,通過USB或以太網口輸出。系統(tǒng)總體設計如圖3所示。
圖3 系統(tǒng)總體設計框圖
圖4 LM9638圖像數據輸出示意圖
圖像采集模塊即CMOS模塊,它包括圖像采集芯片LM9638及其外圍電路和與ARM9模塊接口的部分,主要功能是完成圖像數據的采集,并將各種信號輸出到相關的接口。接口信號包括:圖像數據信號D0-D9、行場同步信號hsync和vsync、像元時鐘信號pclk、I2C控制接口sda和sclk、主時鐘輸入信號mclk、復位信號resetb、下電信號PWD、使能快照信號Snapshort、外部事件同步信號extsync以及數字電VDD和數字地GND信號。
2.1.1 LM9638簡介
LM9638是高性能、低功耗,0.84cmVGA CMOS有源像元傳感器。用于獲取靜止或運動灰度圖像并轉換成數字數據流。具有視頻和快照兩種工作模式,有源像元陣列提供片內10位A/D轉換器、固定圖形噪聲消除單元、視頻增益。另外,內部集成了靈活的時序和控制單元使用戶可以最大限度地調整積分時間、有效窗口尺寸、增益和幀頻,還提供了多種控制、時序和電源模式。
2.1.2 LM9638圖像數據輸出硬件結構
LM9638輸出為滾筒式曝光,即指以行為單位,對像素陣列進行信號采樣、處理、輸出。一行內所有像素的處理是并行的,各行間像素的處理是串行的。其處理一行像素的工作原理如下:開始積分時間時片內時序和控制電路將在一行時間內復位陣列中一行的每個像素,開始曝光,曝光時間到,時序和控制電路將給每行提供地址,同時傳輸像素積分值到相關的雙采樣電路,然后到移位寄存器。一但相關的雙采樣數據被裝入移位寄存器,時序和控制電路將開始移出它們。像元數據進入模擬視頻放大器。之后,通過增益來調整轉換每個像素的模擬量為10位數字數據,最后經過剔除壞像素和補償黑電平處理輸出。如圖4所示。
2.1.3 LM9638模塊與ARM9模塊的接口
LM9638模塊與ARM9模塊的接口如圖5所示。
LM9638模塊與ARM9模塊除了有數據輸出接口、I2C控制接口以外,還包括其它的信號:
a)mclk
傳感器主時鐘,由ARM9模塊提供。
b)PWD
強制為邏輯1時傳感器置輸入電源下電模式。LM9638帶有片內電源管理系統(tǒng)通過數字和模擬電路打開(Power up)和關閉電源(Power down)。 它可以用小于千分之一秒的時間使所有的電路上電。
c)resetb
強制為邏輯0時傳感器復位至其缺省電源上電狀態(tài)。
d)Snapshort
使能快照模式,實現LM9638采集單幀圖像的功能,自動快照模式在收到Snapshort觸發(fā)信號后,內部時序和控制電路將產生內部觸發(fā)信號,在一行周期內復位陣列。當復位周期結束后控制電路將通過extsync腳產生外部事件同步信號。
e)extsync
外部事件同步信號,用于快照模式時同步外部事件。
LM9638模塊3 V數字電和地輸入。
圖像緩存模塊把CPLD傳輸接口中的圖像數據存儲到SRAM中,數據在CPLD中進行位數轉換完畢后發(fā)出DMA請求,ARM9響應DMA并將圖像數據保存到SRAM,完成圖像緩存。
圖像緩存模塊的硬件結構如圖6所示。
圖6 圖像緩存模塊的硬件圖
DMA的特點決定了其適合圖像緩存的功能。數據在不同的存儲空間所轉移的任務交給DMA來完成,而ARM只專注于數據的處理。雖然對圖像數據進行的傳輸也可由軟件實現,但將消耗掉大量的CPU時鐘周期,使ARM的高速性能難以發(fā)揮。而由DMA來進行同樣的工作幾乎不占用CPU的時鐘周期。下面是DMA進行圖像數據存儲的過程:
1)當CPLD將16位的圖像數據轉換成32位數據后,經過處理后的行同步信號或楨同步信號就向DMA控制器發(fā)出請求信號DREQ,且此信號在DMA釋放總線權后才有效;
2)當DMA控制器采樣到有效的DMA請求信號DREQ后,就向CPU發(fā)出總線請求信號HRQ;
3)DMA控制器向CPU發(fā)出總線請求信號HRQ后,至少再過一個時鐘周期,CPU才能發(fā)總線響應信號HLDA,然后DMA控制器便可獲得總線控制權;
4)DMA控制器獲得總線控制權,向CPLD發(fā)出DMA的響應信號DACK;
劉鐵頭走后,我就去了李老黑家。李老黑剛吃過晚飯,正翹腿歪在沙發(fā)上剔牙。李老黑的老婆則木著臉坐在一旁的凳子上,看見我進門,只是翻了一下眼皮,沒有答理我。
5)DMA控制器獲得總線控制權后,控制數據在CPLD與SRAM之間傳送,直到傳送完預定的數據(一行或一楨);
6)DMA控制器的請求信號 (向CPU的)變?yōu)闊o效,CPU恢復對系統(tǒng)總線的控制權。
經過上述過程,圖像數據便由CPLD存儲到SRAM中,完成圖像緩存。
圖像處理部分主要是從SRAM中讀取數據與預存模板進行比較處理,結果由USB或以太網口輸出。其中還包括Linux系統(tǒng)移植,驅動程序的編寫與移植和ARM圖像算法處理等。
系統(tǒng)的軟件主要是CPLD編程,把16位的圖像信號轉換成32位,在數據進行轉換之前,首先必需了解從CMOS模塊中輸出到CPLD的數據時序。
LM9638輸出的數字數據包括:10位的圖像數字信號d[9:0]、行同步信號hsync、幀同步信號vsync和像素時鐘信號pclk。pclk總是固定周期,數字圖像輸出總線d[9:0]上像素數據和pclk的有效沿是同步的。行同步輸出hsync用于選定行數據,在電平模式hsync被確定為一電平(低或高)從每行開始保持到該行最后一像素被讀出到數字圖像輸出總線d[9:0]上。hsync電平總是與像素時鐘pclk有效沿同步。幀同步信號vsync,被用作幀內象素數據的指示器。每幀開始時vsync輸出腳為一特定標準(高或低)并保持該狀態(tài)直到該幀結束,hsync也總是與pclk的邊沿同步。如圖7所示。
ARM9的數據總路線是32位,而從LM9638輸出的圖像數據僅僅只有10位,如果將這10位數據放在總線上進行傳輸,必將造成極大的資源浪費,如果能將這10位數據轉換成32位進行傳輸,不僅節(jié)約了資源,而且還提高了傳輸速率。系統(tǒng)中將這10位數據當成16位進行處理,高6位用0來填充。于是就要求CPLD能把16位數據轉換成32位。由于后級的處理位寬是前級的2倍,因此后級處理的時鐘頻率也將下降為前級的1/2。如果把前級的時鐘進行2分頻來作為后級的時鐘,這種方法引入了新的時鐘域,處理上需要采取多時鐘域的處理方式,因而在設計復雜度提高的同時系統(tǒng)的可靠性也將降低,為了避免以上問題,這里采用了時鐘使能的方法以減少設計的復雜度。其原理圖如圖8所示。
在像素時鐘觸發(fā)和行同步信號有效的情況下,第一個移位寄存器將在第一個pclk下降沿時把16位數據放入移位寄存器的高位,在第二個pclk下降沿時把移位寄存器的高位放入低位,又把輸入的16位數據放到移位寄存器的高位,這樣以兩個pclk周期反復循環(huán),把輸入的16位數據轉換成32位,第一個移位寄存器的輸出直接輸入到第二個移位寄存器,第二個移位寄存器在時鐘使能信號有效時才把輸入轉為輸出。因為控制輸出的時鐘使能信號是通過pclk計數觸發(fā)后形成,相當于pclk的二分頻,故能在兩個pclk周期內使能一次,在正確的時間內輸入輸出。下面是軟件仿真得到的時序圖,如圖9所示。
pck即為像素時鐘,date_in是16位數據輸入,row_syn是行同步信號,clk1x_en是時鐘使能信號,date_out是32位數據輸出。從圖中可以看到,輸出有一定的時延,在傳輸存儲的時候不能以行同步或幀同步信號直接作為DMA觸發(fā)信號,應將其經過延遲處理再作觸發(fā)信號,保證處理后的信號與輸出信號同步,以此能夠正確地傳輸。
CPLD在圖像采集到圖像存儲的過程中起到橋梁的關鍵作用,其功能除了將采集的10圖像數據轉換成32位和與ARM的DMA控制傳輸,還包括其它功能:
1)CCD模塊所需的外部時鐘,復位等其它控制信號;
2)EXTBUS信號控制,該信號對存儲器的操作有效;
3)提供系統(tǒng)的復位信號,CPLD負責對按鍵復位信號,電源的reset信號,網卡的復位信號進行判斷,從而控制系統(tǒng)復位。
CMOS圖像傳感器采集的數據經過CPLD轉換,通過DMA訪問的方式滿足了機器智能視覺識別系統(tǒng)的實時采集和處理需求,可以運用于環(huán)境比較穩(wěn)定的識別系統(tǒng)。但對于一些光線亮度偏高或者偏低的環(huán)境,圖像的亮度往往會影響數據的準確性,進而影響到識別精度,所以對于光線偏暗的環(huán)境,可以在拍攝的時候加上閃光燈,對于光線偏亮的環(huán)境增加亮度調節(jié)功能,盡量將實時拍攝的圖像保持與模板一致,或者通過相關算法保證能夠不會因為亮度的改變影響識別效果,這也是今后重點研究的方向。
[1]孔德林.基于嵌入式的機器人目標識別視覺系統(tǒng)設計[D].西安:西安電子科技大學,2007.
[2]王建華.基于嵌入式系統(tǒng)的機器人視覺及其在機器人控制中的應用[D].重慶:重慶大學,2003.
[3]符意德,陸陽.嵌入式系統(tǒng)原理及接口技術[M].北京:清華大學出版社,2007.
[4]ARM9基礎實驗教程[R].深圳:深圳市英蓓特信息技術有限公司,2005.
[5]ARM9 Linux[R].深圳:深圳市英蓓特信息技術有限公司,2005.
[6]吳明暉.基于ARM的嵌入式系統(tǒng)開發(fā)與應用[M].北京:人民郵電出版社,2006.
[7]邱永華,賀文健.開放式運動控制器人機界面的研究與設計[J].計算機系統(tǒng)應用,2011,(4):45-49.
[8]邱永華.智能蹺蹺板小車控制系統(tǒng)的設計[J].電子產品可靠性與環(huán)境試驗,2011,29(1):32-38.