(天津科技大學(xué),天津市河西區(qū),300202) 文婉欣 張?chǎng)?白 凈
關(guān)鍵字 機(jī)器視覺(jué);圖像處理;標(biāo)定
如果要讓機(jī)器人完成抓取,需要通過(guò)視覺(jué)知道所抓物體的具體位置,本文中我們用相機(jī)來(lái)模擬機(jī)器人的視覺(jué)。在本系統(tǒng)中,相機(jī)固定安裝,通過(guò)相機(jī)獲取物體的圖像,對(duì)物體的圖像采集成功后,再對(duì)圖像進(jìn)行灰度圖閾值處理、高通濾波、邊緣提取等預(yù)處理;進(jìn)行單目視覺(jué)定位,通過(guò)獲得物體相對(duì)于相機(jī)的位置以及相機(jī)相對(duì)于機(jī)械臂的位置,以得到物體相對(duì)于機(jī)械臂的位姿,最終獲得物體在圖像中的位姿。為了保證位姿測(cè)量的準(zhǔn)確性,就需要標(biāo)定系統(tǒng)的內(nèi)外參數(shù),即進(jìn)行相機(jī)標(biāo)定和手眼標(biāo)定:使其完成在世界坐標(biāo)系、相機(jī)坐標(biāo)系、圖像坐標(biāo)系、像素坐標(biāo)系下的依次轉(zhuǎn)換。之后再傳送位姿,將工件在機(jī)械臂坐標(biāo)系中的位姿傳送至機(jī)械臂,利用c++編程引導(dǎo)機(jī)械臂完成工件抓取。
圖1 整體流程圖
首先,標(biāo)定相機(jī)的內(nèi)外參數(shù),內(nèi)參數(shù)主要是相機(jī)的基礎(chǔ)矩陣camera matrix=和畸變向量Distortion coefficients=(k1k2p1p2k3)。外參數(shù)主要是相機(jī)的旋轉(zhuǎn)矩陣
相機(jī)標(biāo)定坐標(biāo)系主要是通過(guò)計(jì)算機(jī)視覺(jué)技術(shù)來(lái)進(jìn)行數(shù)據(jù)和參數(shù)的采集,然后再利用計(jì)算機(jī)技術(shù)將參數(shù)進(jìn)行三維建模,從而使整個(gè)空間的三維坐標(biāo)得到復(fù)原。首先需要相機(jī)從不同方位(至少兩個(gè))來(lái)觀測(cè)標(biāo)定板,加載好圖像后設(shè)定參考位姿,創(chuàng)建一個(gè)投射圖來(lái)描述圖像平面與坐標(biāo)軸系統(tǒng)中平面Z為零之間的映射。因?yàn)橄鄼C(jī)的成像原理是小孔成像,通過(guò)映射將三維顯示世界轉(zhuǎn)變?yōu)槎S圖像。二維點(diǎn)用m=[u,v]T,三維點(diǎn)用M=[X,Y,Z]T表示。x?表示增廣向量,最后一個(gè)元素加1:m?=[u,v,1]T,Mˉ=[X,Y,1]T。三位點(diǎn)M和它圖像投影點(diǎn)m關(guān)系如下:
式中s是任意的比例因子。(R,t)稱(chēng)為外參,R是旋轉(zhuǎn)矩陣,t是平移矩陣。A是相機(jī)內(nèi)參矩陣,(u0,v0)是坐標(biāo)的主點(diǎn),α和β是圖像在u和v軸的比例因子,c是描述兩個(gè)坐標(biāo)軸傾斜角的參數(shù)。一般情況下,假設(shè)模型平面在世界坐標(biāo)系中的Z坐標(biāo)為零,R的第i列旋轉(zhuǎn)矩陣為r,從公式可知,當(dāng)Z=0 時(shí),M 可以表示為M=同樣的因此點(diǎn)M和它的在圖像上映射點(diǎn)m 關(guān)系用單位矩陣H 聯(lián)系。sm=H
因?yàn)閞1r2是正交的,可以得出
根據(jù)此矩陣求出封閉解。以上是同各國(guó)最小化代數(shù)距離獲得,因此需要對(duì)它運(yùn)用最大似然估計(jì)進(jìn)行完善,最大似然估計(jì)可以通過(guò)函數(shù)求出最小值得到。
相機(jī)鏡頭產(chǎn)生的徑向畸變也需要進(jìn)行處理,先輸入圖像的中心點(diǎn)坐標(biāo),再運(yùn)用了張氏標(biāo)定法得到矯正后的圖像主點(diǎn),計(jì)算輸出圖像與矯正后圖像的寬高縮放比映射到矯正后圖像坐標(biāo),并將該坐標(biāo)通過(guò)張氏標(biāo)定法映射到輸入圖像坐標(biāo),然后用雙線(xiàn)性插值進(jìn)行優(yōu)化,將源圖像和目標(biāo)圖像集合中心對(duì)齊,把浮點(diǎn)運(yùn)算轉(zhuǎn)換成整數(shù)運(yùn)算。
圖像處理也是視覺(jué)引導(dǎo)機(jī)器人運(yùn)動(dòng)過(guò)程中的一個(gè)重要環(huán)節(jié),讓機(jī)器人準(zhǔn)確獲取目標(biāo)圖像的形狀特征才能正確指導(dǎo)機(jī)器人運(yùn)動(dòng)。在本系統(tǒng)中,運(yùn)用halcon,首先進(jìn)行灰度轉(zhuǎn)化,先轉(zhuǎn)為RGB 三通道,然后轉(zhuǎn)為HSV 通道,以便于更好的選取選區(qū);之后進(jìn)行粗定位,對(duì)圖像進(jìn)行一次處理,大概找出定位區(qū)域,選取合適的通道在灰度直方圖中進(jìn)行閾值處理;然后進(jìn)行精定位,一般畫(huà)出ROI區(qū)域,進(jìn)行二次處理;再次閾值,精確定位選區(qū);做連通域,創(chuàng)建合適的結(jié)構(gòu)元素,進(jìn)行膨脹和取開(kāi)運(yùn)算得到A 圖像;根據(jù)特征直方圖多個(gè)特征取值,最后確定精確識(shí)別區(qū)得到圖像B;取AB交集得到圖像C;最后對(duì)圖像C進(jìn)行去燥,為后續(xù)機(jī)器人的抓取工作提供信息。
圖像處理完成后,對(duì)物體進(jìn)行手眼標(biāo)定,相機(jī)知道的是像素坐標(biāo),機(jī)械臂是空間坐標(biāo)系,所以手眼標(biāo)定就是得到像素坐標(biāo)系和空間機(jī)械臂坐標(biāo)系的坐標(biāo)轉(zhuǎn)化關(guān)系。在實(shí)際控制中,相機(jī)采集到目標(biāo)物在圖像中像素位置后,通過(guò)標(biāo)定好的坐標(biāo)轉(zhuǎn)換矩陣將相機(jī)的像素坐標(biāo)變換到機(jī)械臂的空間坐標(biāo)系中,然后根據(jù)機(jī)械臂坐標(biāo)系,計(jì)算出各個(gè)電機(jī)該如何運(yùn)動(dòng),從而控制機(jī)械臂到達(dá)指定位置。
相機(jī)標(biāo)定和圖像處理及標(biāo)定完成之后,得到了相機(jī)拍攝時(shí)物體的準(zhǔn)確位置,此時(shí)需要引導(dǎo)機(jī)器人來(lái)抓取物體。將halcon中圖像采集與處理的程序?qū)С鲛D(zhuǎn)化為C++格式,再將其程序在VS2010 中打開(kāi)。此時(shí)將程序分為三個(gè)部分,第一部分是函數(shù)聲明部分,第二部分是函數(shù)程序部分,第三部分是整體函數(shù)調(diào)用部分。這三部分程序在halcon內(nèi)部編輯時(shí)所用到的算子在導(dǎo)出成為C++程序之后都變成了封裝好的函數(shù)。為了使機(jī)械臂二次開(kāi)發(fā)抓取所需的物體,本系統(tǒng)采用了SDK開(kāi)發(fā)包在C++開(kāi)發(fā)平臺(tái)進(jìn)行開(kāi)發(fā)。將SDK包導(dǎo)入到新建的C++工程中,添加頭文件,進(jìn)行網(wǎng)絡(luò)初始化,獲取機(jī)械臂實(shí)例化,等待機(jī)械臂進(jìn)行連接,對(duì)機(jī)械臂進(jìn)行初始化、解鎖、設(shè)置臂長(zhǎng),使機(jī)械臂運(yùn)動(dòng)抓取所需物體。
相機(jī)相當(dāng)于物體的“眼睛”,用相機(jī)對(duì)物體進(jìn)行實(shí)時(shí)采集,可以解決由于外界環(huán)境變化時(shí),機(jī)器人錯(cuò)誤工作的問(wèn)題。我們對(duì)物體進(jìn)行位姿測(cè)量、相機(jī)標(biāo)定、手眼標(biāo)定、圖像處理,最后再傳送位姿至機(jī)械臂等一系列操作,引導(dǎo)機(jī)械臂完成物體抓取。在這過(guò)程中,會(huì)出現(xiàn)一些系統(tǒng)誤差和隨機(jī)誤差,只有不斷優(yōu)化,減少系統(tǒng)誤差和隨機(jī)誤差,直至接近理想化目標(biāo)。