盧泉奇+苗同升+汪地+楊浩+宗殿棟
摘要: 介紹一種特定的抓取式機(jī)械手的機(jī)械結(jié)構(gòu),利用HALCON圖像處理軟件中單目視覺ETH(EyetoHand)系統(tǒng)手眼標(biāo)定函數(shù)對(duì)機(jī)械手與攝像機(jī)系統(tǒng)進(jìn)行手眼標(biāo)定實(shí)驗(yàn)。利用獲得的標(biāo)定數(shù)據(jù)進(jìn)行HALCON的圖像處理,并將圖像處理程序整合進(jìn)VS2010平臺(tái)與其它軟件聯(lián)合完成機(jī)械手視覺抓取系統(tǒng)的二次開發(fā)。最后用機(jī)械手視覺抓取實(shí)驗(yàn)來驗(yàn)證研究結(jié)果。
關(guān)鍵詞: HALCON; 機(jī)器視覺; 手眼標(biāo)定; 圖像處理
中圖分類號(hào): TH 74文獻(xiàn)標(biāo)志碼: Adoi: 10.3969/j.issn.10055630.2014.06.006
引言根據(jù)攝像機(jī)與機(jī)器人的相互位置的不同,機(jī)器人視覺系統(tǒng)可分為EyeinHand 系統(tǒng)和EyetoHand 系統(tǒng)。EyeinHand 系統(tǒng)的攝像機(jī)安裝在機(jī)器人手部末端,在機(jī)器人工作過程中隨機(jī)器人一起運(yùn)動(dòng)。EyetoHand 系統(tǒng)的攝像機(jī)安裝在機(jī)器人本體外的固定位置,在機(jī)器人工作過程中不隨機(jī)器人一起運(yùn)動(dòng)[1]。視覺處理項(xiàng)目中的關(guān)鍵技術(shù)是攝像機(jī)的手眼標(biāo)定與圖像處理。HALCON是德國(guó)MVtec 公司開發(fā)的圖像處理軟件,具有完善的綜合標(biāo)準(zhǔn)軟件庫和機(jī)器視覺集成開發(fā)環(huán)境,并提供了豐富的函數(shù)庫,包括blob 分析、形態(tài)學(xué)、模式匹配、測(cè)量、三維目標(biāo)識(shí)別和立體視覺等。它支持Windows、Linux和Solaris 操作環(huán)境,整個(gè)函數(shù)庫可以用C,C++,C#,Visual Basic和Delphi等多種普通編程語言開發(fā),有效提高了開發(fā)效率,并且執(zhí)行速度快,具有良好的跨平臺(tái)移植性[2]。因此,其中的算法可以很好地完成攝像機(jī)手眼標(biāo)定與圖像處理的任務(wù)。運(yùn)動(dòng)控制器方面,選用GALIL公司推出的具有Ethernet/RS232通信接口的獨(dú)立型數(shù)字運(yùn)動(dòng)控制器DMC21x3/DMC21x2系列產(chǎn)品,特別適合于那些對(duì)價(jià)格及安裝空間特別苛求的應(yīng)用領(lǐng)域。所提供的通信驅(qū)動(dòng)庫支持當(dāng)前所有Windows版本、DOS、Linux等操作系統(tǒng),可以很方便地進(jìn)行二次開發(fā)。1機(jī)械手工作原理機(jī)器人本體采用本實(shí)驗(yàn)室自主研制的非線性機(jī)器人。該機(jī)器人的底座關(guān)節(jié)和手腕關(guān)節(jié)是由空心杯電機(jī)經(jīng)減速器減速后帶動(dòng)關(guān)節(jié)運(yùn)動(dòng),而另外的四個(gè)關(guān)節(jié)則采用了一種非線性驅(qū)動(dòng)結(jié)構(gòu),也就是通過電機(jī)的旋轉(zhuǎn)帶動(dòng)與之相連的絲桿產(chǎn)生直線運(yùn)動(dòng),進(jìn)而驅(qū)動(dòng)作為支點(diǎn)的螺母以改變相應(yīng)關(guān)節(jié)角度。如果暫時(shí)不考慮電機(jī)關(guān)節(jié)驅(qū)動(dòng)機(jī)構(gòu),根據(jù)DH方法[3]可建立機(jī)器人手臂的各連桿的參考坐標(biāo)系,如圖1所示。研制的六自由度工業(yè)機(jī)器人各關(guān)節(jié)的DH參數(shù)見表1。2視覺系統(tǒng)標(biāo)定
2.1HALCON中的攝像機(jī)標(biāo)定對(duì)攝像機(jī)進(jìn)行標(biāo)定就是為了獲取攝像機(jī)的內(nèi)部參數(shù)[4],而參數(shù)的精確性直接影響后續(xù)的結(jié)果。HALCON軟件內(nèi)部已經(jīng)封裝了這類標(biāo)定算子,只要調(diào)用camera_calibration(::NX,NY,NZ,NRow,NCol,StartCamParam,NStartPose,EstimateParams:CameraParam,NFinalPose,Errors)并輸入所需的入口參數(shù)就能得到攝像機(jī)內(nèi)部參數(shù)。其具體過程如下:(1)采集一定數(shù)量圖片,一般為8~15幅圖片(圖中需含有標(biāo)定板)。(2)輸入標(biāo)準(zhǔn)標(biāo)定板參數(shù)(200 mm邊長(zhǎng)49點(diǎn)陣),代碼為:CalTabFile:='caltab_200 mm.descr';caltab_points(CalTabFile,X,Y,Z)標(biāo)定板中各個(gè)黑點(diǎn)的位置是以標(biāo)定板正中心為參考原點(diǎn)。(3)輸入初始相機(jī)內(nèi)部參數(shù)(參數(shù)為不準(zhǔn)確的預(yù)估值),代碼為:CameraParam:[Focus,Kappa,Sx,Sy,Cx,Cy,ImageWidth,ImageHeight](4)采集圖片中的標(biāo)定板位姿信息。(5)進(jìn)行相機(jī)標(biāo)定算法,代碼為:camera_calibration(X,Y,Z,NRow,NCol,StartCamParam,StartPoses,'all',CamParam,NFinalPose,Errors)。(6)輸出標(biāo)定后相機(jī)內(nèi)部參數(shù),代碼為:write_cam_par(CamParam,DataNameStart+'tu_campar.dat')。
2.2機(jī)器人的手眼標(biāo)定使用HALCON軟件進(jìn)行機(jī)器人手眼標(biāo)定目的是為了得到機(jī)器人基準(zhǔn)坐標(biāo)系相對(duì)于攝像頭坐標(biāo)系的位姿。該位姿參數(shù)的精確性也會(huì)直接影響到機(jī)械手對(duì)目標(biāo)點(diǎn)的定位精度。在HALCON中實(shí)現(xiàn)手眼標(biāo)定的算子是hand_eye_calibration(NX,NY,NZ,NRow,NCol,NumPoints,RobotPoses,CamParam,'nonlinear','error_pose',CameraPose,CalibrationPose,PoseError),其輸入輸出參數(shù)有:X,Y,Z,Row,Col,NumPoints。在進(jìn)行手眼系統(tǒng)的標(biāo)定時(shí),必須提供標(biāo)定板中所有黑色圓點(diǎn)的三維坐標(biāo)值及其對(duì)應(yīng)的圖像像素值。在每幅標(biāo)定圖像中,還必須提供黑色圓點(diǎn)的三維坐標(biāo)值,對(duì)應(yīng)的像素值以及三維點(diǎn)的個(gè)數(shù)。 RobotPoses:每幅圖片中已知的機(jī)器人的位姿,在此為機(jī)器人末端在機(jī)器人坐標(biāo)系中的位姿。 CameraParam:相機(jī)的內(nèi)部參數(shù)。 Method:手眼系統(tǒng)標(biāo)定所使用的方法,默認(rèn)為nonlinear。QualityType:所得結(jié)果的評(píng)價(jià)類型。CameraPose:計(jì)算得出的機(jī)器人基準(zhǔn)坐標(biāo)系相對(duì)于相機(jī)坐標(biāo)系的的位姿。CalibrationPose:計(jì)算得出的標(biāo)定物在機(jī)器人基準(zhǔn)坐標(biāo)系中的位姿。Quality:輸出結(jié)果的評(píng)價(jià)。
2.3標(biāo)定板特征信息的提取在兩個(gè)標(biāo)定過程中,標(biāo)定板特征信息的提取都是必不可少的。本課題采用HALCON提供的高精度標(biāo)定板,其外觀如圖2所示。標(biāo)定板在一個(gè)黑色方框內(nèi)包含7行7列共49個(gè)相同的圓靶,以每個(gè)圓心作為標(biāo)定點(diǎn),定義世界坐標(biāo)系原點(diǎn)在正中央圓心處,z 軸垂直標(biāo)定板向上,坐標(biāo)系方向可由位于黑框左上角的三角塊唯一確定[5]。使用攝像機(jī)對(duì)放置在檢測(cè)平面上不同位置的標(biāo)定板拍照,且攝像機(jī)位置固定,在保證內(nèi)部參數(shù)和相對(duì)位姿參數(shù)不變的前提下,繼續(xù)拍照得到若干張圖像。具體標(biāo)定算法流程如圖3所示,其步驟為:(1)讀取由攝像機(jī)采集到的彩色圖片;(2)將彩色圖片轉(zhuǎn)化為灰度圖片;(3)通過find_caltab()函數(shù)找到標(biāo)定板的區(qū)域;(4)find_marks_and_pose()函數(shù)可提取標(biāo)定板中的標(biāo)定點(diǎn)的坐標(biāo)。標(biāo)定過程中得到的結(jié)果如圖4所示。
2.4機(jī)器人位姿的獲取在進(jìn)行手眼標(biāo)定時(shí),對(duì)每幅標(biāo)定圖片都需要提供相對(duì)應(yīng)的機(jī)器人的位姿,并且機(jī)器人位姿的精度對(duì)整個(gè)手眼系統(tǒng)的標(biāo)定精度至關(guān)重要。在測(cè)得各關(guān)節(jié)運(yùn)動(dòng)角度后,通過機(jī)器人運(yùn)動(dòng)學(xué)正解公式,得到機(jī)器人末端位姿,再使用HDevelop例程handeye_creat_robot_poses.hdev即可寫出對(duì)應(yīng)的機(jī)器人位姿文件。其具體實(shí)現(xiàn)是調(diào)用input_pose_type()確定機(jī)器人位姿的類型,如圖5所示;調(diào)用input_pose()輸入末端的位姿,如圖6所示,則創(chuàng)建完成HALCON可直接讀取的dat文件。
有很多種輸入的形式,最常用的是xyz的輸入形式,它表示機(jī)械手末端坐標(biāo)系相對(duì)于世界坐標(biāo)系(此即為機(jī)器人基準(zhǔn)坐標(biāo)系)的坐標(biāo)點(diǎn)與三軸旋轉(zhuǎn)角度。同時(shí)考慮以下幾點(diǎn):(1)三軸旋轉(zhuǎn)角度的參考系一直是世界坐標(biāo)系,不是繞某個(gè)軸運(yùn)動(dòng)之后的坐標(biāo)系,且旋轉(zhuǎn)正方向以右手螺旋取得。(2)相機(jī)的xyz軸是被默認(rèn)規(guī)定的,即z軸方向延鏡頭向外,x軸方向?yàn)榇怪眤方向向圖片的正右方,y軸方向以右手螺旋定則確定。(3)機(jī)械手基坐標(biāo)(即世界坐標(biāo)系)的選取中x軸方向須與攝像頭的x軸方向一致,否則結(jié)果會(huì)產(chǎn)生一定偏差,同時(shí)也不利于標(biāo)定結(jié)果的驗(yàn)證。然后按照此流程重復(fù)多遍,得到多組機(jī)器人的位姿文件。在HDevelop中對(duì)機(jī)器人位姿文件的讀取可直接調(diào)用read_pose函數(shù)來實(shí)現(xiàn)。3HALCON圖像處理程序該程序是在HALCON軟件中編譯完成并測(cè)試通過后,再將其轉(zhuǎn)化為MFC中的C++程序。這樣相當(dāng)于在HALCON中進(jìn)行了預(yù)編程,不僅能簡(jiǎn)化C++的編程過程,還能直接對(duì)錯(cuò)誤的結(jié)果進(jìn)行改正,減輕了很大的工作量。以下是采集到目標(biāo)工件圖像后進(jìn)行的圖像處理過程。
3.1讀取標(biāo)定數(shù)據(jù)首先,標(biāo)定數(shù)據(jù)可直接由文件中讀取,其中相機(jī)的參數(shù)可通過read_cam_par函數(shù)讀取相機(jī)參數(shù)文件,相機(jī)坐標(biāo)系與機(jī)器人坐標(biāo)系的關(guān)系可由read_pose函數(shù)來讀取。另外,由于齊次矩陣更便于計(jì)算,在此還要把姿態(tài)轉(zhuǎn)換為齊次矩陣,該變換在HALCON中可直接通過pose_to_hom_mat3d函數(shù)實(shí)現(xiàn)。讀取和變換標(biāo)定數(shù)據(jù)的代碼如下:
3.2確定參考坐標(biāo)系由于本實(shí)驗(yàn)只使用了單個(gè)相機(jī),在未知目標(biāo)工件三維模型的情況下,無法獲取目標(biāo)物體在相機(jī)光軸方向上的深度信息。這就需要在此引入?yún)⒖甲鴺?biāo)系,且讓該參考坐標(biāo)系與目標(biāo)物體的坐標(biāo)系是處在同一個(gè)平面上。這樣就能通過標(biāo)準(zhǔn)的標(biāo)定板信息引入所需的深度信息。其實(shí)際的操作過程為:在放置目標(biāo)物體的平面上放置一HALCON標(biāo)定板,并獲取一幅圖像,通過調(diào)用define_reference_coord_system函數(shù),將該標(biāo)定板坐標(biāo)系定義為參考坐標(biāo)系,代碼如下:
3.3提取抓取區(qū)域與目標(biāo)輪廓對(duì)含有目標(biāo)物體的圖像,首先將其進(jìn)行灰度化處理,然后選取可抓取的區(qū)域范圍,再進(jìn)行閾值化處理,最后進(jìn)行區(qū)域填充與形狀選擇,從而得到目標(biāo)物體(銀白色長(zhǎng)方形鐵塊)。得到目標(biāo)物體后進(jìn)行簡(jiǎn)單的blob分析,其邊界就被轉(zhuǎn)化為XLD輪廓,代碼如下:
3.4抓取姿態(tài)的求取有了抓取點(diǎn)的像素坐標(biāo)值,并且已知了參考坐標(biāo)系在圖中的位置就可以用image_points_to_world_plane算子提取抓取點(diǎn)在參考坐標(biāo)系中的三維坐標(biāo),代碼如下:
image_points_to_world_plane(CamParam,PoseRef,CornersRow,CornersCol,'m',CornersX_ref,CornersY_ref)
CenterPointX_ref:=sum(CornersX_ref)*0.25; CenterPointY_ref:=sum(CornersY_ref)*0.25由于抓取物體就放置在參考平面上,所以抓取點(diǎn)在參考坐標(biāo)系中的姿態(tài),就是要考慮物體繞參考坐標(biāo)系中Z軸的旋轉(zhuǎn)。在抓取時(shí),機(jī)器人末端的抓爪收攏的方向應(yīng)與工件的邊緣垂直,那么兩個(gè)抓取點(diǎn)的連線的傾斜角度就是抓爪應(yīng)該旋轉(zhuǎn)的角度。
4實(shí)驗(yàn)結(jié)果
4.1攝像機(jī)標(biāo)定結(jié)果為了得到更加精確的相機(jī)參數(shù),本課題采集了差異度較大的23幅圖片,在HALCON軟件中得到測(cè)量結(jié)果如下:鏡頭焦距foc:3.52 mm;徑向畸變系數(shù)kappa:938.631;相機(jī)芯片每單元格的寬度Sx:5.490×10-6 m;相機(jī)芯片每單元格的高度Sy:5.500×10-6 m;圖像中心的x坐標(biāo)Cx:244.471;圖像中心的y坐標(biāo)Cy:327.320;圖像寬度:480 pixel;圖像高度:640 pixel。
4.2系統(tǒng)手眼標(biāo)定結(jié)果
為了得到較為精確的測(cè)量結(jié)果,本課題采集了10幅機(jī)械手末端圖片,并計(jì)算了每幅圖片對(duì)應(yīng)的機(jī)械手表2系統(tǒng)手眼標(biāo)定結(jié)果
Tab.2The results of handeye calibration
標(biāo)定變量標(biāo)定結(jié)果標(biāo)定變量標(biāo)定結(jié)果X坐標(biāo)-0.032 33 mX軸旋轉(zhuǎn)角185.449°Y坐標(biāo)-0.771 23 mY軸旋轉(zhuǎn)角2.846°Z坐標(biāo)0.644 75 mZ軸旋轉(zhuǎn)角0.462°
末端位姿。最后經(jīng)過標(biāo)定在HALCON軟件中得出機(jī)械手基座標(biāo)系相對(duì)于攝像機(jī)坐標(biāo)系的位姿,標(biāo)定結(jié)果如表2所示。
4.3機(jī)器人綜合控制平臺(tái)調(diào)試結(jié)果按實(shí)驗(yàn)流程進(jìn)行實(shí)驗(yàn)。首先,根據(jù)已獲取的該手眼系統(tǒng)的標(biāo)定信息和在工件平面上定義的參考坐標(biāo)系,實(shí)時(shí)地采集圖像,并逐步得出工件在參考坐標(biāo)系中的位置,工件上的抓取點(diǎn)坐標(biāo),機(jī)器人的抓取位姿。該過程對(duì)應(yīng)的圖像處理結(jié)果如圖9所示,其中圖9(a)為所定義的參考坐標(biāo)系,圖9(b)為顯示了目標(biāo)物體和參考坐標(biāo)系,圖9(c)顯示了目標(biāo)物體上的抓取點(diǎn),圖9(d)顯示機(jī)器人抓取時(shí)工件所對(duì)應(yīng)的位姿。在完成以上處理之后,就可得出工件目標(biāo)相對(duì)于機(jī)器人基準(zhǔn)坐標(biāo)系位姿:(0.045 03 m,-0.670 38 m,0.287 66 m,115.377°,21.540°,348.155°)
本文將HALCON圖像采集與處理程序、運(yùn)動(dòng)學(xué)逆解程序以及最后的當(dāng)量判斷與發(fā)送程序集成開發(fā),得到了機(jī)器人綜合控制平臺(tái)應(yīng)用軟件。該軟件在已知機(jī)器人目標(biāo)位姿的情況下,按照運(yùn)動(dòng)學(xué)逆問題的求解過程依次得到各運(yùn)動(dòng)關(guān)節(jié)所對(duì)應(yīng)的角度、各推桿在目標(biāo)位姿時(shí)對(duì)應(yīng)的桿長(zhǎng),將其與初始桿長(zhǎng)之差乘以比例系數(shù),即得出每個(gè)電機(jī)所需的運(yùn)動(dòng)當(dāng)量。而后將運(yùn)動(dòng)當(dāng)量以運(yùn)動(dòng)指令形式經(jīng)以太網(wǎng)發(fā)送至運(yùn)動(dòng)控制卡中,則機(jī)器人獲得運(yùn)動(dòng)指令,運(yùn)動(dòng)到目標(biāo)位姿,并進(jìn)行抓取。本實(shí)驗(yàn)室研制的機(jī)器人是根據(jù)實(shí)時(shí)采集的圖像信息來對(duì)目標(biāo)工件進(jìn)行抓取,機(jī)器人抓取實(shí)物圖如圖10所示。5結(jié)論本實(shí)驗(yàn)系統(tǒng)根據(jù)采集到的視覺信息,經(jīng)過圖像處理得到機(jī)器人的目標(biāo)位姿,并由此轉(zhuǎn)化為機(jī)器人各關(guān)節(jié)的控制信號(hào),完成機(jī)器人驅(qū)動(dòng),實(shí)現(xiàn)對(duì)目標(biāo)工件的抓取。以上的實(shí)驗(yàn)流程切實(shí)可行,且實(shí)驗(yàn)結(jié)果達(dá)到了預(yù)期的要求。由此證明本課題所構(gòu)建的基于單目視覺的機(jī)器人控制系統(tǒng)具有較強(qiáng)的實(shí)用價(jià)值。
參考文獻(xiàn):
[1]徐德.機(jī)器人視覺測(cè)量與控制[M].2版.北京:國(guó)防工業(yè)出版社,2011.
[2]閆霞,牛建強(qiáng).基于HALCON軟件的攝像機(jī)標(biāo)定[J].數(shù)字技術(shù)與應(yīng)用.2010(11):112113.
[3]蔡自興.機(jī)器人學(xué)[M].北京:清華大學(xué)出版社,2000.
[4]李洪海,王敬東.攝像機(jī)標(biāo)定技術(shù)研究[J].光學(xué)儀器,2007,29(4):712.
[5]劉源泂,孔建益,王興東,等.雙目立體視覺系統(tǒng)的非線性攝像機(jī)標(biāo)定技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2011,28(9):3398
2.4機(jī)器人位姿的獲取在進(jìn)行手眼標(biāo)定時(shí),對(duì)每幅標(biāo)定圖片都需要提供相對(duì)應(yīng)的機(jī)器人的位姿,并且機(jī)器人位姿的精度對(duì)整個(gè)手眼系統(tǒng)的標(biāo)定精度至關(guān)重要。在測(cè)得各關(guān)節(jié)運(yùn)動(dòng)角度后,通過機(jī)器人運(yùn)動(dòng)學(xué)正解公式,得到機(jī)器人末端位姿,再使用HDevelop例程handeye_creat_robot_poses.hdev即可寫出對(duì)應(yīng)的機(jī)器人位姿文件。其具體實(shí)現(xiàn)是調(diào)用input_pose_type()確定機(jī)器人位姿的類型,如圖5所示;調(diào)用input_pose()輸入末端的位姿,如圖6所示,則創(chuàng)建完成HALCON可直接讀取的dat文件。
有很多種輸入的形式,最常用的是xyz的輸入形式,它表示機(jī)械手末端坐標(biāo)系相對(duì)于世界坐標(biāo)系(此即為機(jī)器人基準(zhǔn)坐標(biāo)系)的坐標(biāo)點(diǎn)與三軸旋轉(zhuǎn)角度。同時(shí)考慮以下幾點(diǎn):(1)三軸旋轉(zhuǎn)角度的參考系一直是世界坐標(biāo)系,不是繞某個(gè)軸運(yùn)動(dòng)之后的坐標(biāo)系,且旋轉(zhuǎn)正方向以右手螺旋取得。(2)相機(jī)的xyz軸是被默認(rèn)規(guī)定的,即z軸方向延鏡頭向外,x軸方向?yàn)榇怪眤方向向圖片的正右方,y軸方向以右手螺旋定則確定。(3)機(jī)械手基坐標(biāo)(即世界坐標(biāo)系)的選取中x軸方向須與攝像頭的x軸方向一致,否則結(jié)果會(huì)產(chǎn)生一定偏差,同時(shí)也不利于標(biāo)定結(jié)果的驗(yàn)證。然后按照此流程重復(fù)多遍,得到多組機(jī)器人的位姿文件。在HDevelop中對(duì)機(jī)器人位姿文件的讀取可直接調(diào)用read_pose函數(shù)來實(shí)現(xiàn)。3HALCON圖像處理程序該程序是在HALCON軟件中編譯完成并測(cè)試通過后,再將其轉(zhuǎn)化為MFC中的C++程序。這樣相當(dāng)于在HALCON中進(jìn)行了預(yù)編程,不僅能簡(jiǎn)化C++的編程過程,還能直接對(duì)錯(cuò)誤的結(jié)果進(jìn)行改正,減輕了很大的工作量。以下是采集到目標(biāo)工件圖像后進(jìn)行的圖像處理過程。
3.1讀取標(biāo)定數(shù)據(jù)首先,標(biāo)定數(shù)據(jù)可直接由文件中讀取,其中相機(jī)的參數(shù)可通過read_cam_par函數(shù)讀取相機(jī)參數(shù)文件,相機(jī)坐標(biāo)系與機(jī)器人坐標(biāo)系的關(guān)系可由read_pose函數(shù)來讀取。另外,由于齊次矩陣更便于計(jì)算,在此還要把姿態(tài)轉(zhuǎn)換為齊次矩陣,該變換在HALCON中可直接通過pose_to_hom_mat3d函數(shù)實(shí)現(xiàn)。讀取和變換標(biāo)定數(shù)據(jù)的代碼如下:
3.2確定參考坐標(biāo)系由于本實(shí)驗(yàn)只使用了單個(gè)相機(jī),在未知目標(biāo)工件三維模型的情況下,無法獲取目標(biāo)物體在相機(jī)光軸方向上的深度信息。這就需要在此引入?yún)⒖甲鴺?biāo)系,且讓該參考坐標(biāo)系與目標(biāo)物體的坐標(biāo)系是處在同一個(gè)平面上。這樣就能通過標(biāo)準(zhǔn)的標(biāo)定板信息引入所需的深度信息。其實(shí)際的操作過程為:在放置目標(biāo)物體的平面上放置一HALCON標(biāo)定板,并獲取一幅圖像,通過調(diào)用define_reference_coord_system函數(shù),將該標(biāo)定板坐標(biāo)系定義為參考坐標(biāo)系,代碼如下:
3.3提取抓取區(qū)域與目標(biāo)輪廓對(duì)含有目標(biāo)物體的圖像,首先將其進(jìn)行灰度化處理,然后選取可抓取的區(qū)域范圍,再進(jìn)行閾值化處理,最后進(jìn)行區(qū)域填充與形狀選擇,從而得到目標(biāo)物體(銀白色長(zhǎng)方形鐵塊)。得到目標(biāo)物體后進(jìn)行簡(jiǎn)單的blob分析,其邊界就被轉(zhuǎn)化為XLD輪廓,代碼如下:
3.4抓取姿態(tài)的求取有了抓取點(diǎn)的像素坐標(biāo)值,并且已知了參考坐標(biāo)系在圖中的位置就可以用image_points_to_world_plane算子提取抓取點(diǎn)在參考坐標(biāo)系中的三維坐標(biāo),代碼如下:
image_points_to_world_plane(CamParam,PoseRef,CornersRow,CornersCol,'m',CornersX_ref,CornersY_ref)
CenterPointX_ref:=sum(CornersX_ref)*0.25; CenterPointY_ref:=sum(CornersY_ref)*0.25由于抓取物體就放置在參考平面上,所以抓取點(diǎn)在參考坐標(biāo)系中的姿態(tài),就是要考慮物體繞參考坐標(biāo)系中Z軸的旋轉(zhuǎn)。在抓取時(shí),機(jī)器人末端的抓爪收攏的方向應(yīng)與工件的邊緣垂直,那么兩個(gè)抓取點(diǎn)的連線的傾斜角度就是抓爪應(yīng)該旋轉(zhuǎn)的角度。
4實(shí)驗(yàn)結(jié)果
4.1攝像機(jī)標(biāo)定結(jié)果為了得到更加精確的相機(jī)參數(shù),本課題采集了差異度較大的23幅圖片,在HALCON軟件中得到測(cè)量結(jié)果如下:鏡頭焦距foc:3.52 mm;徑向畸變系數(shù)kappa:938.631;相機(jī)芯片每單元格的寬度Sx:5.490×10-6 m;相機(jī)芯片每單元格的高度Sy:5.500×10-6 m;圖像中心的x坐標(biāo)Cx:244.471;圖像中心的y坐標(biāo)Cy:327.320;圖像寬度:480 pixel;圖像高度:640 pixel。
4.2系統(tǒng)手眼標(biāo)定結(jié)果
為了得到較為精確的測(cè)量結(jié)果,本課題采集了10幅機(jī)械手末端圖片,并計(jì)算了每幅圖片對(duì)應(yīng)的機(jī)械手表2系統(tǒng)手眼標(biāo)定結(jié)果
Tab.2The results of handeye calibration
標(biāo)定變量標(biāo)定結(jié)果標(biāo)定變量標(biāo)定結(jié)果X坐標(biāo)-0.032 33 mX軸旋轉(zhuǎn)角185.449°Y坐標(biāo)-0.771 23 mY軸旋轉(zhuǎn)角2.846°Z坐標(biāo)0.644 75 mZ軸旋轉(zhuǎn)角0.462°
末端位姿。最后經(jīng)過標(biāo)定在HALCON軟件中得出機(jī)械手基座標(biāo)系相對(duì)于攝像機(jī)坐標(biāo)系的位姿,標(biāo)定結(jié)果如表2所示。
4.3機(jī)器人綜合控制平臺(tái)調(diào)試結(jié)果按實(shí)驗(yàn)流程進(jìn)行實(shí)驗(yàn)。首先,根據(jù)已獲取的該手眼系統(tǒng)的標(biāo)定信息和在工件平面上定義的參考坐標(biāo)系,實(shí)時(shí)地采集圖像,并逐步得出工件在參考坐標(biāo)系中的位置,工件上的抓取點(diǎn)坐標(biāo),機(jī)器人的抓取位姿。該過程對(duì)應(yīng)的圖像處理結(jié)果如圖9所示,其中圖9(a)為所定義的參考坐標(biāo)系,圖9(b)為顯示了目標(biāo)物體和參考坐標(biāo)系,圖9(c)顯示了目標(biāo)物體上的抓取點(diǎn),圖9(d)顯示機(jī)器人抓取時(shí)工件所對(duì)應(yīng)的位姿。在完成以上處理之后,就可得出工件目標(biāo)相對(duì)于機(jī)器人基準(zhǔn)坐標(biāo)系位姿:(0.045 03 m,-0.670 38 m,0.287 66 m,115.377°,21.540°,348.155°)
本文將HALCON圖像采集與處理程序、運(yùn)動(dòng)學(xué)逆解程序以及最后的當(dāng)量判斷與發(fā)送程序集成開發(fā),得到了機(jī)器人綜合控制平臺(tái)應(yīng)用軟件。該軟件在已知機(jī)器人目標(biāo)位姿的情況下,按照運(yùn)動(dòng)學(xué)逆問題的求解過程依次得到各運(yùn)動(dòng)關(guān)節(jié)所對(duì)應(yīng)的角度、各推桿在目標(biāo)位姿時(shí)對(duì)應(yīng)的桿長(zhǎng),將其與初始桿長(zhǎng)之差乘以比例系數(shù),即得出每個(gè)電機(jī)所需的運(yùn)動(dòng)當(dāng)量。而后將運(yùn)動(dòng)當(dāng)量以運(yùn)動(dòng)指令形式經(jīng)以太網(wǎng)發(fā)送至運(yùn)動(dòng)控制卡中,則機(jī)器人獲得運(yùn)動(dòng)指令,運(yùn)動(dòng)到目標(biāo)位姿,并進(jìn)行抓取。本實(shí)驗(yàn)室研制的機(jī)器人是根據(jù)實(shí)時(shí)采集的圖像信息來對(duì)目標(biāo)工件進(jìn)行抓取,機(jī)器人抓取實(shí)物圖如圖10所示。5結(jié)論本實(shí)驗(yàn)系統(tǒng)根據(jù)采集到的視覺信息,經(jīng)過圖像處理得到機(jī)器人的目標(biāo)位姿,并由此轉(zhuǎn)化為機(jī)器人各關(guān)節(jié)的控制信號(hào),完成機(jī)器人驅(qū)動(dòng),實(shí)現(xiàn)對(duì)目標(biāo)工件的抓取。以上的實(shí)驗(yàn)流程切實(shí)可行,且實(shí)驗(yàn)結(jié)果達(dá)到了預(yù)期的要求。由此證明本課題所構(gòu)建的基于單目視覺的機(jī)器人控制系統(tǒng)具有較強(qiáng)的實(shí)用價(jià)值。
參考文獻(xiàn):
[1]徐德.機(jī)器人視覺測(cè)量與控制[M].2版.北京:國(guó)防工業(yè)出版社,2011.
[2]閆霞,牛建強(qiáng).基于HALCON軟件的攝像機(jī)標(biāo)定[J].數(shù)字技術(shù)與應(yīng)用.2010(11):112113.
[3]蔡自興.機(jī)器人學(xué)[M].北京:清華大學(xué)出版社,2000.
[4]李洪海,王敬東.攝像機(jī)標(biāo)定技術(shù)研究[J].光學(xué)儀器,2007,29(4):712.
[5]劉源泂,孔建益,王興東,等.雙目立體視覺系統(tǒng)的非線性攝像機(jī)標(biāo)定技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2011,28(9):3398
2.4機(jī)器人位姿的獲取在進(jìn)行手眼標(biāo)定時(shí),對(duì)每幅標(biāo)定圖片都需要提供相對(duì)應(yīng)的機(jī)器人的位姿,并且機(jī)器人位姿的精度對(duì)整個(gè)手眼系統(tǒng)的標(biāo)定精度至關(guān)重要。在測(cè)得各關(guān)節(jié)運(yùn)動(dòng)角度后,通過機(jī)器人運(yùn)動(dòng)學(xué)正解公式,得到機(jī)器人末端位姿,再使用HDevelop例程handeye_creat_robot_poses.hdev即可寫出對(duì)應(yīng)的機(jī)器人位姿文件。其具體實(shí)現(xiàn)是調(diào)用input_pose_type()確定機(jī)器人位姿的類型,如圖5所示;調(diào)用input_pose()輸入末端的位姿,如圖6所示,則創(chuàng)建完成HALCON可直接讀取的dat文件。
有很多種輸入的形式,最常用的是xyz的輸入形式,它表示機(jī)械手末端坐標(biāo)系相對(duì)于世界坐標(biāo)系(此即為機(jī)器人基準(zhǔn)坐標(biāo)系)的坐標(biāo)點(diǎn)與三軸旋轉(zhuǎn)角度。同時(shí)考慮以下幾點(diǎn):(1)三軸旋轉(zhuǎn)角度的參考系一直是世界坐標(biāo)系,不是繞某個(gè)軸運(yùn)動(dòng)之后的坐標(biāo)系,且旋轉(zhuǎn)正方向以右手螺旋取得。(2)相機(jī)的xyz軸是被默認(rèn)規(guī)定的,即z軸方向延鏡頭向外,x軸方向?yàn)榇怪眤方向向圖片的正右方,y軸方向以右手螺旋定則確定。(3)機(jī)械手基坐標(biāo)(即世界坐標(biāo)系)的選取中x軸方向須與攝像頭的x軸方向一致,否則結(jié)果會(huì)產(chǎn)生一定偏差,同時(shí)也不利于標(biāo)定結(jié)果的驗(yàn)證。然后按照此流程重復(fù)多遍,得到多組機(jī)器人的位姿文件。在HDevelop中對(duì)機(jī)器人位姿文件的讀取可直接調(diào)用read_pose函數(shù)來實(shí)現(xiàn)。3HALCON圖像處理程序該程序是在HALCON軟件中編譯完成并測(cè)試通過后,再將其轉(zhuǎn)化為MFC中的C++程序。這樣相當(dāng)于在HALCON中進(jìn)行了預(yù)編程,不僅能簡(jiǎn)化C++的編程過程,還能直接對(duì)錯(cuò)誤的結(jié)果進(jìn)行改正,減輕了很大的工作量。以下是采集到目標(biāo)工件圖像后進(jìn)行的圖像處理過程。
3.1讀取標(biāo)定數(shù)據(jù)首先,標(biāo)定數(shù)據(jù)可直接由文件中讀取,其中相機(jī)的參數(shù)可通過read_cam_par函數(shù)讀取相機(jī)參數(shù)文件,相機(jī)坐標(biāo)系與機(jī)器人坐標(biāo)系的關(guān)系可由read_pose函數(shù)來讀取。另外,由于齊次矩陣更便于計(jì)算,在此還要把姿態(tài)轉(zhuǎn)換為齊次矩陣,該變換在HALCON中可直接通過pose_to_hom_mat3d函數(shù)實(shí)現(xiàn)。讀取和變換標(biāo)定數(shù)據(jù)的代碼如下:
3.2確定參考坐標(biāo)系由于本實(shí)驗(yàn)只使用了單個(gè)相機(jī),在未知目標(biāo)工件三維模型的情況下,無法獲取目標(biāo)物體在相機(jī)光軸方向上的深度信息。這就需要在此引入?yún)⒖甲鴺?biāo)系,且讓該參考坐標(biāo)系與目標(biāo)物體的坐標(biāo)系是處在同一個(gè)平面上。這樣就能通過標(biāo)準(zhǔn)的標(biāo)定板信息引入所需的深度信息。其實(shí)際的操作過程為:在放置目標(biāo)物體的平面上放置一HALCON標(biāo)定板,并獲取一幅圖像,通過調(diào)用define_reference_coord_system函數(shù),將該標(biāo)定板坐標(biāo)系定義為參考坐標(biāo)系,代碼如下:
3.3提取抓取區(qū)域與目標(biāo)輪廓對(duì)含有目標(biāo)物體的圖像,首先將其進(jìn)行灰度化處理,然后選取可抓取的區(qū)域范圍,再進(jìn)行閾值化處理,最后進(jìn)行區(qū)域填充與形狀選擇,從而得到目標(biāo)物體(銀白色長(zhǎng)方形鐵塊)。得到目標(biāo)物體后進(jìn)行簡(jiǎn)單的blob分析,其邊界就被轉(zhuǎn)化為XLD輪廓,代碼如下:
3.4抓取姿態(tài)的求取有了抓取點(diǎn)的像素坐標(biāo)值,并且已知了參考坐標(biāo)系在圖中的位置就可以用image_points_to_world_plane算子提取抓取點(diǎn)在參考坐標(biāo)系中的三維坐標(biāo),代碼如下:
image_points_to_world_plane(CamParam,PoseRef,CornersRow,CornersCol,'m',CornersX_ref,CornersY_ref)
CenterPointX_ref:=sum(CornersX_ref)*0.25; CenterPointY_ref:=sum(CornersY_ref)*0.25由于抓取物體就放置在參考平面上,所以抓取點(diǎn)在參考坐標(biāo)系中的姿態(tài),就是要考慮物體繞參考坐標(biāo)系中Z軸的旋轉(zhuǎn)。在抓取時(shí),機(jī)器人末端的抓爪收攏的方向應(yīng)與工件的邊緣垂直,那么兩個(gè)抓取點(diǎn)的連線的傾斜角度就是抓爪應(yīng)該旋轉(zhuǎn)的角度。
4實(shí)驗(yàn)結(jié)果
4.1攝像機(jī)標(biāo)定結(jié)果為了得到更加精確的相機(jī)參數(shù),本課題采集了差異度較大的23幅圖片,在HALCON軟件中得到測(cè)量結(jié)果如下:鏡頭焦距foc:3.52 mm;徑向畸變系數(shù)kappa:938.631;相機(jī)芯片每單元格的寬度Sx:5.490×10-6 m;相機(jī)芯片每單元格的高度Sy:5.500×10-6 m;圖像中心的x坐標(biāo)Cx:244.471;圖像中心的y坐標(biāo)Cy:327.320;圖像寬度:480 pixel;圖像高度:640 pixel。
4.2系統(tǒng)手眼標(biāo)定結(jié)果
為了得到較為精確的測(cè)量結(jié)果,本課題采集了10幅機(jī)械手末端圖片,并計(jì)算了每幅圖片對(duì)應(yīng)的機(jī)械手表2系統(tǒng)手眼標(biāo)定結(jié)果
Tab.2The results of handeye calibration
標(biāo)定變量標(biāo)定結(jié)果標(biāo)定變量標(biāo)定結(jié)果X坐標(biāo)-0.032 33 mX軸旋轉(zhuǎn)角185.449°Y坐標(biāo)-0.771 23 mY軸旋轉(zhuǎn)角2.846°Z坐標(biāo)0.644 75 mZ軸旋轉(zhuǎn)角0.462°
末端位姿。最后經(jīng)過標(biāo)定在HALCON軟件中得出機(jī)械手基座標(biāo)系相對(duì)于攝像機(jī)坐標(biāo)系的位姿,標(biāo)定結(jié)果如表2所示。
4.3機(jī)器人綜合控制平臺(tái)調(diào)試結(jié)果按實(shí)驗(yàn)流程進(jìn)行實(shí)驗(yàn)。首先,根據(jù)已獲取的該手眼系統(tǒng)的標(biāo)定信息和在工件平面上定義的參考坐標(biāo)系,實(shí)時(shí)地采集圖像,并逐步得出工件在參考坐標(biāo)系中的位置,工件上的抓取點(diǎn)坐標(biāo),機(jī)器人的抓取位姿。該過程對(duì)應(yīng)的圖像處理結(jié)果如圖9所示,其中圖9(a)為所定義的參考坐標(biāo)系,圖9(b)為顯示了目標(biāo)物體和參考坐標(biāo)系,圖9(c)顯示了目標(biāo)物體上的抓取點(diǎn),圖9(d)顯示機(jī)器人抓取時(shí)工件所對(duì)應(yīng)的位姿。在完成以上處理之后,就可得出工件目標(biāo)相對(duì)于機(jī)器人基準(zhǔn)坐標(biāo)系位姿:(0.045 03 m,-0.670 38 m,0.287 66 m,115.377°,21.540°,348.155°)
本文將HALCON圖像采集與處理程序、運(yùn)動(dòng)學(xué)逆解程序以及最后的當(dāng)量判斷與發(fā)送程序集成開發(fā),得到了機(jī)器人綜合控制平臺(tái)應(yīng)用軟件。該軟件在已知機(jī)器人目標(biāo)位姿的情況下,按照運(yùn)動(dòng)學(xué)逆問題的求解過程依次得到各運(yùn)動(dòng)關(guān)節(jié)所對(duì)應(yīng)的角度、各推桿在目標(biāo)位姿時(shí)對(duì)應(yīng)的桿長(zhǎng),將其與初始桿長(zhǎng)之差乘以比例系數(shù),即得出每個(gè)電機(jī)所需的運(yùn)動(dòng)當(dāng)量。而后將運(yùn)動(dòng)當(dāng)量以運(yùn)動(dòng)指令形式經(jīng)以太網(wǎng)發(fā)送至運(yùn)動(dòng)控制卡中,則機(jī)器人獲得運(yùn)動(dòng)指令,運(yùn)動(dòng)到目標(biāo)位姿,并進(jìn)行抓取。本實(shí)驗(yàn)室研制的機(jī)器人是根據(jù)實(shí)時(shí)采集的圖像信息來對(duì)目標(biāo)工件進(jìn)行抓取,機(jī)器人抓取實(shí)物圖如圖10所示。5結(jié)論本實(shí)驗(yàn)系統(tǒng)根據(jù)采集到的視覺信息,經(jīng)過圖像處理得到機(jī)器人的目標(biāo)位姿,并由此轉(zhuǎn)化為機(jī)器人各關(guān)節(jié)的控制信號(hào),完成機(jī)器人驅(qū)動(dòng),實(shí)現(xiàn)對(duì)目標(biāo)工件的抓取。以上的實(shí)驗(yàn)流程切實(shí)可行,且實(shí)驗(yàn)結(jié)果達(dá)到了預(yù)期的要求。由此證明本課題所構(gòu)建的基于單目視覺的機(jī)器人控制系統(tǒng)具有較強(qiáng)的實(shí)用價(jià)值。
參考文獻(xiàn):
[1]徐德.機(jī)器人視覺測(cè)量與控制[M].2版.北京:國(guó)防工業(yè)出版社,2011.
[2]閆霞,牛建強(qiáng).基于HALCON軟件的攝像機(jī)標(biāo)定[J].數(shù)字技術(shù)與應(yīng)用.2010(11):112113.
[3]蔡自興.機(jī)器人學(xué)[M].北京:清華大學(xué)出版社,2000.
[4]李洪海,王敬東.攝像機(jī)標(biāo)定技術(shù)研究[J].光學(xué)儀器,2007,29(4):712.
[5]劉源泂,孔建益,王興東,等.雙目立體視覺系統(tǒng)的非線性攝像機(jī)標(biāo)定技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2011,28(9):3398