文/蘇軍偉
關(guān)鍵字:AGV、圖像定位、自動導(dǎo)向、二維碼
近年來,磁條卡導(dǎo)航技術(shù)、射頻(RF)技術(shù)、光學(xué)識別、聲音識別、視覺識別,以及條碼識別技術(shù)等自導(dǎo)航識別及定位導(dǎo)向技術(shù)的成熟,提供了準確、高效的傳感器數(shù)據(jù)輸入手段,促進了無人駕駛、自導(dǎo)航AGV移動設(shè)備、無人化碼頭、工業(yè)自動化無人值守的快速發(fā)展。
在目前的導(dǎo)航技術(shù)中,磁條技術(shù)成本相對較高、靈活性差,光學(xué)識別數(shù)據(jù)格式有限,只能應(yīng)用在特定行業(yè);射頻(RF)技術(shù)標簽成本高且不能隨意丟掉,聲音和視覺識別成本高、技術(shù)不如二維碼圖像技術(shù)成熟,導(dǎo)致大規(guī)模應(yīng)用構(gòu)成瓶頸。相比之下,二維碼圖像定位導(dǎo)向具有成本低、易制作、構(gòu)造簡單、使用靈活、條碼識別速度快、效率高(低于萬分之一的出錯率)、信息容量大、保密防偽性強等優(yōu)點,在物流自動化輸送AGV移動設(shè)備圖像定位及方向?qū)蛑谐蔀槭走x。
總體來看,當(dāng)前國內(nèi)主要AGV移動設(shè)備廠家導(dǎo)航識別采用外購二維碼攝像頭集成技術(shù),或OEM歐美國外識別技術(shù),對二維碼圖像定位自動導(dǎo)向技術(shù)研究較少,經(jīng)常因為無法識別二維碼,對導(dǎo)航中出現(xiàn)的錯誤無能為力,導(dǎo)致無法識別二維碼,進而引起AGV系統(tǒng)崩潰。如何快速定位與糾錯、自動調(diào)整方向,是整個AGV移動設(shè)備導(dǎo)航定位系統(tǒng)的核心。而如何對所采集圖像進行預(yù)處理,恢復(fù)二維碼圖像信息、定位坐標、方向校準,成為AGV移動設(shè)備圖像定位導(dǎo)向成功與否的關(guān)鍵。
本文主要研究基于QR Code碼的圖像定位方法,該方法與其它圖像定位自動導(dǎo)向相比有如下特點:
1.實時性強:傳統(tǒng)AGV移動設(shè)備大多采用Data Matrix和PDF417編碼的方式,識別速度低,識別角度小,導(dǎo)致時間延遲、實時性差,本文采用的QR二維碼編碼圖像定位速度更快,具有明顯優(yōu)勢。
2.定位精確度高:一般所采用的Data Matrix和PDF417編碼,其定位探測圖形碼不如QR Code碼明顯,因此一旦出現(xiàn)破損和損壞,將不易識別,導(dǎo)致定位不準確。
3.雙內(nèi)存高速DMA數(shù)據(jù)傳輸:由于高速CCD采集圖像數(shù)據(jù)信息量較大,采用雙內(nèi)存DMA方式傳輸,一個內(nèi)存讀取,一個內(nèi)存存儲,輪流交替,快速瞬間完成,大幅減少圖像采集時間。相比之下,單內(nèi)存方式的數(shù)據(jù)采完后,則存儲時間長,并會出現(xiàn)溢出問題。
4.嵌入式ARM+高速CCD多任務(wù)處理:采用多任務(wù)處理方式,不僅節(jié)約時間,圖像采集、識別與MCU雙輪驅(qū)動、信號傳輸與控制等并行運行;提高整個系統(tǒng)效率。
5.圖像預(yù)處理技術(shù):運用圖像校正、二值化、去噪、邊緣檢測、Hough變換、圖像旋轉(zhuǎn)等多種圖像處理方法,可實現(xiàn)條碼圖像的處理。
6.快速定位、自動導(dǎo)向:在瞬間處理完一幀圖像后與標準圖像進行對比,迅速計算出誤差角度,驅(qū)動電機糾正偏差,快速定位及方向?qū)颉?/p>
QR Code、Data Matrix和PDF417 是目前圖像定位自動導(dǎo)向應(yīng)用比較廣的三種條碼,將其識別效率進行比較,如表1。
從表1中可以看出,根據(jù)各種二維碼標準的編碼技術(shù),譯碼后的QR碼具有更廣的應(yīng)用價值與空間,其優(yōu)點包括:
1.采用CCD攝像機二維碼識別設(shè)備,QR碼每秒識別30個含有100個字符的符號信息,具有超高速識別特性,是工業(yè)自動化及圖像導(dǎo)航定位優(yōu)先考慮的選項。
2.通過特征符號對其3個角上的位置探測圖形進行360度識別,可避免背景干擾和負面影響。
3.能夠有效表示漢字及圖形,信息容量大,比其它二維碼效率提高20%。
關(guān)于QR碼識別技術(shù)研究,對于圖像定位及自動方向?qū)虻奶剿骶哂兄匾饬x。面對圖像采集中的定位誤差、條碼受損,以及復(fù)雜背景等情況,QR碼能夠準確、高速地識別條碼信息、條碼定位、條碼分割、數(shù)據(jù)提取和方向糾錯等,并且對于延長條碼使用壽命、減少移動設(shè)備維護、提高系統(tǒng)的穩(wěn)定性,顯得尤為重要。
QR碼的編碼數(shù)據(jù)圖形格式符號(主要包括功能圖形和編碼區(qū)格式),如圖1。
1.位置探測圖形、位置探測圖形分隔符:對每個QR碼來說,位置都是固定存在的,只是大小規(guī)格會有所差異;這些黑白間隔的矩形塊很容易進行圖像處理地檢測,用于對二維碼的定位。
2.校正圖形:根據(jù)尺寸不同,矯正圖形的個數(shù)也不同。矯正圖形主要用于QR碼形狀的矯正,尤其是當(dāng)QR碼印刷在不平坦的面上,或者拍照時發(fā)生畸變等情況。
3.定位圖形:主要定義了網(wǎng)格,這些黑白相間的小格子就如同坐標軸。
4.格式信息:表示該二維碼的糾錯級別,分為Q、H 、L、M。
5.數(shù)據(jù)區(qū)域:使用黑白的二進制網(wǎng)格編碼內(nèi)容;8 個格子可以編碼一個字節(jié)。
6.版本信息:即二維碼的規(guī)格,QR碼符號共有40種規(guī)格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號相較前一版本,每邊增加4個模塊。

