首先,我們要了解一下常規(guī)的手眼標(biāo)定流程是怎么樣的。
(一)如果吸嘴中心就是法蘭盤(pán)的中心則
是下面這樣的:
按九宮格走九個(gè)點(diǎn),取得九組吸嘴的像素坐標(biāo)與法蘭盤(pán)的機(jī)械坐標(biāo)
(圖1)
進(jìn)行標(biāo)定
(二)如果吸嘴位置不在法蘭盤(pán)中心
則標(biāo)定流程要復(fù)雜些:
人工創(chuàng)建工具坐標(biāo)Tool 1,把工具坐標(biāo)中心創(chuàng)建到標(biāo)定片的Mark點(diǎn)上去
按九宮格走九個(gè)點(diǎn),取得九組特征點(diǎn)的像素坐標(biāo)與對(duì)應(yīng)的機(jī)械坐標(biāo)
進(jìn)行標(biāo)定
這里的難點(diǎn)是創(chuàng)建工具坐標(biāo)的方法。
人工創(chuàng)建工具坐標(biāo),一般按工具向?qū)?lái)創(chuàng)建,需要第二個(gè)點(diǎn)同第一個(gè)點(diǎn)U軸差180度。對(duì)于結(jié)構(gòu)緊湊的機(jī)器來(lái)說(shuō),你是不可能做到的。
即使能做到,這個(gè)過(guò)程是相當(dāng)磨人的。
如果想不轉(zhuǎn)180度創(chuàng)建工具坐標(biāo),則需要自己寫(xiě)算法,而不是使用工具向?qū)?lái)創(chuàng)建。
這里勇哥介紹一下同事用到的一種利用旋轉(zhuǎn)中心進(jìn)行標(biāo)定的方法,它可以用以實(shí)現(xiàn)自動(dòng)標(biāo)定的需求。
注意:如果你得人工去創(chuàng)建工具坐標(biāo)的話,就做不到自動(dòng)標(biāo)定了。
另外,自動(dòng)標(biāo)定是需要機(jī)器人里面寫(xiě)程序,IPC上寫(xiě)一段自動(dòng)標(biāo)定的程序與之配合才可以做到的。
第一步:
機(jī)器人吸嘴上放上標(biāo)定片,走矩形四個(gè)位置。取得4組特征點(diǎn)B的像素坐標(biāo)。
同時(shí)取得4組機(jī)械坐標(biāo),這個(gè)機(jī)械坐標(biāo)是機(jī)器人U軸中心A的機(jī)械坐標(biāo)。(這個(gè)過(guò)程簡(jiǎn)化了九點(diǎn)標(biāo)定,只取4個(gè)點(diǎn))
我們同時(shí)有了四組像素與機(jī)械坐標(biāo),用halcon算子vector_to_hom_mat2d進(jìn)行標(biāo)定。
此時(shí)標(biāo)定的結(jié)果不是我們想要的,它只是把機(jī)器人法蘭盤(pán)中心(U軸中心)的A點(diǎn)和特征點(diǎn)B標(biāo)定在了一起。
因?yàn)闄C(jī)器人默認(rèn)使用tool 0工具坐標(biāo)系工作的,我們這樣標(biāo)定也就是把特征點(diǎn)和Tool 0工具坐標(biāo)的中心(這個(gè)中心就是法蘭盤(pán)的中心)標(biāo)定在了一起。
這是我們的第一次標(biāo)定,它標(biāo)定出來(lái)的結(jié)果是存在一個(gè)固定偏差的,這個(gè)偏差就是法蘭盤(pán)中心(u軸中心)到特征的固定的距離偏差。
標(biāo)定成功后,我們獲得一個(gè)標(biāo)定關(guān)系的矩陣homMat2D
(圖2)
第二步:
接下來(lái)進(jìn)行三點(diǎn)定圓心的操作。如下圖所示,我們通過(guò)旋轉(zhuǎn)機(jī)器人法蘭盤(pán)(u軸中心)的中心旋轉(zhuǎn)出三個(gè)位置。
通過(guò)三個(gè)特征點(diǎn)B,我們可以求出通過(guò)它們的一個(gè)圓,其圓心是法蘭盤(pán)中心(u軸中心)在相機(jī)坐標(biāo)系中的像素坐標(biāo)。
現(xiàn)在我們求出的圓心只是像素坐標(biāo),通過(guò)第一步的標(biāo)定關(guān)系矩陣homMat2D,利用halcon算子affine_trans_point_2d可以計(jì)算出這個(gè)圓心的機(jī)械坐標(biāo)。
重要的地方來(lái)了!這個(gè)圓心的機(jī)械坐標(biāo)并不是法蘭盤(pán)的中心坐標(biāo),而是擁有固定偏差值的一個(gè)坐標(biāo)!
注:如果只看圖3,你可能很疑惑,這3個(gè)角度明明是繞著U軸中心轉(zhuǎn)動(dòng)的呀,為什么說(shuō)這個(gè)中心不是法蘭盤(pán)U軸的中心呢?
注意,這個(gè)三點(diǎn)的中心只是在像素坐標(biāo)系里面是U軸的中心!
但是,當(dāng)你把這個(gè)像素轉(zhuǎn)為機(jī)械坐標(biāo)時(shí),因?yàn)槟阍瓉?lái)第一次標(biāo)定時(shí)的矩陣homMat2D,里面的信息就是法蘭盤(pán)中心到特征點(diǎn)的關(guān)系,所以此時(shí)你把圓心像素坐標(biāo)轉(zhuǎn)為機(jī)器坐標(biāo)時(shí),你還是用的這個(gè)矩陣homMat2D在轉(zhuǎn)換。因此你轉(zhuǎn)化后的機(jī)械坐標(biāo)不是U軸中心,而是法蘭盤(pán)到特征點(diǎn)機(jī)械坐標(biāo)的距離。
(圖3)
第三步
接下來(lái)進(jìn)行第二次標(biāo)定的過(guò)程。
有了第3步的Tool 0工具坐標(biāo)中心的機(jī)械坐標(biāo),我們可以計(jì)算工具1和工具0的毫米偏差,并把最初標(biāo)定時(shí)的Tool0下的四個(gè)特征點(diǎn)的機(jī)械坐標(biāo)加上這個(gè)毫米偏差,使其變?yōu)門(mén)ool1下的坐標(biāo),Tool1的工具中心就是我們選取的特征點(diǎn)那個(gè)地方。
說(shuō)人話:法蘭盤(pán)中心(u軸中心)機(jī)械坐標(biāo)減去 用3點(diǎn)定圓那個(gè)圓心的機(jī)械坐標(biāo),求出固定偏差值。
這個(gè)固定偏差就是法蘭盤(pán)到特征點(diǎn)機(jī)械坐標(biāo)的距離!
然后我們用這個(gè)偏差值更新一下第一次標(biāo)定時(shí)的四組像素與機(jī)械坐標(biāo)數(shù)據(jù),重新標(biāo)定即可。
這次更新的過(guò)程其實(shí)就是把Tool0下的四組機(jī)械坐標(biāo)轉(zhuǎn)化為T(mén)ool1下的四組機(jī)械坐標(biāo)。
可能你會(huì)說(shuō),我們目前為止根本沒(méi)有Tool1呀,這個(gè)沒(méi)關(guān)系,本步驟不需要Tool1,第四步才會(huì)創(chuàng)建Tool1坐標(biāo)。那個(gè)時(shí)候用得上三點(diǎn)圓心的機(jī)械坐標(biāo)了。
第四步
最后利用三點(diǎn)定圓的圓心機(jī)械坐標(biāo),我們來(lái)創(chuàng)建Tool 1坐標(biāo)系。要實(shí)現(xiàn)求出工具坐標(biāo)x,y的過(guò)程可以在機(jī)器人端寫(xiě)程序,也可以用C#代碼來(lái)實(shí)現(xiàn),但是創(chuàng)建Tool 1坐標(biāo)系這一步仍然還是需要在機(jī)器人端來(lái)執(zhí)行。
最后我們就達(dá)到最終的目的:
創(chuàng)建工具坐標(biāo)Tool 1,把工具坐標(biāo)中心創(chuàng)建到標(biāo)定片的Mark點(diǎn)上去,然后生成四組特征點(diǎn)的像素坐標(biāo)與機(jī)械坐標(biāo)。
大功告成!
(圖1: 4個(gè)標(biāo)定點(diǎn),3個(gè)旋轉(zhuǎn)點(diǎn),1個(gè)測(cè)試點(diǎn))
(圖2:第一次標(biāo)定)
(圖3:第二次標(biāo)定)
下面是標(biāo)定的輸出信息,請(qǐng)參考:
C#
CT1機(jī)械坐標(biāo): mechanicalPosX=-22.585 mechanicalPosY=170.856 p1 {X = 1102.115 Y = 1110.051} IsEmpty: false X: 1102.115 Y: 1110.051 p2 {X = 289.26 Y = 1175.885} IsEmpty: false X: 289.26 Y: 1175.885 p3 {X = 1814.609 Y = 1332.285} IsEmpty: false X: 1814.609 Y: 1332.285 圓心位置: {X = 857.9301 Y = 3146.18433} 圓心轉(zhuǎn)機(jī)械坐標(biāo): row1AfterTrans={-14.4875695091889} col1AfterTrans={88.6095108466213} 第一次標(biāo)定后的矩陣: homMat2D: {[-0.040066467819754, -0.000775766400971161, 22.3672349752005, 0.000818720706487857, -0.0402510697036496, 214.656297497753]} 偏差:CT1機(jī)械坐標(biāo)-圓心機(jī)械坐標(biāo) //double spanX = Convert.ToDouble(mechanicalPosX) - row1AfterTrans.D; //double spanY = Convert.ToDouble(mechanicalPosY) - col1AfterTrans.D; spanX=-8.0974304908110746 spanY=82.246489153378647 第二次標(biāo)定后的矩陣: homMat2D: {[-0.040066467819754, -0.000775766400971159, 14.2299334255784, 0.000818720706487857, -0.0402510697036496, 296.790879463611]} 1713 等待機(jī)器人前往標(biāo)定點(diǎn)1...... 1728 模板位置:0, X:438.338, Y:560.191, U:0 1729 機(jī)器人到達(dá)標(biāo)定點(diǎn)1,當(dāng)前像素坐標(biāo)為:457.791;445.217機(jī)械坐標(biāo)為:3.703;197.128 1729 等待機(jī)器人前往標(biāo)定點(diǎn)2..... 1654 模板位置:0, X:414.878, Y:1742.642, U:-0.001 1655 機(jī)器人到達(dá)2號(hào)點(diǎn),當(dāng)前像素坐標(biāo)為:434.001;1627.619機(jī)械坐標(biāo)為:3.704;149.502 1655 等待機(jī)器人前往標(biāo)定點(diǎn)3...... 1601 模板位置:0, X:1679.666, Y:1718.163, U:0.001 1602 機(jī)器人到達(dá)標(biāo)定點(diǎn)3,當(dāng)前像素坐標(biāo)為:1699.957;1602.742機(jī)械坐標(biāo)為:-46.975;151.532 1602 等待機(jī)器人前往標(biāo)定點(diǎn)4...... 1605 模板位置:0, X:1700.915, Y:601.786, U:0 1606 機(jī)器人到達(dá)標(biāo)定點(diǎn)4,當(dāng)前像素坐標(biāo)為:1720.958;486.131機(jī)械坐標(biāo)為:-46.975;196.502 1606 開(kāi)始Tool0下的標(biāo)定...... 1606 Tool0下標(biāo)定完成,開(kāi)始創(chuàng)建工具坐標(biāo) 1606 等待機(jī)器人前往創(chuàng)建工具2號(hào)點(diǎn)...... 1609 模板位置:0, X:315.584, Y:1289.472, U:-0.397 1610 機(jī)器人到達(dá)創(chuàng)建工具2號(hào)點(diǎn),當(dāng)前像素坐標(biāo)為:289.26;1175.885 1610 等待機(jī)器人前往創(chuàng)建工具3號(hào)點(diǎn)...... 1613 模板位置:0, X:1754.706, Y:1432.779, U:0.366 1614 機(jī)器人到達(dá)創(chuàng)建工具3號(hào)點(diǎn),當(dāng)前像素坐標(biāo)為:1814.609;1332.285 1614 等待機(jī)器人前往創(chuàng)建工具1號(hào)點(diǎn)...... 1615 模板位置:0, X:1081.994, Y:1225.572, U:0.001 1616 機(jī)器人到達(dá)標(biāo)創(chuàng)建工具1號(hào)點(diǎn),當(dāng)前像素坐標(biāo)為:1102.115;1110.051機(jī)械坐標(biāo)為:-22.585;170.856 1612 Tool0工具中心經(jīng)標(biāo)定關(guān)系轉(zhuǎn)化后的坐標(biāo)為:-14.4477;88.7214 1710 機(jī)器人工具1創(chuàng)建完成 1714 模板位置:0, X:1112.962, Y:916.192, U:-0.398 1715 標(biāo)定精度測(cè)試結(jié)果:X偏差:0.104mm,Y偏差:0.041mm 1715 標(biāo)定精度較差 1715 自動(dòng)標(biāo)定完成
本次標(biāo)定成功后,tool1結(jié)果為:
x,y,z,u
82.008, 9.569, 0, 0
這里勇哥想知道的是,怎么把tool1結(jié)果轉(zhuǎn)換為tool0呢?
?
tool0
3.703,197.128
tool1:
-4.377,279.296
顯然并不是簡(jiǎn)單的把Tool0加上工具坐標(biāo)這么簡(jiǎn)單。
審核編輯:劉清
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8703瀏覽量
147173 -
機(jī)器人
+關(guān)注
關(guān)注
211文章
28418瀏覽量
207095 -
IPC
+關(guān)注
關(guān)注
3文章
347瀏覽量
51917
原文標(biāo)題:一種利用旋轉(zhuǎn)中心進(jìn)行手眼標(biāo)定的原理性介紹
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論