張波波,李明偉,徐舒宇
(1.大連理工大學(xué)電信學(xué)部,遼寧大連 116024;2.大連65044部隊(duì),遼寧大連 116024)
?
機(jī)械手嵌入式視覺系統(tǒng)
張波波1,李明偉1,徐舒宇2
(1.大連理工大學(xué)電信學(xué)部,遼寧大連 116024;2.大連65044部隊(duì),遼寧大連 116024)
設(shè)計(jì)了一種基于ARM和FPGA技術(shù),針對(duì)傳送帶上塊狀物料的按規(guī)則有序擺放問題,能為機(jī)械手提供定位定向數(shù)據(jù)的嵌入式視覺系統(tǒng)。系統(tǒng)前端通過FPGA驅(qū)動(dòng)傳感器采集圖像并進(jìn)行初步處理,后端以ARM9(s3c2440)為主控制器,識(shí)別物料目標(biāo),計(jì)算定位定向數(shù)據(jù),將數(shù)據(jù)發(fā)送至機(jī)械手控制器,兩端并行運(yùn)算。實(shí)驗(yàn)表明該系統(tǒng)能對(duì)傳送帶上物料塊快速準(zhǔn)確的進(jìn)行定位和定向,滿足精度和實(shí)時(shí)性要求同時(shí)使設(shè)備小型化。
嵌入式技術(shù);視覺系統(tǒng);機(jī)械手
在生產(chǎn)線物料傳輸過程中存在一些高度重復(fù)且需要一定智能性的物料有序擺放問題,往往需要耗費(fèi)大量的人力,使用自動(dòng)化機(jī)械設(shè)備能夠減少人力使用,提高生產(chǎn)的效率。目前,機(jī)器手視覺系統(tǒng)的實(shí)現(xiàn)大多使用微機(jī)為數(shù)據(jù)處理平臺(tái),采用專用CCD相機(jī),成本較高,設(shè)備體積較大[1-2]。針對(duì)這種現(xiàn)狀,本文設(shè)計(jì)了一種嵌入式機(jī)械手視覺系統(tǒng),該系統(tǒng)能夠完成特征識(shí)別、標(biāo)定后的空間幾何量測(cè)量和控制的功能,特點(diǎn)是僅僅作為系統(tǒng)的一個(gè)外設(shè),體積小、性價(jià)比高、便于批量化生產(chǎn)。
機(jī)械手系統(tǒng)和視覺系統(tǒng)聯(lián)機(jī)整體示意圖如圖1所示。
圖1 系統(tǒng)整體示意圖
圖1中,光電開關(guān)能夠檢測(cè)物料移動(dòng)位置,并作為曝光觸發(fā)信號(hào)連接到相機(jī)裝置內(nèi),物料塊運(yùn)動(dòng)至光電開關(guān)處,會(huì)觸發(fā)光電開關(guān),相機(jī)裝置在收到觸發(fā)信號(hào)后延時(shí)一定時(shí)間,等物料塊進(jìn)入相機(jī)視野后曝光,采集物料圖像,對(duì)圖像進(jìn)行處理,識(shí)別物料塊并計(jì)算物料塊空間坐標(biāo)和方向數(shù)據(jù),最后將數(shù)據(jù)通過局域以太網(wǎng)發(fā)送至機(jī)械手控制器。機(jī)械手控制器移動(dòng)機(jī)械手吸盤到機(jī)械手操作區(qū)指定位置抓取物料塊,然后吸盤旋轉(zhuǎn)一定角度使物料塊標(biāo)記朝向統(tǒng)一方向,最后釋放物料塊到下一流程生產(chǎn)線上。
視覺系統(tǒng)組成如圖2所示,主要由圖像采集、圖像預(yù)處理、目標(biāo)識(shí)別與計(jì)算3部分組成。
圖2 視覺系統(tǒng)組成
在圖像采集部分,F(xiàn)PGA驅(qū)動(dòng)圖像傳感器,在適當(dāng)時(shí)刻曝光,采集物料塊圖像。圖像預(yù)處理部分由FPGA對(duì)物料圖像濾波、二值化,檢測(cè)物料塊邊緣,提取邊緣坐標(biāo)并存儲(chǔ)。目標(biāo)識(shí)別與計(jì)算部分由ARM9主控芯片S3C2440分析邊緣坐標(biāo)數(shù)據(jù),識(shí)別出物料及上面的方向標(biāo)志,計(jì)算物料質(zhì)心坐標(biāo)、方向標(biāo)志坐標(biāo),并根據(jù)相機(jī)標(biāo)定參數(shù)進(jìn)行圖像坐標(biāo)與三維空間坐標(biāo)變換,最后將數(shù)據(jù)通過局域以太網(wǎng)發(fā)送至機(jī)械手控制器。
系統(tǒng)硬件主要由圖像傳感器、FPGA和ARM 3部分組成。系統(tǒng)總體硬件結(jié)構(gòu)如圖3所示。
圖3 系統(tǒng)硬件框圖
圖像傳感器采用MT9P031,它是一款CMOS圖像傳感器,具有體積小、質(zhì)量輕、功耗低、易于編程控制等優(yōu)點(diǎn),MT9P031輸出有效圖像尺寸最大為水平2592像素、垂直1944像素[3]。相同視野下,圖像有效像素越多,計(jì)算質(zhì)心時(shí)精度越高,但是當(dāng)圖像太大時(shí),由于數(shù)據(jù)量太大又會(huì)降低系統(tǒng)處理速度,為了兼顧處理速度和計(jì)算精度,通過配置寄存器可動(dòng)態(tài)設(shè)置為全幀全幅或設(shè)置為1280V像素×720H像素。
FPGA采用Spartan-3E系列中的XC3S250E,該芯片片內(nèi)邏輯資源豐富,最高頻率可達(dá)300 MHz[4],能夠滿足本設(shè)計(jì)對(duì)實(shí)時(shí)性的要求。FPGA作為前端的處理器件,接收ARM處理器通過SPI接口發(fā)送的指令并返回器件的工作狀態(tài)給ARM,驅(qū)動(dòng)MT9P031進(jìn)行圖像采集,此外,F(xiàn)PGA還對(duì)圖像數(shù)據(jù)進(jìn)行預(yù)處理,并將數(shù)據(jù)存入存儲(chǔ)器件SRAM中。
ARM采用S3C2440,其內(nèi)部集成了ARM920T核,最高工作頻率可達(dá)533 MHz,外圍資源豐富,便于擴(kuò)展功能[5]。S3C2440外圍連接SDRAM、FLASH、RS232、DM9000網(wǎng)卡。SDRAM作為程序運(yùn)行時(shí)的內(nèi)存使用;FLASH具有掉電非易失的特點(diǎn),用來存儲(chǔ)操作系統(tǒng)及應(yīng)用程序;RS232作為串口,可以用來下載調(diào)試應(yīng)用程序,觀察程序運(yùn)行狀態(tài);DM9000網(wǎng)卡作為通信接口與上位機(jī)測(cè)試軟件和機(jī)械手控制器通信。
S3C2440是本設(shè)計(jì)的主控制器件,它與FPGA共享存儲(chǔ)器件SRAM[6]。FPGA采集數(shù)據(jù)時(shí),連接S3C2440地址線的管腳為高阻態(tài),ARM將不能讀取數(shù)據(jù),F(xiàn)PGA采集數(shù)據(jù)完畢后,將地址線切換到ARM上,此時(shí)對(duì)于ARM來說,F(xiàn)PGA是透明的,SRAM通過FPGA直接連接到ARM上,如圖4所示。
圖4 共享存儲(chǔ)示意圖
在傳送帶裝置上適當(dāng)位置安裝光電開關(guān),每當(dāng)光電信號(hào)被觸發(fā)產(chǎn)生一個(gè)電平變化,表示有物料已經(jīng)到位,根據(jù)傳送帶速度設(shè)定適當(dāng)延時(shí)使物料進(jìn)入相機(jī)視野時(shí)恰好進(jìn)行曝光。
該系統(tǒng)程序分為FPGA程序和ARM程序2部分。
3.1 FPGA程序設(shè)計(jì)
FPGA程序有5個(gè)模塊:SPI通信模塊、傳感器配置、曝光控制、圖像預(yù)處理、SRAM讀寫控制。SPI通信模塊接收ARM發(fā)送的配置參數(shù);傳感器配置模塊根據(jù)參數(shù)配置圖像傳感器;曝光控制模塊檢測(cè)光電開關(guān)信號(hào),產(chǎn)生傳感器曝光信號(hào);圖像預(yù)處理模塊對(duì)圖像數(shù)據(jù)濾波消除噪聲干擾,然后二值化、檢測(cè)物料目標(biāo)邊緣,將邊緣處坐標(biāo)以坐標(biāo)對(duì)的形式存入SRAM中。
3.2 嵌入式系統(tǒng)
ARM采用嵌入式Linux操作系統(tǒng),該操作系統(tǒng)以其開放源代碼、可靈活裁剪的內(nèi)核、支持的硬件廣泛、開發(fā)資源眾多等特點(diǎn),在嵌入式領(lǐng)域得到廣泛應(yīng)用[7]。系統(tǒng)上電后,首先執(zhí)行一段引導(dǎo)程序,完成硬件初始化,引導(dǎo)Linux內(nèi)核加載到內(nèi)存中,然后運(yùn)行Linux內(nèi)核并掛載文件系統(tǒng),再然后加載驅(qū)動(dòng)模塊,有SRAM驅(qū)動(dòng)、SPI驅(qū)動(dòng)、I/O口驅(qū)動(dòng),這三個(gè)驅(qū)動(dòng)模塊提供了讀寫SRAM、SPI、GPIO的操作接口,最后運(yùn)行應(yīng)用程序,完成系統(tǒng)功能,如圖5所示。
圖5 嵌入式系統(tǒng)運(yùn)行流程
3.3 應(yīng)用程序流程
嵌入式系統(tǒng)中的應(yīng)用程序分為主線程和工作線程,如圖6所示。
(a)主線程
(b)工作線程
主線程首先進(jìn)行系統(tǒng)初始化,然后與對(duì)方建立網(wǎng)絡(luò)連接,判斷接收數(shù)據(jù)內(nèi)容是相機(jī)參數(shù)還是線程控制指令,執(zhí)行存儲(chǔ)參數(shù)或創(chuàng)建/停止線程操作。
工作線程初始化完成后,讀取相機(jī)參數(shù),通過SPI接口將相機(jī)參數(shù)發(fā)送給FPGA,延時(shí)一定時(shí)間等待FPGA初始化。然后發(fā)送開始曝光指令,等待FPGA返回指令,讀取共享存儲(chǔ)SRAM中的數(shù)據(jù)。最后依次調(diào)用坐標(biāo)計(jì)算子程序、坐標(biāo)轉(zhuǎn)換子程序,并將結(jié)果數(shù)據(jù)通過以太網(wǎng)發(fā)送。工作線程在運(yùn)行時(shí)檢查線程停止標(biāo)志判斷是否停止運(yùn)行。
3.4 圖像質(zhì)心計(jì)算方法
該方法的主要功能是根據(jù)FPGA預(yù)處理后的坐標(biāo)對(duì)數(shù)據(jù)來判斷連通性,計(jì)算目標(biāo)的質(zhì)心坐標(biāo)值及方向標(biāo)志中心坐標(biāo)值。預(yù)處理的坐標(biāo)對(duì)數(shù)據(jù)包含目標(biāo)的邊緣信息,格式為(X1,X2,Y),X1,X2分別表示一個(gè)掃描線段頭部列坐標(biāo)和掃描線段尾部的列坐標(biāo),Y表示這個(gè)線段的行坐標(biāo)。
計(jì)算步驟如下:
(1)從第i個(gè)線段的Y坐標(biāo)開始。若Y不為0,表示沒有遍歷過該線段,將該線段作為目標(biāo)的起始線段,若為0,表示已經(jīng)遍歷過,跳過此線段。
(2)取第i+1個(gè)線段坐標(biāo),先判斷是否滿足連通條件:若滿足,再區(qū)分是方向標(biāo)志線段還是目標(biāo)內(nèi)普通線段,分別統(tǒng)計(jì)符合條件線段行數(shù)、像素個(gè)數(shù)等值,并將遍歷過的線段Y值置0,取下一個(gè)線段,繼續(xù)步驟(2);若不滿足,執(zhí)行(3)。
(3)根據(jù)步驟(2)中的統(tǒng)計(jì)值計(jì)算質(zhì)心坐標(biāo)和方向標(biāo)志中心坐標(biāo),存入緩沖區(qū),然后執(zhí)行(1),直至所有坐標(biāo)都被遍歷。
3.5 坐標(biāo)值轉(zhuǎn)換方法
根據(jù)相機(jī)線性透視投影模型,從二維圖像坐標(biāo)轉(zhuǎn)換為三維空間坐標(biāo)首先需求取相機(jī)內(nèi)、外部參數(shù)。
圖7 透視投影模型
圖7中,三維空間中一點(diǎn)P(XW,YW,ZW) 投影到圖像平面上點(diǎn)p(u,v)的變換公式如下[8]:
(1)
式中:ax,ay,u0,v0為相機(jī)內(nèi)參數(shù);R為旋轉(zhuǎn)矩陣;t為平移向量;M1為內(nèi)參矩陣;M2為外參數(shù)矩陣;s為常數(shù)因子。
傳統(tǒng)求參數(shù)方法利用三維立體靶標(biāo),相當(dāng)于已知靶標(biāo)上面各點(diǎn)的三維空間坐標(biāo)和圖像坐標(biāo),直接求取未知的相機(jī)內(nèi)外參數(shù)矩陣。由于制作精度很高的立體靶標(biāo)成本較高,該方法在實(shí)際應(yīng)用中受到很大的限制[8]。文獻(xiàn)[9]給出一種基于平面靶標(biāo)的方法。該方法利用一種平面棋盤格作為靶標(biāo),假設(shè)靶標(biāo)平面位于空間坐標(biāo)系XWOWYW的XY平面上,即Z=0,靶標(biāo)平面上點(diǎn)P(XW,YW,0)和圖像坐標(biāo)之間變換公式為[8]
(2)
式中:ax,ay,u0,v0為相機(jī)內(nèi)參數(shù);r1,r2分別為旋轉(zhuǎn)矩陣R的第1列和第2列;t為平移向量;s為常數(shù)因子。
根據(jù)文獻(xiàn)[9]中求相機(jī)標(biāo)定參數(shù)的原理,利用Matlab軟件中calib工具箱求解上述公式中的內(nèi)外參數(shù)[10]。
計(jì)算步驟如下:
(1)采集N(N≥10)幅棋盤格圖像,每幅圖中棋盤格位姿都不相同;
(2)手工標(biāo)定棋盤最外圍4個(gè)頂點(diǎn),修改參數(shù),使所有角點(diǎn)都盡可能被準(zhǔn)確標(biāo)出;
(3)計(jì)算內(nèi)部參數(shù),根據(jù)誤差結(jié)果,選取誤差最大的圖像,反復(fù)調(diào)整數(shù)次,減小誤差;
(4)取一幅平放在傳輸帶上的棋盤格圖像,計(jì)算外部參數(shù),這樣將傳送帶平面作為三維坐標(biāo)系的xy平面,z軸垂直于傳送帶平面。物料塊在傳送帶上的運(yùn)動(dòng)可視為在xy平面內(nèi)的運(yùn)動(dòng)。
求解出相機(jī)內(nèi)外參數(shù)后,通過上位機(jī)將參數(shù)發(fā)送給ARM存儲(chǔ)備用,ARM在工作線程中坐標(biāo)轉(zhuǎn)換子程序主要根據(jù)式(2)和相機(jī)內(nèi)外參數(shù)完成。
利用本文設(shè)計(jì)的視覺系統(tǒng)完成實(shí)驗(yàn),標(biāo)定用棋盤大小為8×13,每個(gè)格子尺寸20 mm×20 mm,圖像大小為1 280×720。
實(shí)驗(yàn)結(jié)果如表1所示。由表1數(shù)據(jù)可看出,系統(tǒng)精度在1 mm以內(nèi)。
表1 視覺系統(tǒng)輸出結(jié)果比較
圖像坐標(biāo)/像素系統(tǒng)計(jì)算的三維坐標(biāo)/mm真實(shí)三維坐標(biāo)/mm344.413,137.448-0.017,19.9900,20412.586,201.92119.876,40.01720,40615.428,331.01860.092,99.98460,100816.032,392.40379.894,159.91480,1601018.956,586.402139.929,219.689140,220
注:因設(shè)傳送帶表面為xy平面,表中三維坐標(biāo)z坐標(biāo)均為0 mm。
本文基于圖像的二值化、邊緣檢測(cè)、質(zhì)心計(jì)算和相機(jī)標(biāo)定方法,結(jié)合實(shí)際生產(chǎn)過程中對(duì)物料傳輸?shù)木唧w需求設(shè)計(jì)出一種能夠?yàn)闄C(jī)械手提供定位定向數(shù)據(jù)的嵌入式視覺系統(tǒng),該系統(tǒng)定位精度高,體積小,成本低,應(yīng)用前景廣闊。
[1] 于宇.基于圖像的視覺伺服機(jī)器人系統(tǒng):[學(xué)位論文].哈爾濱:哈爾濱工業(yè)大學(xué),2007.
[2] 段彥婷.機(jī)械臂視覺伺服系統(tǒng)的研究:[學(xué)位論文].哈爾濱:哈爾濱工業(yè)大學(xué),2008.
[3] Micron Tech.MT9P031:1/2.5-inch 5Mp Digital Image Sensor[EB/OL].[2007- 09-16].http://www.micron.com/ima-ging.
[4] XILINX.Spartan-3E FPGA Family Com- plete Data Sheet.2005.
[5] SAMSUNG Electronics.S3C2440A 32- BIT CMOS MICROCONTROL - LER USER'S MANUAL Revision 1.2004.
[6] 關(guān)杰.嵌入式網(wǎng)絡(luò)圖像處理系統(tǒng)的實(shí)現(xiàn):[學(xué)位論文].大連:大連理工大學(xué),2010.
[7] 韋東山.嵌入式Linux應(yīng)用開發(fā)完全手冊(cè).北京:人民郵電出版社,2008.
[8] 張廣軍.機(jī)器視覺上.北京:科學(xué)出版社,2005.
[9] ZHANG Z Y.A flexible new tec- hnique for camera calibration .IEEE Trans,Pattern Analysis and Machine Intelligence,2000,22(11): 1330~1334.
[10] BOUGUET J Y.Camera Calibr- ation Toolbox for Matlab [EB/OL].(2004.10.15)[2013.12.02].http://www.vision.caltech.edu/ bouguetj/calib_doc/htmls/example.html.
Embedded Vision System of Manipulator
ZHANG Bo-bo1,LI Ming-wei1,XU Shu-yu2
(1. College of Electronic Engineering,Dalian University of Technology,Dalian 116024,China; 2.Dalian 65044 Troops,Dalian 116024,China)
An embedded vision system based on technology of ARM and FPGA was designed to resolve the difficulty of sorting lump materials on conveyor. It could provide positioning and orientation data for manipulator. In frontend of the system, FPGA drove image sensor to acquire the images and processed data initially. In backend, the main controller ARM9 (s3c2440) recognized materials, calculated positioning and orientation data, and sent data to manipulator controller. These two parts worked parallelly. The experiments show that this system can orientate lump material on conveyor rapidly and accurately, thus meeting accuracy and real-time demands, and miniaturizing equipments at same time.
embedded technology; vision system; manipulator;
2015-01-13 收修改稿日期:2015-07-12
TP274.2
A
1002-1841(2015)10-0079-03