圖1:QR碼的編碼數(shù)據(jù)圖形格式符號

圖2:

圖3:
7.糾錯碼字:用于修正二維碼損壞帶來的錯誤。
圖像定位自動導(dǎo)向的圖像采集設(shè)備MCU,采用ARM Cortex?-M4內(nèi)核為核心處理器, 具有圖形專用Chrom-ARTAccelerator?:圖形加速器(像素格式的矩形填充,矩形復(fù)制的變換和混合)和SDRAM存儲器接口,攝像頭接口,主頻高達180MHz,高速CCD攝像頭采用一款1/4英寸500萬像素的高性能圖像傳感器,支持DVP和MIPI接口,以及5寸TFT帶觸摸液晶屏。
首先將軌跡和位置坐標信息存儲在二維碼中,然后圖像定位自動導(dǎo)向系統(tǒng)通過對視覺QR碼的圖像獲取、攝像機位置標定、特征提取和深度恢復(fù)等圖像預(yù)處理過程,提取存儲該二維碼正對地面的坐標信息,以及對方向?qū)蚣m偏等,實現(xiàn)輔助定位和軌跡跟蹤。

圖4:

圖5:

表1:三種條碼的識別效率比較
圖像定位自動導(dǎo)向在通過自身高分辨率、長焦攝像頭對二維碼進行讀取和識別時,也在同步處理二維碼圖像在坐標中的位置,與陀螺儀電子羅盤數(shù)據(jù)進行融合,確定AGV移動設(shè)備的精確朝向。綜合二維碼編碼的信息和其在圖像中的位置信息,可以對AGV移動設(shè)備進行完整的定位自動導(dǎo)向。
攝像頭CCD圖像采集及處理:主要完成對圖像預(yù)處理、導(dǎo)向糾錯及定位,提取出正確的完整坐標信息,為整個導(dǎo)航定位、調(diào)度系統(tǒng)提供重要數(shù)據(jù)支持;其處理過程包括:圖像采集、圖像識預(yù)處理及識別、圖像是否旋轉(zhuǎn)等,如圖2所示。
⑴ 圖像采集:首先是初始化系統(tǒng)時鐘、外圍設(shè)備硬件等,然后初始化DCMI,配置DMA雙緩沖模、DCMI采集的圖像數(shù)據(jù)。我們配置為自動連續(xù)對焦模式,并根據(jù)LCD分辨率設(shè)置輸出圖像尺寸為240×240或480×480(根據(jù)需要進行自動設(shè)置)。因為DMA雙緩沖模式需要兩個buf(緩沖區(qū))輪流接收數(shù)據(jù),申請dcmi_buf[0]、[1]內(nèi)存來接收圖像的行數(shù)據(jù)。
另外,我們還申請了data_buf內(nèi)存,用于存放一幀RGB565圖像數(shù)據(jù),DMA傳輸完成一行圖像數(shù)據(jù)則中斷,先判斷當(dāng)前DMA傳輸使用的是buf0,還是buf1。如果是buf0,說明buf1已滿,則讀取buf1的數(shù)據(jù),并復(fù)制給ata_buf。當(dāng)DMA傳輸完成一幀圖像數(shù)據(jù),則通知MCU進行圖像預(yù)處理。
圖像采集后,得到幾幅圖像,如圖3。
⑵圖像預(yù)處理及識別:采集到的圖像,由于條形碼存在畸變、污染、光亮不均、對焦模糊、有一定的旋轉(zhuǎn)角度等(如圖3),在定位條碼前,需要對圖像進行預(yù)處理。通過減少或消除光學(xué)或電子缺陷,如固定圖案噪聲、拖尾、浮散等,來提高圖像質(zhì)量,得到清晰穩(wěn)定的白底黑色圖像。具體實現(xiàn)如下:
首先,圖像二值化。由于采集到的圖形有深色模塊和淺色模塊,深色模塊代表數(shù)字“1”,淺色模塊代表數(shù)字“0”,需要將采集到的24位BMP位圖轉(zhuǎn)化為8位位圖,采用全局閾值和局部閾值選取相結(jié)合,逐步選取合適的閾值,把條碼圖像二值化,根據(jù)AGV移動設(shè)備應(yīng)用場景二值化為白底黑色條碼。使用二維多項式將一幅圖像或部分擬合成一個二維表面,基本過程分為三步: 擬合亮度函數(shù)最小均方誤差、形成背景擬合曲面、圖像的二值化處理。
①擬合亮度函數(shù)最小均方誤差
假設(shè) I是某幅待處理的圖像, 我們用(xi,yi)表示圖像 I的坐標,zi為相應(yīng)坐標點的亮度值, 則均方誤差 MSE為:


