版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
使用Halcon9點(diǎn)標(biāo)定旋轉(zhuǎn)中心標(biāo)定與使用一、標(biāo)定介紹
1.
標(biāo)定模型A:相機(jī)固定(夾具不旋轉(zhuǎn))夾具夾取產(chǎn)品或者標(biāo)定塊,選取一個(gè)特征,開始進(jìn)行標(biāo)定
X軸、Y軸移動(dòng)一個(gè)位置,記錄軸的物理坐標(biāo):(Qx1,Qy1)
提取圖像中對(duì)應(yīng)特征點(diǎn),圖像像素坐標(biāo):(Px1,Py1)
運(yùn)動(dòng)第N位置,記錄下點(diǎn)位軸軸坐標(biāo)(QxN,QyN),t提取像素坐標(biāo):(PxN,PyN)
一般9點(diǎn)、16點(diǎn),特征均勻分布在圖像的各個(gè)位置即可
halcon算子計(jì)算:
假如把上面記錄的點(diǎn)轉(zhuǎn)化成halcon的使用的方式,如下:
Px:=[1,2,3]
Py:=[1,2,3]
Qx:=[3,9,12]
Qy:=[3,9,12]
九點(diǎn)標(biāo)定使用(仿射變換,最少三個(gè)點(diǎn)),不能消除鏡頭和相機(jī)畸變
vector_to_hom_mat2d(Px,Py,
Qx,Qy,HomMat2D)
HomMat2D就是得到矩陣此案例不需要標(biāo)定旋轉(zhuǎn)中心,使用
Affine_Trans_Point_2d(HomMat2D,ProductCol,ProductRow,Qx,Qy);Qx,Qy為變換后的機(jī)械坐標(biāo),可直接發(fā)給機(jī)器人做移動(dòng)處理。2.
標(biāo)定模型B:相機(jī)移動(dòng)(不旋轉(zhuǎn))相機(jī)固定到X或者Y軸上,不能旋轉(zhuǎn),這種是大部分設(shè)備的移動(dòng)相機(jī)的模式,黃色部分是可旋轉(zhuǎn)的、當(dāng)時(shí)很多設(shè)備這黃色部分是包含Z軸或者上下放料氣缸。
標(biāo)定時(shí),把標(biāo)定特征的產(chǎn)品或者標(biāo)定塊放在相機(jī)下方位置固定不動(dòng)
移動(dòng)相機(jī)(即移動(dòng)軸),每走一個(gè)點(diǎn),記錄下點(diǎn)位軸軸坐標(biāo)(QxN,QyN),提取像素坐標(biāo):(PxN,PyN)
halcon算子計(jì)算:
**把上面記錄的點(diǎn)轉(zhuǎn)化成halcon的使用的方式,如下:
Px:=[1,2,3]
Py:=[1,2,3]
Qx:=[3,9,12]
Qy:=[3,9,12]
**九點(diǎn)標(biāo)定使用(仿射變換)
vector_to_hom_mat2d(Px,Py,
Qx,Qy,HomMat2D)
HomMat2D就是得到矩陣,注意雖然計(jì)算過程和模型A一模一樣,但是矩陣的使用是不相同,后面會(huì)有說(shuō)明3.
標(biāo)定模型C:相機(jī)固定(夾具旋轉(zhuǎn))首先實(shí)際固定相機(jī)的項(xiàng)目,基本上夾具都是可以旋轉(zhuǎn)的,因?yàn)槲覀內(nèi)A取的產(chǎn)品肯定有角度偏差,然后通過下方固定相機(jī)的拍照,補(bǔ)償貼合,這也是固定相機(jī)意義所在。
所以標(biāo)定模型A只能補(bǔ)償Dx、Dy(X軸、Y軸偏差),適用的實(shí)際項(xiàng)目情況還是比較特殊的;當(dāng)前模型需要補(bǔ)償出角度,但是這個(gè)匹配找到產(chǎn)品的角度并不是旋轉(zhuǎn)一下這個(gè)角度就好,這會(huì)產(chǎn)生一下偏差,這也新手迷惑,或者經(jīng)常面試問的一個(gè)問題,只有了解這個(gè)問題定位才算入門。1)
基本的補(bǔ)償流程
首先為大家講一個(gè)整體的補(bǔ)償過程,是怎樣產(chǎn)生補(bǔ)償?shù)?,旋轉(zhuǎn)補(bǔ)償和平移補(bǔ)償?shù)膮^(qū)別。
放大模型如下:
這是一個(gè)放大的模型,軸心和夾具中心不重合,就算我們的夾具中心和旋轉(zhuǎn)軸中心是重合,但是我們夾取或者吸取產(chǎn)品也不能保證產(chǎn)品的中心和旋轉(zhuǎn)中心重合,所以結(jié)論:涉及旋轉(zhuǎn)必須進(jìn)行旋轉(zhuǎn)標(biāo)定,不然每次貼合總會(huì)帶有旋轉(zhuǎn)產(chǎn)生的誤差。下面分析這個(gè)旋轉(zhuǎn)到底是怎樣帶來(lái)誤差的,也就是我們旋轉(zhuǎn)標(biāo)定到底在計(jì)算什么東西。
這一部分也同時(shí)解釋怎樣去補(bǔ)償這個(gè)旋轉(zhuǎn)誤差。
上圖的放大模型從下往上看,簡(jiǎn)化模型在坐標(biāo)系中,一定搞清楚這里,不然后面旋轉(zhuǎn)起來(lái)就沒辦法理解了
紅色圓圈:旋轉(zhuǎn)軸中心
黃色圓圈:夾具中心,這個(gè)夾具肯定很大,這里代表其中心位置,在后面計(jì)算中沒有意義
連線:表示剛性連接(就是兩者固定在一起的)
項(xiàng)目中,我們先抓一個(gè)產(chǎn)品訓(xùn)練模板,就是模板位置,如下圖
梯形綠色部分:抓取的基準(zhǔn)位置產(chǎn)品
模板位置和夾具中心重合,夾具的中心沒有實(shí)際意義,因?yàn)閵A具只要把產(chǎn)品抓取進(jìn)行,我們匹配得到的點(diǎn)位數(shù)據(jù)是產(chǎn)品的位置,九點(diǎn)標(biāo)定也是標(biāo)定特征的數(shù)據(jù),和夾具中心沒有任何關(guān)系,我們直接把模板位置的產(chǎn)品中心當(dāng)做夾具中心也行。
實(shí)際項(xiàng)目中,訓(xùn)練好后,我們就會(huì)手動(dòng)移動(dòng)軸或者機(jī)械手到要放的位置,這就是示教一個(gè)標(biāo)準(zhǔn)放置位置M1(x,y,u)(x/y軸坐標(biāo)值,旋轉(zhuǎn)軸U軸值,后面會(huì)用到,記住),然后就是抓取產(chǎn)品拍照,補(bǔ)償貼合。
所以當(dāng)前模板產(chǎn)品位置的偏差(0,0,0)
當(dāng)我們的抓取的一個(gè)待放的產(chǎn)品時(shí),它此時(shí)的位置可能和我們示教產(chǎn)品的位置不同,這里相當(dāng)于匹配中心,偏移了(1,1,),旋轉(zhuǎn)了45度,如下圖:
同時(shí)注意產(chǎn)品是夾具抓取的,所以旋轉(zhuǎn)軸、夾具、產(chǎn)品是一體,旋轉(zhuǎn)和平移都是一體進(jìn)行的。
講到這里,我們很多時(shí)候可能開始在這幅上糾結(jié)了,想怎么去補(bǔ)償、旋轉(zhuǎn)等等,試了半天,發(fā)現(xiàn)補(bǔ)償還是不對(duì),最后發(fā)現(xiàn)不知道怎會(huì)搞了,蒙了,我在哪里,我是誰(shuí)??
這里我就要給大家一個(gè)定位的這種問題的通用的思路,讓人不至于最后懵掉,說(shuō)到這里,你們難道不點(diǎn)個(gè)贊,收藏一下,打賞一下??
第一步,首先明確我們的目標(biāo),就是我們到底在做啥,抓這個(gè)產(chǎn)品放到我們的目標(biāo)問題,所以我們不要在上面圖的位置分析。
第二步,假設(shè)我們上面的產(chǎn)品沒有偏差,直接把產(chǎn)品移動(dòng)到我們的目標(biāo)位置:標(biāo)準(zhǔn)放置位置M1(x,y,u),放下產(chǎn)品第三步,確定我們的看看位置到底是怎樣偏差的,然后就知道我們?cè)撛鯓有D(zhuǎn)平移了。
第四步,最后推理出補(bǔ)償,看見上面圖,大家可能感覺很簡(jiǎn)單了,黃色表示標(biāo)準(zhǔn)位置貼的產(chǎn)品,綠色表示當(dāng)前產(chǎn)品位置,但是一定要明確上面的圖是在我們產(chǎn)品放置位置俯視產(chǎn)生的,所以這個(gè)補(bǔ)償(Dx,Dy,Du)只要直接疊加到M1(x,y,u)上,即得到我們最終的運(yùn)動(dòng)位置M2(x+Dx,y+Dy,u+Du),軸或者機(jī)器人直接運(yùn)動(dòng)到這個(gè)位置,放下產(chǎn)品即可。
第五步,計(jì)算這個(gè)偏差補(bǔ)償(Dx,Dy,Du),這是我們回到抓取產(chǎn)品的拍照位置,如下圖:
是不是位置和上面一張?jiān)诋a(chǎn)品位置放置點(diǎn)的一模一樣,所以直接在這里計(jì)算,就可以計(jì)算這個(gè)偏差。
同時(shí)我這么強(qiáng)調(diào)產(chǎn)品放置位置和拍照位置,除了讓大家了解一個(gè)正常定位的補(bǔ)償流程和思路外,就是得出一個(gè)結(jié)論:固定的下相機(jī)(僅僅這種模型的相機(jī)),它作用是通過計(jì)算最后得一個(gè)偏差,而不是要去計(jì)算一些絕對(duì)位置;
而絕對(duì)貼合的位置是由其他相機(jī)或者示教等等產(chǎn)生的;合在一起就組成一個(gè)完成補(bǔ)償。
現(xiàn)在可以回到正題,這個(gè)旋轉(zhuǎn)到是怎樣產(chǎn)生誤差的。
我們只要綠色產(chǎn)品位置移動(dòng)到黃色位置即可,流程如下:
第一步:移動(dòng)產(chǎn)品產(chǎn)生的偏差(1,1):
紅色旋轉(zhuǎn)中心坐標(biāo)就變成了(-2,-2),綠色產(chǎn)品中心(0,0)
第二步:旋轉(zhuǎn)角度45°,一定記住旋轉(zhuǎn)中心在紅色圓圈
因?yàn)榫G色產(chǎn)品中和旋轉(zhuǎn)中心的距離2√2,綠色產(chǎn)品中心位置:(-2,2√2-2)
所以可以看出,經(jīng)過平移和旋轉(zhuǎn)并不能把產(chǎn)品移動(dòng)到目標(biāo)位置,發(fā)現(xiàn)還差一個(gè)偏差(-2,2√2-2)(就是旋轉(zhuǎn)后坐標(biāo)減去旋轉(zhuǎn)前坐標(biāo)),這樣解決前面的疑惑僅直接旋轉(zhuǎn)獲得的角度不正確,會(huì)出現(xiàn)一個(gè)偏差。
這里點(diǎn)位和角度都很特殊,后面會(huì)講通用的角度位置偏差怎么通過Halcon算子計(jì)算。
同時(shí),一定要注意在我們計(jì)算這個(gè)偏差的時(shí)候,我們用到了旋轉(zhuǎn)中心的坐標(biāo);但是非常遺憾的問題,我們?cè)谧鼍劈c(diǎn)校正的時(shí)候(根據(jù)標(biāo)定模型A),標(biāo)定的基準(zhǔn)是標(biāo)定特征的中心,而不是旋轉(zhuǎn)中心,實(shí)際項(xiàng)目中我們夾具抓取標(biāo)定塊進(jìn)行標(biāo)定,根本做不到把旋轉(zhuǎn)中心和標(biāo)定特征的中心重合,所以我們就需要通過旋轉(zhuǎn)標(biāo)定找到旋轉(zhuǎn)中心并消除它。
此模式:相機(jī)固定,夾具旋轉(zhuǎn),忘記了的看看上面模型圖片。
2)
首先九點(diǎn)標(biāo)定
首先夾具旋轉(zhuǎn)位置選擇,一定要注意因?yàn)閵A具是可以旋轉(zhuǎn)的,所以當(dāng)我們夾住產(chǎn)品開始標(biāo)定時(shí),我們選取那個(gè)角度就行標(biāo)定呢?
這個(gè)角度要選好,因?yàn)?,這就是我們抓取拍照或者飛拍的時(shí)候也需要保持這個(gè)角度姿態(tài),如果不是這個(gè)角度,需要重新經(jīng)過一個(gè)計(jì)算轉(zhuǎn)換回去才行,這里需要大神來(lái)幫忙補(bǔ)充一下;因?yàn)槲椰F(xiàn)在遇到的項(xiàng)目暫時(shí)還沒有要求這個(gè),因?yàn)橹灰D(zhuǎn)好的姿態(tài)標(biāo)定就可以滿足。
基本要求:
A、角度肯定能到拍照位置能拍照,別選一個(gè)角度導(dǎo)致軸或者機(jī)器人最后根本就走不到拍照點(diǎn)
B、選擇這個(gè)角度姿態(tài),有利于我們?cè)诙c(diǎn)旋轉(zhuǎn)時(shí),能夠旋轉(zhuǎn)更大的角度,因?yàn)樾D(zhuǎn)標(biāo)定找圓心,其實(shí)就是定點(diǎn)旋轉(zhuǎn)我們的標(biāo)定特征,然后擬合找圓心,很明顯點(diǎn)分布的角度越大,精度越高(沒有做過旋轉(zhuǎn)的,不理解沒關(guān)系,后面講解,到時(shí)回來(lái)看看就知道怎么回事了);200°旋轉(zhuǎn)效果已經(jīng)非常好了,很多時(shí)候因?yàn)橐曇昂蜋C(jī)構(gòu)問題,能到達(dá)90°就已經(jīng)可以了;
九點(diǎn)標(biāo)定過程:
當(dāng)這個(gè)旋轉(zhuǎn)角度確定后,九點(diǎn)標(biāo)定就變成了了標(biāo)準(zhǔn)模型A,過程就不詳細(xì)講了,這時(shí)就得到了一個(gè)矩陣:HomMat2D。
我們前面提到過這個(gè)矩陣其實(shí)就是兩個(gè)坐標(biāo)系轉(zhuǎn)換關(guān)系,這里是指下相機(jī)的圖片上像素坐標(biāo)和標(biāo)定特征中心的物理坐標(biāo)的關(guān)系,但是上面我們知道了,我們需要的是下相機(jī)的圖片上像素坐標(biāo)和旋轉(zhuǎn)中心的物理坐標(biāo)的關(guān)系,所以下面進(jìn)行旋轉(zhuǎn)標(biāo)定。
說(shuō)一個(gè)題外話,那如果遇到項(xiàng)目的旋轉(zhuǎn)臂很長(zhǎng),視野不夠大,旋轉(zhuǎn)幾度都沒有,這種項(xiàng)目有嗎?肯定有啊。如果你們誰(shuí)遇到了,由于讀到這里受啟發(fā),是不是回來(lái)幫忙點(diǎn)個(gè)贊呢。方法就是旋轉(zhuǎn)后,標(biāo)定特征離開視野,只需要平移到視野中,提取特征計(jì)算后要減去這個(gè)平移值在擬合。
ihalcon管理員sc6231565
解答來(lái)了:標(biāo)定模型C10圖片(ihalcon管理員sc6231565提供的圖片)視野很小,旋轉(zhuǎn)軸有很長(zhǎng)情況:
還有一個(gè)小訣竅,如果精度不是太高,兩個(gè)點(diǎn)就行,一個(gè)點(diǎn)記錄,然后直接轉(zhuǎn)180度,再記錄,直接就是直徑了,兩個(gè)點(diǎn)計(jì)算物理點(diǎn)相加除以2就是圓心,具體你們自己看著辦吧,是不是感覺處處是驚喜啊,又學(xué)到了一招。
網(wǎng)上搜索相機(jī)標(biāo)定,一大堆像素坐標(biāo)系、圖像坐標(biāo)系、相機(jī)坐標(biāo)系、世界坐標(biāo)系,還有手眼標(biāo)定里面的各個(gè)坐標(biāo)系都不要去考慮,九點(diǎn)標(biāo)定就是相機(jī)得到的圖像像素坐標(biāo)與軸或者機(jī)器人的X、Y物理坐標(biāo)的關(guān)系,就是兩個(gè)平面坐標(biāo)的轉(zhuǎn)換,不要去復(fù)雜話你的系統(tǒng)考慮中間問題。
所以六軸機(jī)器人來(lái)做九點(diǎn)標(biāo)定,第一步應(yīng)該是建立與工作平面平行的平面,然后再這個(gè)平面移動(dòng)做九點(diǎn)標(biāo)定,至于這個(gè)機(jī)器人的這個(gè)新坐標(biāo)系怎么建立就找搞機(jī)器人的就行;當(dāng)然如果要求不高,忽略。
3)
旋轉(zhuǎn)標(biāo)定
首先選擇一個(gè)定點(diǎn),記錄下點(diǎn)物理坐標(biāo)P1(x,y),然后如下圖繞著紅色的旋轉(zhuǎn)中心旋轉(zhuǎn),黃色表示標(biāo)定的特征中心,灰色表示相機(jī)的圖像,并且可以從圖像看出,左邊的旋轉(zhuǎn)角度可能旋轉(zhuǎn)90-120之間,其他位置已經(jīng)跑出圖像外了,而右邊的旋轉(zhuǎn)半徑短(標(biāo)定特征中心和旋轉(zhuǎn)中心距離,實(shí)際項(xiàng)目機(jī)械結(jié)構(gòu)決定的),視野大,所以旋轉(zhuǎn)大于200度,保證特征在視野內(nèi)。
再次強(qiáng)調(diào)這個(gè)旋轉(zhuǎn)的前提,在定點(diǎn)P1(x,y)不變的位置進(jìn)行旋轉(zhuǎn),這個(gè)點(diǎn)是“初始角度”的標(biāo)定特征中心的坐標(biāo),而不是旋轉(zhuǎn)中心的坐標(biāo)。
計(jì)算過程如下:
記錄第一個(gè)點(diǎn)物理點(diǎn)P1(x,y),提取特征中心的像素為(Prx1,Pry1)
旋轉(zhuǎn)一個(gè)小角度,
記錄第二個(gè)點(diǎn)物理點(diǎn)P1(x,y),提取特征中心的像素為(Prx2,Pry2)
咦,怎么物理點(diǎn)都沒變呢都是P1呢,肯定啊,X,Y軸都沒有動(dòng),X/Y坐標(biāo)肯定不變??;既然不變?yōu)樯兑崴?,因?yàn)槲抑篮芏嗳艘晦D(zhuǎn)起來(lái)又懵逼了,又不清楚自己在哪里了;一定搞清楚什么在變動(dòng),什么不變。
旋轉(zhuǎn)第N個(gè)點(diǎn)物理點(diǎn)P1(x,y),提取特征中心的像素為(PrxN,PryN)
具體多少個(gè)點(diǎn),旋轉(zhuǎn)16-20個(gè)點(diǎn)完全夠了。
現(xiàn)在已知的條件:定點(diǎn)物理點(diǎn)P1(x,y),一系列像素坐標(biāo)(PrxN,PryN),還是有我們前面九點(diǎn)標(biāo)定矩陣HomMat2D(不要忘了)。
求取??
一團(tuán)亂,求取啥呢?一定不要忘了我們的初衷,得到旋轉(zhuǎn)中心坐標(biāo)和圖像的像素坐標(biāo)的關(guān)系,本質(zhì)上呢:就是一個(gè)矩陣:HomMat2D_C1(模型C矩陣)
求?。篐omMat2D_C1
下面將是本文章中第一個(gè)核心知識(shí),直接項(xiàng)目用的Halcon源碼。
自動(dòng)化行業(yè)真的有一道門檻,你回發(fā)現(xiàn)在網(wǎng)上很難找到一些基礎(chǔ)的源碼或者直接可用的資料,大多數(shù)是原理性或者思路性的東西,但是只要你進(jìn)入一家公司,就很輕松獲得一些自己非常難查詢到的東西,知識(shí)的流動(dòng)最終變成人的流動(dòng),從一公司帶到另一個(gè)公司。如果什么知識(shí)都可以查到,公司不是完蛋了嗎?別人都把好東西放到網(wǎng)上,讓別人來(lái)?yè)屛业娘埻雴??我在說(shuō)我自己?jiǎn)?,哈哈?所以想要打破這道膜,只有進(jìn)入他,找一個(gè)這樣的公司就行了啊,但是本公司只收有這方面工作經(jīng)驗(yàn)的人,真tmd尷尬?怎么辦呢??當(dāng)時(shí)聯(lián)系網(wǎng)站管理報(bào)個(gè)培訓(xùn)班啊?。。?!所以一切存在都是合理的啊。第一步,擬合點(diǎn)計(jì)算:
*九點(diǎn)標(biāo)定的矩陣
HomMat2D:=[0.0202215,3.43298e-005,-27.1543,3.20314e-005,-0.0202298,75.8988]
*旋轉(zhuǎn)點(diǎn)集的像素坐標(biāo),例如如下
Prx:=[0,1,2,3,4,5,6]
Pry:=[0,1,2,3,4,5,6]
forIndex:=0to|Prx|-1by1
*通過矩陣轉(zhuǎn)換一個(gè)點(diǎn)到另一點(diǎn)的算子
affine_trans_point_2d(HomMat2D,Prx[Index],Pry[Index],Qx,Qy)
Qrx[Index]:=Qx
Qry[Index]:=Qy
Endfor
最核心的一個(gè)算子:affine_trans_point_2d,就是一個(gè)矩陣轉(zhuǎn)換點(diǎn)。
就是把一系列的像素點(diǎn)for循環(huán)轉(zhuǎn)換為物理坐標(biāo)點(diǎn),用來(lái)擬合圓,
上面就算已經(jīng)得到我們的物理的擬合點(diǎn)Qrx,Qry
第二步,擬合圓:
*擬合圓
*先生成輪廓
gen_contour_polygon_xld(Contour,Qry,Qrx)
*輪廓擬合圓,算法要選擇'geotukey',自己看說(shuō)明文檔
fit_circle_contour_xld(Contour,'geotukey',-1,0,0,3,2,Row_C,Column_C,Radius_C,StartPhi,EndPhi,PointOrder)
擬合圓不細(xì)講,網(wǎng)上都有,得到我們的圓心(Column_C,Row_C)(注意這里X,Y坐標(biāo)和行、列坐標(biāo)區(qū)別),半徑:Radius_C
完了嗎?肯定沒有啊,我們要明白我們的初衷,求旋轉(zhuǎn)中心坐標(biāo)和圖像的像素坐標(biāo)的關(guān)系:HomMat2D_C1(模型C矩陣),現(xiàn)在還不是呢
第三步,計(jì)算偏差:
既然已經(jīng)知道旋轉(zhuǎn)中心坐標(biāo),那我們就可以求出標(biāo)定中心和旋轉(zhuǎn)中心的偏差:
還記的上面的我們是在P1(x,y)做的定點(diǎn)旋轉(zhuǎn),同時(shí)也是“初始角度”的標(biāo)定特征中心的坐標(biāo)
halocn計(jì)算偏差:
*定點(diǎn)P1
x:=1
y:=1
Dx_C:=Column_C-x
Dy_C:=Row_C-yP1為拍照點(diǎn),模板的中心點(diǎn)這就是一個(gè)固定偏差值,代表是標(biāo)定點(diǎn)特征中心和旋轉(zhuǎn)中心的偏差;
同時(shí)一定要理解,這個(gè)偏差也是九點(diǎn)標(biāo)定的旋轉(zhuǎn)軸的角度的姿態(tài)計(jì)算得到;
如果我們旋轉(zhuǎn)軸的角度發(fā)生改變,這個(gè)偏差是會(huì)變的;
如果項(xiàng)目的補(bǔ)償每次都有偏差。你查查你的項(xiàng)目,遇到過這種情況嗎,補(bǔ)償不穩(wěn)定。(因?yàn)樾D(zhuǎn)中心標(biāo)定不準(zhǔn)導(dǎo)致的)
完成了嗎?可以說(shuō)完成,也可以說(shuō)沒有完成。
我們得到了Dx_C,Dy_C,HomMat2D,已經(jīng)可以用了,你們可以去看看你們的項(xiàng)目,很多都這樣就是了,我開始也這樣保存到本地就完了,后來(lái)我才發(fā)現(xiàn)還有優(yōu)化的空間,讓我們的計(jì)算更加優(yōu)雅。
同時(shí)如果你們的定位項(xiàng)目中出現(xiàn)sin,cos等待三角函數(shù)時(shí),那肯定可以優(yōu)化,因?yàn)闃?biāo)定都是坐標(biāo)點(diǎn)(x,y)的關(guān)系,點(diǎn)到點(diǎn)都可以通過矩陣實(shí)現(xiàn),最主要是halcon已經(jīng)提供這些庫(kù),學(xué)會(huì)用就行。
至于這樣怎么樣有優(yōu)化,為什么這樣優(yōu)化必須放在使用這些矩陣的一章來(lái)進(jìn)行分析了。
固定旋轉(zhuǎn)終于講完了,從簡(jiǎn)單到復(fù)雜一步步來(lái),搞清楚了嗎?沒搞過的,搞不清楚拿起筆畫一畫啊,打開halcon17.12,自己模擬一下特殊點(diǎn)驗(yàn)證一下啊,都是高中的一些平面幾何知識(shí),你只需要把設(shè)備模型抽象出來(lái),halcon數(shù)學(xué)的算子都有啊,話都說(shuō)到這里了,如果不動(dòng)手自己理解,到時(shí)只有項(xiàng)目實(shí)戰(zhàn)試試也行。
如果現(xiàn)在最簡(jiǎn)單的旋轉(zhuǎn)你不理解一下,到時(shí)下面我們開始旋轉(zhuǎn)相機(jī)的時(shí)候,你會(huì)懵逼掉的。
如果搞清楚了,恭喜你,其實(shí)大家說(shuō)的飛拍的項(xiàng)目的單相機(jī)補(bǔ)償,你可以搞起了;至于怎樣使用上面三個(gè)參數(shù),我相信你通過我上面講的基本補(bǔ)償流程,試幾次應(yīng)該就能搞出來(lái)。因?yàn)轱w拍的項(xiàng)目基本都是這種模型。4.
標(biāo)定模型D:相機(jī)移動(dòng)(可旋轉(zhuǎn))
這個(gè)模型如上圖,黃色部分旋轉(zhuǎn)U軸,上面固定相機(jī),表示相機(jī)和我們的夾具一起旋轉(zhuǎn),為啥會(huì)出現(xiàn)這種模式呢,就我個(gè)人的遇到的情況,就是因?yàn)橛蠸cara機(jī)器人安裝需求或者限制,導(dǎo)致必須要這樣安裝如下圖:
模型D和模型B就是相機(jī)可以旋轉(zhuǎn),如果我們拍照的時(shí)候,保持旋轉(zhuǎn)軸的角度和標(biāo)定的一致,其實(shí)就相當(dāng)于相機(jī)在我們整個(gè)過程中是沒有旋轉(zhuǎn)的,等同于模型B;
同時(shí)我先要說(shuō)明,如果這個(gè)九點(diǎn)標(biāo)定的角度和拍照時(shí)旋轉(zhuǎn)軸的角度不同,計(jì)算有哪些變化,我沒有是實(shí)現(xiàn)過,如果哪位大神實(shí)現(xiàn)過,給點(diǎn)提示;后面如果有時(shí)間,我也實(shí)際測(cè)試一下任意角度拍照的變換,到時(shí)更新給大家。
實(shí)際項(xiàng)目過程中,保持拍照的旋轉(zhuǎn)軸的角度和標(biāo)定的一致這個(gè)很容易實(shí)現(xiàn),首先先選擇一個(gè)拍照的角度,然后再按照這個(gè)角度進(jìn)行九點(diǎn)標(biāo)定即可,后面就按照中模式就行講解。
1)
九點(diǎn)標(biāo)定
選擇一個(gè)拍照的姿態(tài),確定旋轉(zhuǎn)軸的角度,然后就開始九點(diǎn)標(biāo)定,過程和模型B相同。
這里不詳解,得到矩陣:HomMat2D
2)
旋轉(zhuǎn)標(biāo)定
如果只是它當(dāng)做模型B來(lái)使用,不進(jìn)行旋轉(zhuǎn)標(biāo)定一樣可以使用;在模型B的部分講得比較簡(jiǎn)單,這里做一些說(shuō)明。
上相機(jī)到底來(lái)干什么的?
這里也回顧一下,我們上面講的模型C的相機(jī)也就是下相機(jī)的作用,它是來(lái)計(jì)算用于貼合或者裝配產(chǎn)品的抓取的偏差。
而上相機(jī)用來(lái)確定被貼或者被放置的產(chǎn)品的位置偏差,就是我們的貼合的目標(biāo)位置每次都是變動(dòng)的,這也很好理解,就是當(dāng)前貼合設(shè)備在當(dāng)前產(chǎn)品貼合了,下一個(gè)產(chǎn)品進(jìn)來(lái)(皮帶軌道傳入或者機(jī)器手放入),這個(gè)產(chǎn)品的位置和上一次都有一些小的偏差,這樣就導(dǎo)致了貼合的目標(biāo)位置每次有變動(dòng),這是就需要我們的上相機(jī)先計(jì)算目標(biāo)的貼合位置。
如果是高精度的定位模具來(lái)放置目標(biāo)產(chǎn)品,這是不需要上相機(jī)來(lái)。
同時(shí)一定要理解的是:這里移動(dòng)相機(jī)的九點(diǎn)標(biāo)定得到的結(jié)果是相機(jī)的物理坐標(biāo)與目標(biāo)位置的像素坐標(biāo)的關(guān)系,因?yàn)橄鄼C(jī)移動(dòng),目標(biāo)位置即貼合位置在相機(jī)下方不動(dòng)的,通過圖像的像素坐標(biāo)計(jì)算。
但是我們最終要去貼合的時(shí)候,是夾具夾取貼合物品放到目標(biāo)位置,需要是夾具的位置與目標(biāo)位置的關(guān)系,但是通過模型B和模型D發(fā)現(xiàn),我們的相機(jī)和夾具的位置關(guān)系是固定不變的,存在一個(gè)固定的機(jī)械偏差(Mx,My)。
這里說(shuō)的夾具位置其實(shí)就是指旋轉(zhuǎn)中心,不要因?yàn)樯厦娴乃妮S機(jī)器人圖,以為我標(biāo)的夾具位置才是它的中心,一定注意這個(gè)夾具是不能旋轉(zhuǎn)的,應(yīng)該說(shuō)沒有必要,我們四軸機(jī)器人的末尾都帶有一個(gè)旋轉(zhuǎn)軸,通過這個(gè)軸實(shí)現(xiàn)旋轉(zhuǎn);模型B中的夾具可能自帶旋轉(zhuǎn),但是本質(zhì)上兩種都一樣的,結(jié)論就是夾具的中心就是旋轉(zhuǎn)中心。
同時(shí)也到這里我們也整理出上下相機(jī)貼合的第一張核心補(bǔ)償關(guān)系圖:
這張圖已經(jīng)包含所有本文章的需要講解的上下相機(jī)定位貼合的標(biāo)定和補(bǔ)償?shù)恼麄€(gè)思路,非常有利于你理清你的整個(gè)思路。突然靈光一閃想到搞這樣一張圖,花了很多時(shí)間的整理這張圖。
說(shuō)明一下本文章圖未做說(shuō)明均為原創(chuàng),可以免費(fèi)用于任何用途,請(qǐng)注明作者網(wǎng)名即可,需要圖片原稿進(jìn)行繼續(xù)創(chuàng)作或修改,可qq加群或直接聯(lián)系我,免費(fèi)。
上面這張圖,不說(shuō)清除睡不著覺,
主要這張圖不是上下對(duì)稱的,上下相機(jī)的標(biāo)定關(guān)系完全不同,請(qǐng)細(xì)心看每一個(gè)字,整個(gè)文章就是按照上面圖來(lái)講解的。
A、上下相機(jī)的輸入不同,下相機(jī):用于貼合的產(chǎn)品;上相機(jī):目標(biāo)產(chǎn)品的位置
B、最后標(biāo)定中心的關(guān)系以不同:下相機(jī):標(biāo)定特征中心,上相機(jī):移動(dòng)相機(jī)的物理位置
C、上下相機(jī)的標(biāo)定得到的轉(zhuǎn)換關(guān)系(就是我們標(biāo)定的轉(zhuǎn)換矩陣)不同:下相機(jī):貼合物的像素坐標(biāo)與旋轉(zhuǎn)中心的關(guān)系;上相機(jī):目標(biāo)貼合位置與旋轉(zhuǎn)中心的關(guān)系
D、上下相機(jī)關(guān)系紐帶:就是旋轉(zhuǎn)中心。
E、計(jì)算目的不同:下相機(jī):求取的貼合物的偏差;上相機(jī):求取的是目標(biāo)的絕對(duì)位置
F、同時(shí)也要注意上相機(jī)的如果沒有旋轉(zhuǎn),沒有旋轉(zhuǎn)標(biāo)定,這里的其實(shí)就是上文提到的:因?yàn)橄鄼C(jī)和夾具的位置關(guān)系是固定不變的,存在一個(gè)固定的機(jī)械偏差(Mx,My),就是這個(gè)偏差值。
通過上面的圖,你可以站在一個(gè)整體或者更高的角度理解,為什么進(jìn)行標(biāo)定及其意義在哪里,同時(shí)上下相機(jī)補(bǔ)償?shù)臅r(shí)候你也可以按照這個(gè)圖中的思路去完成,讓你思路更清晰,難道不應(yīng)該點(diǎn)個(gè)贊,關(guān)注一下,點(diǎn)個(gè)喜歡啊????
模型B的上相機(jī)的與旋轉(zhuǎn)中心的固定偏差(Mx,My),在使用過程中,可以直接使用機(jī)械圖紙中的測(cè)量值,當(dāng)然安裝等等誤差不可能等于這個(gè)理論值,有微小偏差;但是在我們示教貼合第一個(gè)產(chǎn)品時(shí),我們會(huì)手動(dòng)示教出一個(gè)固定的偏差,這個(gè)示教的偏差已經(jīng)包含了上面的微小偏差,所以可以不用標(biāo)定這個(gè)偏差;
如果項(xiàng)目需要標(biāo)定這個(gè)偏差,做一個(gè)專用的標(biāo)定夾具在旋轉(zhuǎn)中心,標(biāo)定塊向下點(diǎn)一個(gè)點(diǎn)或者旋轉(zhuǎn)中心對(duì)位一個(gè)點(diǎn),記錄下機(jī)械點(diǎn),然后移動(dòng)上相機(jī)讓這個(gè)點(diǎn)在圖像中心,這樣就計(jì)算出這個(gè)固定偏差(Mx,My),這里就不詳解。
對(duì)于本部分模型而言,因?yàn)橄鄼C(jī)可以旋轉(zhuǎn),所以可以直接通過旋轉(zhuǎn)標(biāo)定進(jìn)行計(jì)算出固定偏差(Mx,My)。
如下:
在四軸機(jī)器人調(diào)整到定點(diǎn)P2(x,y)不變的位置進(jìn)行旋轉(zhuǎn),選擇一個(gè)好的角度和位置,這樣選擇旋轉(zhuǎn)位置前面也講過,相機(jī)下方放置一個(gè)固定標(biāo)定特征,然后旋轉(zhuǎn)軸每次固定角度旋轉(zhuǎn)拍出,旋轉(zhuǎn)拍照。
計(jì)算過程如下:
記錄第一個(gè)點(diǎn)物理點(diǎn)P2(x,y),提取特征中心的像素為(Prx1,Pry1)
旋轉(zhuǎn)一個(gè)小角度,
記錄第二個(gè)點(diǎn)物理點(diǎn)P2(x,y),提取特征中心的像素為(Prx2,Pry2)
旋轉(zhuǎn)第N個(gè)點(diǎn)物理點(diǎn)P2(x,y),提取特征中心的像素為(PrxN,PryN)
現(xiàn)在已知的條件:定點(diǎn)物理點(diǎn)P2(x,y),一系列像素坐標(biāo)(PrxN,PryN),還是有我們前面九點(diǎn)標(biāo)定矩陣HomMat2D(不要忘了)。
這些過程都和模型C的旋轉(zhuǎn)一樣,只是這個(gè)模型的相機(jī)在移動(dòng)。
求取的固定偏差(Mx,My)Halcon計(jì)算如下:
第一步,擬合點(diǎn)計(jì)算:
*九點(diǎn)標(biāo)定的矩陣
HomMat2D:=[0.0202215,3.43298e-005,-27.1543,3.20314e-005,-0.0202298,75.8988]
*旋轉(zhuǎn)點(diǎn)集的像素坐標(biāo),例如如下
Prx:=[0,1,2,3,4,5,6]
Pry:=[0,1,2,3,4,5,6]
forIndex:=0to|Prx|-1by1
*通過矩陣轉(zhuǎn)換一個(gè)點(diǎn)到另一點(diǎn)的算子
affine_trans_point_2d(HomMat2D,Prx[Index],Pry[Index],Qx,Qy)
Qrx[Index]:=Qx
Qry[Index]:=Qy
Endfor
已經(jīng)得到我們的物理的擬合點(diǎn)Qrx,Qry
第二步,擬合圓:
*擬合圓
*先生成輪廓
gen_contour_polygon_xld(Contour,Qry,Qrx)
*輪廓擬合圓,算法要選擇'geotukey',自己看說(shuō)明文檔
fit_circle_contour_xld(Contour,'geotukey',-1,0,0,3,2,Row_D,Column_D,Radius_D,StartPhi,EndPhi,PointOrder)
擬合圓不細(xì)講,網(wǎng)上都有,得到我們的圓心(Column_D,Row_D)(注意這里X,Y坐標(biāo)和行、列坐標(biāo)區(qū)別),半徑:Radius_D
Radius_D就是相機(jī)到旋轉(zhuǎn)中心距離,拿直尺量一下對(duì)比一下,如果相差很離譜那肯定是計(jì)算哪里有問題,查找一下問題
同時(shí)這里也給大家說(shuō)一下非常非常寶貴有用的項(xiàng)目經(jīng)驗(yàn),我覺得下面兩句話就值得10金幣,會(huì)給大家節(jié)約很多驗(yàn)證標(biāo)定的正確的時(shí)間,怎樣去驗(yàn)證標(biāo)定的正確性(后面不再說(shuō)明了):
驗(yàn)證九點(diǎn)標(biāo)定是否正確:
計(jì)算九點(diǎn)標(biāo)定后,圖像中心的坐標(biāo)經(jīng)過矩陣轉(zhuǎn)換得到物理坐標(biāo),運(yùn)動(dòng)到這個(gè)點(diǎn),計(jì)算圖像中的標(biāo)定物體的像素坐標(biāo)應(yīng)該是圖像中心的坐標(biāo),先看看這個(gè)是否正確,然后在驗(yàn)證旋轉(zhuǎn)
驗(yàn)證旋轉(zhuǎn)標(biāo)定是否正確:
圖像中心的坐標(biāo)經(jīng)過矩陣轉(zhuǎn)換得到物理坐標(biāo),然后加上計(jì)算的偏差,然后運(yùn)動(dòng)到這個(gè)點(diǎn):如果模型C:發(fā)現(xiàn)旋轉(zhuǎn)中心在圖像中心就是正確的;如果模型D:發(fā)現(xiàn)旋轉(zhuǎn)中心在標(biāo)定特征的正上方就是正確的。
第三步,計(jì)算偏差:
既然已經(jīng)知道旋轉(zhuǎn)中心坐標(biāo),那我們就可以求出標(biāo)定中心和旋轉(zhuǎn)中心的偏差:
還記的上面的我們是在P2(x,y)做的定點(diǎn)旋轉(zhuǎn)
halocn計(jì)算偏差:
*定點(diǎn)P2
x:=1
y:=1
Mx:=Column_D-x
My:=Row_D-y二、上下雙相機(jī)貼合模型
整個(gè)補(bǔ)償?shù)乃悸芳斑^程都在第一章的模型D中已經(jīng)講過,這里就不再進(jìn)行分析了。
整體思路:
上相機(jī)作用:確定貼合的產(chǎn)品的放置位置
下相機(jī)作用:確定抓取或者吸取料的偏差值
1.
貼合模型:模型B+
模型C
上圖是當(dāng)前貼合項(xiàng)目的主流的模型,了解這種模型整個(gè)補(bǔ)償過程,其他變種模型也基本雷同,上圖中的部件組成不進(jìn)行詳細(xì)講解,見上文即可。
工作流程,后面的講解也按照以下流程進(jìn)行,如下圖:
A、產(chǎn)品進(jìn)入當(dāng)前工位(軌道流入或者機(jī)器人抓入),如圖三個(gè)位置需要貼料
B、X.Y軸移動(dòng)到剝料機(jī)位置,抓取料
C、運(yùn)動(dòng)到下相機(jī)位置拍照,計(jì)算偏差
D、X.Y軸運(yùn)動(dòng)到貼合位置,加上偏差進(jìn)行貼料
E、產(chǎn)品離開當(dāng)前工位,等待下一個(gè)產(chǎn)品
當(dāng)然有些設(shè)備,可以先取料下相機(jī)拍照
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 青少年發(fā)展中心學(xué)困生輔導(dǎo)制度
- 公共服務(wù)領(lǐng)域道德宣傳活動(dòng)方案
- 吉林大學(xué)《量子力學(xué)ⅡA》2021-2022學(xué)年第一學(xué)期期末試卷
- 跨國(guó)企業(yè)合作協(xié)議書
- 房地產(chǎn)項(xiàng)目備案流程工作總結(jié)
- 科技公司董事聘任協(xié)議書
- 2025屆高考化學(xué)一輪復(fù)習(xí)第五章物質(zhì)結(jié)構(gòu)元素周期律第14講元素周期表元素周期律練習(xí)含解析新人教版
- 2024年內(nèi)地居民離婚登記常見問題解答
- 安徽省皖中聯(lián)盟2023-2024學(xué)年高二上學(xué)期1月期末生物試題 含解析
- 2024年公司機(jī)密信息保密協(xié)議
- 施工極端天氣應(yīng)急預(yù)案方案
- 事業(yè)單位工作人員調(diào)動(dòng)申報(bào)表
- 幼兒園家長(zhǎng)會(huì)內(nèi)容及流程
- 《創(chuàng)業(yè)融資實(shí)務(wù)》課件-大學(xué)生創(chuàng)業(yè)貸款
- 貴金屬行業(yè)市場(chǎng)前景分析課件
- 產(chǎn)后保健服務(wù)指南
- 金屬有機(jī)化學(xué)通用課件
- 湖南省常德市初中教學(xué)聯(lián)盟校2023-2024學(xué)年八年級(jí)上學(xué)期期末考試英語(yǔ)試題
- 職業(yè)發(fā)展生涯報(bào)告
- 公司年度IT基礎(chǔ)設(shè)施總結(jié)
- 民用爆炸品培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論