引言
對于自主機器人導(dǎo)航和其它機器視覺應(yīng)用來說,,實時深度感知是很關(guān)鍵的,。目前通過立體圖像來計算深度的算法計算量很大,例如差異測繪,,要占用CPU大量的時間,,或者需要用昂貴的器件進行實時操作。
針對立體攝像的深度感知,,FPGA解決方案能使處理器的時間得到緩解,,減少或除去器件的成本,,例如MPU、DSP,、激光器和昂貴的鏡頭,。通過提供給機器人其環(huán)境中 的差異測繪,F(xiàn)PGA使機器人中的CPU專注于重要的高層任務(wù),,例如建圖和定位,。
差異測繪
加深度感知到機器人的常用技術(shù)是用兩個水平放置的獨立攝像機,互相之間平行分開放置,。用差異測繪算法對兩個攝像機進行比較,,見圖1。
圖1 差異測繪計算
簡單來說,,差異是指右面和左面圖像之間的差別,。物體越接近攝像機,兩個圖像之間的差異越大,。
你可以自己來做一個實驗,,對著你的臉?biāo)降叵蛏衔兆∫恢ЧP,不停地眨你的左眼和右眼,。移動的筆越接近你的臉,,你眨眼時覺得移動越多。做更多的移動時,,物體越接近你的眼睛,,圖像中的差異越大。
如圖1所示,,從兩個圖像之間物體的位置算出差異:d=x1-x2,。為了計算點M的實際坐標(biāo),可通過左面和右面的攝像機來進行計算:
X=Bx1/d
Y=By1/d
Z=fB/d
相關(guān)的問題
計算差異測繪依賴于相關(guān)的圖像,,以及左面圖像和右面圖像的匹配性質(zhì),。逐點計算相關(guān)的像素的計算量是很大的,因此用其它算法來簡化這個問題,。有一種方法稱為圖像點相關(guān),,仔細檢查左面圖像的像素塊,稱為點,,然后在右面圖像中尋找相同的點,。其它的方法包括邊沿檢測和匹配。一旦定位了相應(yīng)的圖像,,就可進行差異計算,。
失真與曝光問題
如果使用高質(zhì)量的攝像機,可以忽略鏡頭失真。為了省錢,,使用便宜的CMOS 或者CCD攝像機,,或者低成本廣角鏡頭。這些較低質(zhì)量的產(chǎn)品會引入失真或曝光問題,。
鏡頭會引起比例和定位失真,,例如白點效應(yīng),靠近圖像外面的物體出現(xiàn)彎曲狀,,使用眾所周知的圖像處理算法可以進行補償,。針對移動或者其它幾何算法,糾正白點的一種方法是使用坐標(biāo)的查找表重測圖像中的像素,。
在非常明亮和非常暗的環(huán)境中,,其它的算法需要可靠地捕獲圖像中的詳細特征。例如,,針對不同的區(qū)域確定最佳的曝光設(shè)置,,使用區(qū)域的合成圖像可以補償缺少背景亮度。
用含有嵌入式DSP的FPGA的解決方案
本文中闡述的深度感知算法計算復(fù)雜,,以實時的視頻速率來實現(xiàn),。系統(tǒng)設(shè)計者必須評估CPU/軟件、ASIC, ASSP(例如DSP處理器)和FPGA解決方案,,確定哪個是最佳的,,以及FPGA價格。
圖2展示了提出的FPGA協(xié)處理器解決方案,,解決失真,、曝光、通信和針對深度感知差異測繪算法,。這個方法使CPU騰出時間,,允許DSP處理器處理更多的串行任務(wù)。
圖2 FPGA支持計算量大的差異測繪算法
通常選擇FPGA時,,需要評估三個電路方面的需求:
●針對利用并行特性的協(xié)處理功能,,DSP的功能和性能。
●DDR(雙數(shù)據(jù)速率)和LVDS(低電壓差分信號)支持接口至片外SDRAM緩沖存儲器,,直接連接到來自攝像機的圖像數(shù)據(jù),。
●安全方案以保護知識產(chǎn)權(quán)。
對于圖像處理算法,,傳統(tǒng)的DSP處理器的并行功能有限,,每個DSP芯片只有1到4個乘法器,見圖3中的左面,。因此DSP用很高的時鐘速率來進行補償,,時鐘速率高達1GHz或更高,,以達到高的吞吐量,。需要很快完成的復(fù)雜串行任務(wù)的DSP算法應(yīng)該用DSP處理器實現(xiàn),。
然而,許多深度感知圖像處理功能需要大量的并行處理,,例如線性插值技術(shù),,媒體濾波器和幾何估計。與DSP芯片比較,,F(xiàn)PGA可以用并行來執(zhí)行串行功能,,以加速系統(tǒng)性能,見圖3的右面所示,。例如圖像對應(yīng)是很簡單的算法,,比較大量的像素值,或者兩個圖像之間的像素點,。為了得到有效均方差的和(SSD),,圖像對應(yīng)算法必須對圖像中的像素進行百萬次計算,對串行執(zhí)行功能的DSP芯片來說這是一個挑戰(zhàn)性的任務(wù),。
具有DSP功能的FPGA包含幾個乘法器塊,,但是一些FPGA還有嵌入式加法器、減法器和大大增加處理性能的累加器,。盡管低成本FPGA以低于300MHz系統(tǒng)時鐘頻率工作,,但用片內(nèi)多個DSP塊以并行方式實現(xiàn)多個DSP功能可以達到高的DSP吞吐量(3,000 MMAC)。
存儲器和DDR
由于有多個乘法器,,利用FPGA并行的靈活性有益于存儲器的訪問,。能夠容易地并行訪問各種存儲器。片內(nèi)分布式存儲器可以用來建立小的高性能便箋,,針對去除白點使用坐標(biāo)的查找表,,對于在圖像中再測繪像素是很有用的。片內(nèi)較大的嵌入式存儲器塊能構(gòu)建較大的高性能存儲器,,用于FIFO和線緩沖器,。
片外存儲器DDR II SDRAM可以提供大的高性能存儲器。針對常用于圖像處理,,存儲整個幀的DDR SDRAM,,F(xiàn)PGA可以為DDR SDRAM提供存儲器控制和接口。
較低的時鐘速度(100MHz以下),,DDR存儲器控制器接口是容易做的,,可用FPGA中的通用I/O和邏輯實現(xiàn)。然而在較高的頻率,,擁有專門電路的FPGA要求穩(wěn)健的DDR存儲器接口,。不是所有FPGA器件都有這些專門電路的,實現(xiàn)高速DDR存儲器接口的成本和復(fù)雜性差別很大,取決于特殊的FPGA,。
LVDS
針對攝像機和通過LVDS接口的視頻芯片集的深度感知,,例如攝像機鏈接, FPGA接口圖像處理引擎,。LVDS是低噪聲,、低功耗,小擺幅差分信號用于通過銅線傳送高速(每秒吉比特)數(shù)據(jù),。
作為一個用于視頻接口的例子是7:1 LVDS接口,,有多個LVDS信號對用于數(shù)據(jù)傳送,一個信號對用于時鐘,。對一些FPGA來說,,這是本身的I/O接口。視頻數(shù)據(jù)通過3個LVDS對進入FPGA,,I/O結(jié)構(gòu)對這個包進行解串,,然后把FPGA中并行的數(shù)據(jù)送到邏輯陣列。
安全性
因為自主的機器人有時用于軍事應(yīng)用,,在配置期間FPGA不應(yīng)對系統(tǒng)引入額外的脆弱性,。對于基于SRAM的FPGA,配置數(shù)據(jù)來自外部的非易失存儲器,。有些FPGA擁有內(nèi)置的128位AES解密引擎,,防止黑客通過逆向工程來獲取FPGA中的功能。
只要密鑰是未知的,,AES配置位流加密提供了保護措施,。然而,非易失FPGA完全去除了這種安全性的風(fēng)險,。一些非易失FPGA在同一芯片上組合了Flash和SRAM,。上電后SRAM獲得工作配置。這種技術(shù)提供了高配置安全性,,同時又利用了SRAM無限次重構(gòu)的優(yōu)點,。
結(jié)語
支持DSP、差分信號LVDS和DDR II存儲器接口的FPGA使得機器人的實時感知成為可能,。
對于機器人的立體視覺應(yīng)用,,針對實時圖像處理實現(xiàn),CPU,、DSP處理器和FPGA協(xié)處理器的組合能夠?qū)π阅芎蛢r格做出最佳的平衡,。FPGA能夠處理高度并行差異測繪和深度感知算法。DSP進行較少并行處理,、高速和簡單代碼的更加復(fù)雜的功能,。CPU做需要靈活性和高層軟件實行的那些部分,。
基于Flash,非易失LatticeXP2 FPGA支持許多需求,,包括LVDS,、內(nèi)置DDRII存儲器和完整特性的DSP塊,以及大量的可編程邏輯和存儲器塊支持接口和其它的定制功能,。許多DSP知識產(chǎn)權(quán)核和MATLAB SIMULINK使設(shè)計更加便利,。Lattice還有基于7:1 LVDS視頻接口的參考設(shè)計和平臺,。免費參考設(shè)計IP提供的一些功能是色深度轉(zhuǎn)換,、亮度、對比度和視頻覆蓋,。