②形成背景擬合曲面

從而,每一個數(shù)據(jù)點的誤差的列向量可以表示為:


將方程(3)代入方程(4),并對A中的元素進行微分,令導(dǎo)數(shù)為零:

方程(5)即為使均方差極小的系數(shù)向量;代入方程(2),得到背景擬合曲面。
③圖像二值化處理
取背景擬合曲面與原始圖像的差值與一個浮動量相比,將圖像轉(zhuǎn)化為二值化圖像。

二值化后的圖像,如圖4。
可以看出,圖4(a)圖像處理后,模塊被細化,數(shù)據(jù)有可能丟失;圖4(b)因為下方圖像存在大的黑斑,效果差;圖4(b-1)采用多項式曲面擬合技術(shù)實現(xiàn)效果比較好,但出現(xiàn)了條碼內(nèi)部誤碼;圖4(c)和圖4(d )二值化圖像處理比較合適。
其次,噪聲去除。利用Hough變換檢測條碼邊界,可以有效去除面積較小的點噪聲和細長的線形噪聲。分兩步實施,如下:
A.邊界點掃描:為了提高效率,采取先定位位置探測條碼符號大致位置,再掃描條碼邊界,通過水平向左、水平向右、垂直向上、垂直向下四個方向的圖像掃描,當(dāng)遇到深色模塊時記錄“1”,淺色模塊時記錄“0”,深色像素點不完全在最外邊界上,但最外邊界像素占多數(shù),這樣仍可以通過Hough變換得到需要的邊緣直線。
B.求解邊界直線:利用坐標變換來檢測平面內(nèi)的直線或規(guī)律曲線,在上一步中得到四個邊界的邊緣點,通過Hough變換將離散點組裝成邊緣直線,然后再通過四條直線的方程求出條碼符號的四個邊界點。
采用Hough變換時, 考慮一個點( xi,yi)和所有通過該點的線。通過點(xi,yi)的直線有無數(shù)條,對于某些a值和b值來說,這些直接滿足直線方程:

進行Hough變換時, 使用直接的極坐標方程:

圖6:

圖7:

圖8:

圖9:

圖5(a )說明了參數(shù)ρ和θ的關(guān)系,對于水平線來說θ=0°,ρ 等于正的x截距;同理,對于垂直線,θ=90°,ρ等于正的y截距,或θ=-90°,ρ等于負的y截距;圖5 (b)的每一條正弦曲線表示通過特定點( xi,yi)的一族直線,交點(ρ,θ)對應(yīng)于通過( xi,yi)和( xj,yj)的直線。
Hough變換把ρθ參數(shù)空間細分為累加器單元,如圖5(c)示 。其中(ρmin,ρmax)和(θmin,θmax)是參數(shù)值的期望范圍,值的最大范圍是(-90°≤θ≤90°)和(-D≤ρ≤D ),其中D是圖像對角線的距離,坐標 (i,j )處的單元累加器的值為A(i,j)對應(yīng)于與參數(shù)空間坐標(ρ,θ)相關(guān)的的方形,初始狀態(tài)其值為零,然后對于圖像平面上的每一個非背景點( xk,yk),令θ等于θ軸上允許的細分值,并通過公式ρ=xk*cosθ+yk*sinθ求出相應(yīng)的ρ值,將得到的ρ值,并四舍五入為最接近的ρ軸上的允許單元值。相應(yīng)的累加器單元然后增加,A (i,j )意味著xy平面上Q個點位于線ρi= x*cosθj+ y*sinθj上 ,在這個過程的最后,ρθ平面上的細分數(shù)決定了這些點共線的精度。
Hough變換第一步是峰值檢測,其峰值位于Hough變換單元,找到最大閾值的變換單元,并記下其位置。
第二步是將識別出來的一組峰值,確定是否存在相關(guān)的線段以及起始和結(jié)束位置,最后連成一條直線。
第三步,重復(fù)以上兩步,對四個方向的掃描到的邊緣點進行變換,連接成條碼符號的四條邊緣直線。
⑶圖像角度導(dǎo)向方向糾正:由于攝像頭受多種因素影響,采集到的圖形都會傾斜,首先要將二維碼擺放成標準位置,利用QR碼圖像在左上角、左下角和右上角各有一個位置探測圖形,每個位置探測圖形可以看作是由3個重疊且同心的正方形組成,它們分別為7×7個深色模塊、5×5個淺色模塊和3×3個深色模塊。尋像圖形如圖6所示,其圖形特征是黑白條比例為:黑∶白∶黑∶白∶黑=1∶1∶3∶1∶1。
由于QR二維碼圖像有特殊的比例,同時在掩膜作用下,其它圖形不可能出現(xiàn)這樣比例的圖形,所以可通過尋找三個圖形定位碼的圖形中心坐標,來確定條碼是否需要旋轉(zhuǎn)以及旋轉(zhuǎn)角度。將不標準的圖形,旋轉(zhuǎn)至標準位置,來糾正AGV移動設(shè)備的運行導(dǎo)向方向。圖像旋轉(zhuǎn)算法與實現(xiàn)算法,如圖7。采用CORDIC算法,執(zhí)行一個平面整體旋轉(zhuǎn),就是從一個向量轉(zhuǎn)換到另一個向量,實現(xiàn)二維碼圖像的旋轉(zhuǎn)。
向量(Xi,Yi)的平面旋轉(zhuǎn)用矩陣表示為:

旋轉(zhuǎn)角度可以通過迭代運算分為多步執(zhí)行,每一步完成旋轉(zhuǎn)的一部分,單步表述為:

式(2)提取COS后變成:

式(3)相比于式(2)的4次相乘只需要3次,另外乘法可以通過選擇如TANGEN表示為2的次方的角度來消除乘法運算。2的次方的乘法或者除法運算,可以用簡單的移位來實現(xiàn)。
每一步的角度表示為


采用CORDIC算法旋轉(zhuǎn)公式可以看出,應(yīng)用CORDIC算法是由一系列加法操作和簡單的移位組成的。每次旋轉(zhuǎn)都使累加的旋轉(zhuǎn)角度之和與目標旋轉(zhuǎn)角更接近,這實際上是一種逐次逼近的坐標旋轉(zhuǎn)方法,迭代次數(shù)n越大,旋轉(zhuǎn)的角度就與真實的角度越接近。在實際應(yīng)用中,不可能迭代很多次,由于受硬件資源限制。實際上,對于n次迭代,CORDIC算法的旋轉(zhuǎn)精度為arctan2-(n-1)。當(dāng)n=8時,旋轉(zhuǎn)精度可達0.4476°,滿足實際應(yīng)用的需要。示意圖,如圖8。
QR碼解碼識別通過快速定位于符號三個角上的位置探測圖形,確定符號單元模塊數(shù)及旋轉(zhuǎn)角度,通過檢測定位圖形及校正圖形位置,確定數(shù)據(jù)采樣網(wǎng)絡(luò)及偏置角度;AGV移動設(shè)備得到旋轉(zhuǎn)角度信息,換算成對應(yīng)的XY軸坐標,不斷根據(jù)得到的圖像信息,MCU驅(qū)動左右輪電機,調(diào)整位置,直至達到AGV移動設(shè)備控制方向的誤差方位內(nèi),達到圖像定位自動導(dǎo)向的目的。控制系統(tǒng)間隔掃描5ms,周期性采集一次AGV的絕對坐標,即可獲得AGV在軌道上任何時刻的絕對位置。位置測量的精度大約在1mm,對相鄰兩次采集的絕對位置進行差分計算該時間段的AGV的差分速度,速度的測量精度跟采樣頻率有關(guān),調(diào)整采樣周期,速度測量誤差可控制在30mm/s以內(nèi);其操作過程示意圖,如圖9。
本圖像定位自動導(dǎo)向方法已在電商自動倉庫中獲得驗證,具有良好的實用價值和應(yīng)用前景,可推廣到堆垛機器人等的貨物定位、餐廳送餐機器人的快速定位導(dǎo)向、自動化商店內(nèi)商品的定位存取等領(lǐng)域,從而將貨物商品快速地擺放到指定位置;與傳統(tǒng)的圖像定位自動導(dǎo)向方法相比,具有反應(yīng)速度快、定位精確等優(yōu)點。
圖像定位自動導(dǎo)向確定設(shè)備在導(dǎo)航地圖的坐標信息,是設(shè)備定點輸送的關(guān)鍵環(huán)節(jié),由于通過高速攝像機CCD采集二維碼圖像信息,所獲得的關(guān)鍵數(shù)據(jù)有限,需要結(jié)合陀螺儀、避障傳感器及導(dǎo)航調(diào)度軟件等確定設(shè)備與其它設(shè)備的相對位置,及時控制設(shè)備移動車速、方向等避免相撞與干擾,需要根據(jù)系統(tǒng)綜合考慮。