使用Halcon 9點標定旋轉中心標定與使用_第1頁
使用Halcon 9點標定旋轉中心標定與使用_第2頁
使用Halcon 9點標定旋轉中心標定與使用_第3頁
使用Halcon 9點標定旋轉中心標定與使用_第4頁
使用Halcon 9點標定旋轉中心標定與使用_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

使用Halcon9點標定旋轉中心標定與使用一、標定介紹

1.

標定模型A:相機固定(夾具不旋轉)夾具夾取產(chǎn)品或者標定塊,選取一個特征,開始進行標定

X軸、Y軸移動一個位置,記錄軸的物理坐標:(Qx1,Qy1)

提取圖像中對應特征點,圖像像素坐標:(Px1,Py1)

運動第N位置,記錄下點位軸軸坐標(QxN,QyN),t提取像素坐標:(PxN,PyN)

一般9點、16點,特征均勻分布在圖像的各個位置即可

halcon算子計算:

假如把上面記錄的點轉化成halcon的使用的方式,如下:

Px:=[1,2,3]

Py:=[1,2,3]

Qx:=[3,9,12]

Qy:=[3,9,12]

九點標定使用(仿射變換,最少三個點),不能消除鏡頭和相機畸變

vector_to_hom_mat2d(Px,Py,

Qx,Qy,HomMat2D)

HomMat2D就是得到矩陣此案例不需要標定旋轉中心,使用

Affine_Trans_Point_2d(HomMat2D,ProductCol,ProductRow,Qx,Qy);Qx,Qy為變換后的機械坐標,可直接發(fā)給機器人做移動處理。2.

標定模型B:相機移動(不旋轉)相機固定到X或者Y軸上,不能旋轉,這種是大部分設備的移動相機的模式,黃色部分是可旋轉的、當時很多設備這黃色部分是包含Z軸或者上下放料氣缸。

標定時,把標定特征的產(chǎn)品或者標定塊放在相機下方位置固定不動

移動相機(即移動軸),每走一個點,記錄下點位軸軸坐標(QxN,QyN),提取像素坐標:(PxN,PyN)

halcon算子計算:

**把上面記錄的點轉化成halcon的使用的方式,如下:

Px:=[1,2,3]

Py:=[1,2,3]

Qx:=[3,9,12]

Qy:=[3,9,12]

**九點標定使用(仿射變換)

vector_to_hom_mat2d(Px,Py,

Qx,Qy,HomMat2D)

HomMat2D就是得到矩陣,注意雖然計算過程和模型A一模一樣,但是矩陣的使用是不相同,后面會有說明3.

標定模型C:相機固定(夾具旋轉)首先實際固定相機的項目,基本上夾具都是可以旋轉的,因為我們?nèi)A取的產(chǎn)品肯定有角度偏差,然后通過下方固定相機的拍照,補償貼合,這也是固定相機意義所在。

所以標定模型A只能補償Dx、Dy(X軸、Y軸偏差),適用的實際項目情況還是比較特殊的;當前模型需要補償出角度,但是這個匹配找到產(chǎn)品的角度并不是旋轉一下這個角度就好,這會產(chǎn)生一下偏差,這也新手迷惑,或者經(jīng)常面試問的一個問題,只有了解這個問題定位才算入門。1)

基本的補償流程

首先為大家講一個整體的補償過程,是怎樣產(chǎn)生補償?shù)?,旋轉補償和平移補償?shù)膮^(qū)別。

放大模型如下:

這是一個放大的模型,軸心和夾具中心不重合,就算我們的夾具中心和旋轉軸中心是重合,但是我們夾取或者吸取產(chǎn)品也不能保證產(chǎn)品的中心和旋轉中心重合,所以結論:涉及旋轉必須進行旋轉標定,不然每次貼合總會帶有旋轉產(chǎn)生的誤差。下面分析這個旋轉到底是怎樣帶來誤差的,也就是我們旋轉標定到底在計算什么東西。

這一部分也同時解釋怎樣去補償這個旋轉誤差。

上圖的放大模型從下往上看,簡化模型在坐標系中,一定搞清楚這里,不然后面旋轉起來就沒辦法理解了

紅色圓圈:旋轉軸中心

黃色圓圈:夾具中心,這個夾具肯定很大,這里代表其中心位置,在后面計算中沒有意義

連線:表示剛性連接(就是兩者固定在一起的)

項目中,我們先抓一個產(chǎn)品訓練模板,就是模板位置,如下圖

梯形綠色部分:抓取的基準位置產(chǎn)品

模板位置和夾具中心重合,夾具的中心沒有實際意義,因為夾具只要把產(chǎn)品抓取進行,我們匹配得到的點位數(shù)據(jù)是產(chǎn)品的位置,九點標定也是標定特征的數(shù)據(jù),和夾具中心沒有任何關系,我們直接把模板位置的產(chǎn)品中心當做夾具中心也行。

實際項目中,訓練好后,我們就會手動移動軸或者機械手到要放的位置,這就是示教一個標準放置位置M1(x,y,u)(x/y軸坐標值,旋轉軸U軸值,后面會用到,記?。?,然后就是抓取產(chǎn)品拍照,補償貼合。

所以當前模板產(chǎn)品位置的偏差(0,0,0)

當我們的抓取的一個待放的產(chǎn)品時,它此時的位置可能和我們示教產(chǎn)品的位置不同,這里相當于匹配中心,偏移了(1,1,),旋轉了45度,如下圖:

同時注意產(chǎn)品是夾具抓取的,所以旋轉軸、夾具、產(chǎn)品是一體,旋轉和平移都是一體進行的。

講到這里,我們很多時候可能開始在這幅上糾結了,想怎么去補償、旋轉等等,試了半天,發(fā)現(xiàn)補償還是不對,最后發(fā)現(xiàn)不知道怎會搞了,蒙了,我在哪里,我是誰??

這里我就要給大家一個定位的這種問題的通用的思路,讓人不至于最后懵掉,說到這里,你們難道不點個贊,收藏一下,打賞一下??

第一步,首先明確我們的目標,就是我們到底在做啥,抓這個產(chǎn)品放到我們的目標問題,所以我們不要在上面圖的位置分析。

第二步,假設我們上面的產(chǎn)品沒有偏差,直接把產(chǎn)品移動到我們的目標位置:標準放置位置M1(x,y,u),放下產(chǎn)品第三步,確定我們的看看位置到底是怎樣偏差的,然后就知道我們該怎樣旋轉平移了。

第四步,最后推理出補償,看見上面圖,大家可能感覺很簡單了,黃色表示標準位置貼的產(chǎn)品,綠色表示當前產(chǎn)品位置,但是一定要明確上面的圖是在我們產(chǎn)品放置位置俯視產(chǎn)生的,所以這個補償(Dx,Dy,Du)只要直接疊加到M1(x,y,u)上,即得到我們最終的運動位置M2(x+Dx,y+Dy,u+Du),軸或者機器人直接運動到這個位置,放下產(chǎn)品即可。

第五步,計算這個偏差補償(Dx,Dy,Du),這是我們回到抓取產(chǎn)品的拍照位置,如下圖:

是不是位置和上面一張在產(chǎn)品位置放置點的一模一樣,所以直接在這里計算,就可以計算這個偏差。

同時我這么強調(diào)產(chǎn)品放置位置和拍照位置,除了讓大家了解一個正常定位的補償流程和思路外,就是得出一個結論:固定的下相機(僅僅這種模型的相機),它作用是通過計算最后得一個偏差,而不是要去計算一些絕對位置;

而絕對貼合的位置是由其他相機或者示教等等產(chǎn)生的;合在一起就組成一個完成補償。

現(xiàn)在可以回到正題,這個旋轉到是怎樣產(chǎn)生誤差的。

我們只要綠色產(chǎn)品位置移動到黃色位置即可,流程如下:

第一步:移動產(chǎn)品產(chǎn)生的偏差(1,1):

紅色旋轉中心坐標就變成了(-2,-2),綠色產(chǎn)品中心(0,0)

第二步:旋轉角度45°,一定記住旋轉中心在紅色圓圈

因為綠色產(chǎn)品中和旋轉中心的距離2√2,綠色產(chǎn)品中心位置:(-2,2√2-2)

所以可以看出,經(jīng)過平移和旋轉并不能把產(chǎn)品移動到目標位置,發(fā)現(xiàn)還差一個偏差(-2,2√2-2)(就是旋轉后坐標減去旋轉前坐標),這樣解決前面的疑惑僅直接旋轉獲得的角度不正確,會出現(xiàn)一個偏差。

這里點位和角度都很特殊,后面會講通用的角度位置偏差怎么通過Halcon算子計算。

同時,一定要注意在我們計算這個偏差的時候,我們用到了旋轉中心的坐標;但是非常遺憾的問題,我們在做九點校正的時候(根據(jù)標定模型A),標定的基準是標定特征的中心,而不是旋轉中心,實際項目中我們夾具抓取標定塊進行標定,根本做不到把旋轉中心和標定特征的中心重合,所以我們就需要通過旋轉標定找到旋轉中心并消除它。

此模式:相機固定,夾具旋轉,忘記了的看看上面模型圖片。

2)

首先九點標定

首先夾具旋轉位置選擇,一定要注意因為夾具是可以旋轉的,所以當我們夾住產(chǎn)品開始標定時,我們選取那個角度就行標定呢?

這個角度要選好,因為,這就是我們抓取拍照或者飛拍的時候也需要保持這個角度姿態(tài),如果不是這個角度,需要重新經(jīng)過一個計算轉換回去才行,這里需要大神來幫忙補充一下;因為我現(xiàn)在遇到的項目暫時還沒有要求這個,因為只要旋轉好的姿態(tài)標定就可以滿足。

基本要求:

A、角度肯定能到拍照位置能拍照,別選一個角度導致軸或者機器人最后根本就走不到拍照點

B、選擇這個角度姿態(tài),有利于我們在定點旋轉時,能夠旋轉更大的角度,因為旋轉標定找圓心,其實就是定點旋轉我們的標定特征,然后擬合找圓心,很明顯點分布的角度越大,精度越高(沒有做過旋轉的,不理解沒關系,后面講解,到時回來看看就知道怎么回事了);200°旋轉效果已經(jīng)非常好了,很多時候因為視野和機構問題,能到達90°就已經(jīng)可以了;

九點標定過程:

當這個旋轉角度確定后,九點標定就變成了了標準模型A,過程就不詳細講了,這時就得到了一個矩陣:HomMat2D。

我們前面提到過這個矩陣其實就是兩個坐標系轉換關系,這里是指下相機的圖片上像素坐標和標定特征中心的物理坐標的關系,但是上面我們知道了,我們需要的是下相機的圖片上像素坐標和旋轉中心的物理坐標的關系,所以下面進行旋轉標定。

說一個題外話,那如果遇到項目的旋轉臂很長,視野不夠大,旋轉幾度都沒有,這種項目有嗎?肯定有啊。如果你們誰遇到了,由于讀到這里受啟發(fā),是不是回來幫忙點個贊呢。方法就是旋轉后,標定特征離開視野,只需要平移到視野中,提取特征計算后要減去這個平移值在擬合。

ihalcon管理員sc6231565

解答來了:標定模型C10圖片(ihalcon管理員sc6231565提供的圖片)視野很小,旋轉軸有很長情況:

還有一個小訣竅,如果精度不是太高,兩個點就行,一個點記錄,然后直接轉180度,再記錄,直接就是直徑了,兩個點計算物理點相加除以2就是圓心,具體你們自己看著辦吧,是不是感覺處處是驚喜啊,又學到了一招。

網(wǎng)上搜索相機標定,一大堆像素坐標系、圖像坐標系、相機坐標系、世界坐標系,還有手眼標定里面的各個坐標系都不要去考慮,九點標定就是相機得到的圖像像素坐標與軸或者機器人的X、Y物理坐標的關系,就是兩個平面坐標的轉換,不要去復雜話你的系統(tǒng)考慮中間問題。

所以六軸機器人來做九點標定,第一步應該是建立與工作平面平行的平面,然后再這個平面移動做九點標定,至于這個機器人的這個新坐標系怎么建立就找搞機器人的就行;當然如果要求不高,忽略。

3)

旋轉標定

首先選擇一個定點,記錄下點物理坐標P1(x,y),然后如下圖繞著紅色的旋轉中心旋轉,黃色表示標定的特征中心,灰色表示相機的圖像,并且可以從圖像看出,左邊的旋轉角度可能旋轉90-120之間,其他位置已經(jīng)跑出圖像外了,而右邊的旋轉半徑短(標定特征中心和旋轉中心距離,實際項目機械結構決定的),視野大,所以旋轉大于200度,保證特征在視野內(nèi)。

再次強調(diào)這個旋轉的前提,在定點P1(x,y)不變的位置進行旋轉,這個點是“初始角度”的標定特征中心的坐標,而不是旋轉中心的坐標。

計算過程如下:

記錄第一個點物理點P1(x,y),提取特征中心的像素為(Prx1,Pry1)

旋轉一個小角度,

記錄第二個點物理點P1(x,y),提取特征中心的像素為(Prx2,Pry2)

咦,怎么物理點都沒變呢都是P1呢,肯定啊,X,Y軸都沒有動,X/Y坐標肯定不變??;既然不變?yōu)樯兑崴?,因為我知道很多人一轉起來又懵逼了,又不清楚自己在哪里了;一定搞清楚什么在變動,什么不變。

旋轉第N個點物理點P1(x,y),提取特征中心的像素為(PrxN,PryN)

具體多少個點,旋轉16-20個點完全夠了。

現(xiàn)在已知的條件:定點物理點P1(x,y),一系列像素坐標(PrxN,PryN),還是有我們前面九點標定矩陣HomMat2D(不要忘了)。

求?。??

一團亂,求取啥呢?一定不要忘了我們的初衷,得到旋轉中心坐標和圖像的像素坐標的關系,本質上呢:就是一個矩陣:HomMat2D_C1(模型C矩陣)

求?。篐omMat2D_C1

下面將是本文章中第一個核心知識,直接項目用的Halcon源碼。

自動化行業(yè)真的有一道門檻,你回發(fā)現(xiàn)在網(wǎng)上很難找到一些基礎的源碼或者直接可用的資料,大多數(shù)是原理性或者思路性的東西,但是只要你進入一家公司,就很輕松獲得一些自己非常難查詢到的東西,知識的流動最終變成人的流動,從一公司帶到另一個公司。如果什么知識都可以查到,公司不是完蛋了嗎?別人都把好東西放到網(wǎng)上,讓別人來搶我的飯碗嗎?我在說我自己嗎,哈哈?所以想要打破這道膜,只有進入他,找一個這樣的公司就行了啊,但是本公司只收有這方面工作經(jīng)驗的人,真tmd尷尬?怎么辦呢??當時聯(lián)系網(wǎng)站管理報個培訓班啊?。。?!所以一切存在都是合理的啊。第一步,擬合點計算:

*九點標定的矩陣

HomMat2D:=[0.0202215,3.43298e-005,-27.1543,3.20314e-005,-0.0202298,75.8988]

*旋轉點集的像素坐標,例如如下

Prx:=[0,1,2,3,4,5,6]

Pry:=[0,1,2,3,4,5,6]

forIndex:=0to|Prx|-1by1

*通過矩陣轉換一個點到另一點的算子

affine_trans_point_2d(HomMat2D,Prx[Index],Pry[Index],Qx,Qy)

Qrx[Index]:=Qx

Qry[Index]:=Qy

Endfor

最核心的一個算子:affine_trans_point_2d,就是一個矩陣轉換點。

就是把一系列的像素點for循環(huán)轉換為物理坐標點,用來擬合圓,

上面就算已經(jīng)得到我們的物理的擬合點Qrx,Qry

第二步,擬合圓:

*擬合圓

*先生成輪廓

gen_contour_polygon_xld(Contour,Qry,Qrx)

*輪廓擬合圓,算法要選擇'geotukey',自己看說明文檔

fit_circle_contour_xld(Contour,'geotukey',-1,0,0,3,2,Row_C,Column_C,Radius_C,StartPhi,EndPhi,PointOrder)

擬合圓不細講,網(wǎng)上都有,得到我們的圓心(Column_C,Row_C)(注意這里X,Y坐標和行、列坐標區(qū)別),半徑:Radius_C

完了嗎?肯定沒有啊,我們要明白我們的初衷,求旋轉中心坐標和圖像的像素坐標的關系:HomMat2D_C1(模型C矩陣),現(xiàn)在還不是呢

第三步,計算偏差:

既然已經(jīng)知道旋轉中心坐標,那我們就可以求出標定中心和旋轉中心的偏差:

還記的上面的我們是在P1(x,y)做的定點旋轉,同時也是“初始角度”的標定特征中心的坐標

halocn計算偏差:

*定點P1

x:=1

y:=1

Dx_C:=Column_C-x

Dy_C:=Row_C-yP1為拍照點,模板的中心點這就是一個固定偏差值,代表是標定點特征中心和旋轉中心的偏差;

同時一定要理解,這個偏差也是九點標定的旋轉軸的角度的姿態(tài)計算得到;

如果我們旋轉軸的角度發(fā)生改變,這個偏差是會變的;

如果項目的補償每次都有偏差。你查查你的項目,遇到過這種情況嗎,補償不穩(wěn)定。(因為旋轉中心標定不準導致的)

完成了嗎?可以說完成,也可以說沒有完成。

我們得到了Dx_C,Dy_C,HomMat2D,已經(jīng)可以用了,你們可以去看看你們的項目,很多都這樣就是了,我開始也這樣保存到本地就完了,后來我才發(fā)現(xiàn)還有優(yōu)化的空間,讓我們的計算更加優(yōu)雅。

同時如果你們的定位項目中出現(xiàn)sin,cos等待三角函數(shù)時,那肯定可以優(yōu)化,因為標定都是坐標點(x,y)的關系,點到點都可以通過矩陣實現(xiàn),最主要是halcon已經(jīng)提供這些庫,學會用就行。

至于這樣怎么樣有優(yōu)化,為什么這樣優(yōu)化必須放在使用這些矩陣的一章來進行分析了。

固定旋轉終于講完了,從簡單到復雜一步步來,搞清楚了嗎?沒搞過的,搞不清楚拿起筆畫一畫啊,打開halcon17.12,自己模擬一下特殊點驗證一下啊,都是高中的一些平面幾何知識,你只需要把設備模型抽象出來,halcon數(shù)學的算子都有啊,話都說到這里了,如果不動手自己理解,到時只有項目實戰(zhàn)試試也行。

如果現(xiàn)在最簡單的旋轉你不理解一下,到時下面我們開始旋轉相機的時候,你會懵逼掉的。

如果搞清楚了,恭喜你,其實大家說的飛拍的項目的單相機補償,你可以搞起了;至于怎樣使用上面三個參數(shù),我相信你通過我上面講的基本補償流程,試幾次應該就能搞出來。因為飛拍的項目基本都是這種模型。4.

標定模型D:相機移動(可旋轉)

這個模型如上圖,黃色部分旋轉U軸,上面固定相機,表示相機和我們的夾具一起旋轉,為啥會出現(xiàn)這種模式呢,就我個人的遇到的情況,就是因為有Scara機器人安裝需求或者限制,導致必須要這樣安裝如下圖:

模型D和模型B就是相機可以旋轉,如果我們拍照的時候,保持旋轉軸的角度和標定的一致,其實就相當于相機在我們整個過程中是沒有旋轉的,等同于模型B;

同時我先要說明,如果這個九點標定的角度和拍照時旋轉軸的角度不同,計算有哪些變化,我沒有是實現(xiàn)過,如果哪位大神實現(xiàn)過,給點提示;后面如果有時間,我也實際測試一下任意角度拍照的變換,到時更新給大家。

實際項目過程中,保持拍照的旋轉軸的角度和標定的一致這個很容易實現(xiàn),首先先選擇一個拍照的角度,然后再按照這個角度進行九點標定即可,后面就按照中模式就行講解。

1)

九點標定

選擇一個拍照的姿態(tài),確定旋轉軸的角度,然后就開始九點標定,過程和模型B相同。

這里不詳解,得到矩陣:HomMat2D

2)

旋轉標定

如果只是它當做模型B來使用,不進行旋轉標定一樣可以使用;在模型B的部分講得比較簡單,這里做一些說明。

上相機到底來干什么的?

這里也回顧一下,我們上面講的模型C的相機也就是下相機的作用,它是來計算用于貼合或者裝配產(chǎn)品的抓取的偏差。

而上相機用來確定被貼或者被放置的產(chǎn)品的位置偏差,就是我們的貼合的目標位置每次都是變動的,這也很好理解,就是當前貼合設備在當前產(chǎn)品貼合了,下一個產(chǎn)品進來(皮帶軌道傳入或者機器手放入),這個產(chǎn)品的位置和上一次都有一些小的偏差,這樣就導致了貼合的目標位置每次有變動,這是就需要我們的上相機先計算目標的貼合位置。

如果是高精度的定位模具來放置目標產(chǎn)品,這是不需要上相機來。

同時一定要理解的是:這里移動相機的九點標定得到的結果是相機的物理坐標與目標位置的像素坐標的關系,因為相機移動,目標位置即貼合位置在相機下方不動的,通過圖像的像素坐標計算。

但是我們最終要去貼合的時候,是夾具夾取貼合物品放到目標位置,需要是夾具的位置與目標位置的關系,但是通過模型B和模型D發(fā)現(xiàn),我們的相機和夾具的位置關系是固定不變的,存在一個固定的機械偏差(Mx,My)。

這里說的夾具位置其實就是指旋轉中心,不要因為上面的四軸機器人圖,以為我標的夾具位置才是它的中心,一定注意這個夾具是不能旋轉的,應該說沒有必要,我們四軸機器人的末尾都帶有一個旋轉軸,通過這個軸實現(xiàn)旋轉;模型B中的夾具可能自帶旋轉,但是本質上兩種都一樣的,結論就是夾具的中心就是旋轉中心。

同時也到這里我們也整理出上下相機貼合的第一張核心補償關系圖:

這張圖已經(jīng)包含所有本文章的需要講解的上下相機定位貼合的標定和補償?shù)恼麄€思路,非常有利于你理清你的整個思路。突然靈光一閃想到搞這樣一張圖,花了很多時間的整理這張圖。

說明一下本文章圖未做說明均為原創(chuàng),可以免費用于任何用途,請注明作者網(wǎng)名即可,需要圖片原稿進行繼續(xù)創(chuàng)作或修改,可qq加群或直接聯(lián)系我,免費。

上面這張圖,不說清除睡不著覺,

主要這張圖不是上下對稱的,上下相機的標定關系完全不同,請細心看每一個字,整個文章就是按照上面圖來講解的。

A、上下相機的輸入不同,下相機:用于貼合的產(chǎn)品;上相機:目標產(chǎn)品的位置

B、最后標定中心的關系以不同:下相機:標定特征中心,上相機:移動相機的物理位置

C、上下相機的標定得到的轉換關系(就是我們標定的轉換矩陣)不同:下相機:貼合物的像素坐標與旋轉中心的關系;上相機:目標貼合位置與旋轉中心的關系

D、上下相機關系紐帶:就是旋轉中心。

E、計算目的不同:下相機:求取的貼合物的偏差;上相機:求取的是目標的絕對位置

F、同時也要注意上相機的如果沒有旋轉,沒有旋轉標定,這里的其實就是上文提到的:因為相機和夾具的位置關系是固定不變的,存在一個固定的機械偏差(Mx,My),就是這個偏差值。

通過上面的圖,你可以站在一個整體或者更高的角度理解,為什么進行標定及其意義在哪里,同時上下相機補償?shù)臅r候你也可以按照這個圖中的思路去完成,讓你思路更清晰,難道不應該點個贊,關注一下,點個喜歡啊啊??

模型B的上相機的與旋轉中心的固定偏差(Mx,My),在使用過程中,可以直接使用機械圖紙中的測量值,當然安裝等等誤差不可能等于這個理論值,有微小偏差;但是在我們示教貼合第一個產(chǎn)品時,我們會手動示教出一個固定的偏差,這個示教的偏差已經(jīng)包含了上面的微小偏差,所以可以不用標定這個偏差;

如果項目需要標定這個偏差,做一個專用的標定夾具在旋轉中心,標定塊向下點一個點或者旋轉中心對位一個點,記錄下機械點,然后移動上相機讓這個點在圖像中心,這樣就計算出這個固定偏差(Mx,My),這里就不詳解。

對于本部分模型而言,因為相機可以旋轉,所以可以直接通過旋轉標定進行計算出固定偏差(Mx,My)。

如下:

在四軸機器人調(diào)整到定點P2(x,y)不變的位置進行旋轉,選擇一個好的角度和位置,這樣選擇旋轉位置前面也講過,相機下方放置一個固定標定特征,然后旋轉軸每次固定角度旋轉拍出,旋轉拍照。

計算過程如下:

記錄第一個點物理點P2(x,y),提取特征中心的像素為(Prx1,Pry1)

旋轉一個小角度,

記錄第二個點物理點P2(x,y),提取特征中心的像素為(Prx2,Pry2)

旋轉第N個點物理點P2(x,y),提取特征中心的像素為(PrxN,PryN)

現(xiàn)在已知的條件:定點物理點P2(x,y),一系列像素坐標(PrxN,PryN),還是有我們前面九點標定矩陣HomMat2D(不要忘了)。

這些過程都和模型C的旋轉一樣,只是這個模型的相機在移動。

求取的固定偏差(Mx,My)Halcon計算如下:

第一步,擬合點計算:

*九點標定的矩陣

HomMat2D:=[0.0202215,3.43298e-005,-27.1543,3.20314e-005,-0.0202298,75.8988]

*旋轉點集的像素坐標,例如如下

Prx:=[0,1,2,3,4,5,6]

Pry:=[0,1,2,3,4,5,6]

forIndex:=0to|Prx|-1by1

*通過矩陣轉換一個點到另一點的算子

affine_trans_point_2d(HomMat2D,Prx[Index],Pry[Index],Qx,Qy)

Qrx[Index]:=Qx

Qry[Index]:=Qy

Endfor

已經(jīng)得到我們的物理的擬合點Qrx,Qry

第二步,擬合圓:

*擬合圓

*先生成輪廓

gen_contour_polygon_xld(Contour,Qry,Qrx)

*輪廓擬合圓,算法要選擇'geotukey',自己看說明文檔

fit_circle_contour_xld(Contour,'geotukey',-1,0,0,3,2,Row_D,Column_D,Radius_D,StartPhi,EndPhi,PointOrder)

擬合圓不細講,網(wǎng)上都有,得到我們的圓心(Column_D,Row_D)(注意這里X,Y坐標和行、列坐標區(qū)別),半徑:Radius_D

Radius_D就是相機到旋轉中心距離,拿直尺量一下對比一下,如果相差很離譜那肯定是計算哪里有問題,查找一下問題

同時這里也給大家說一下非常非常寶貴有用的項目經(jīng)驗,我覺得下面兩句話就值得10金幣,會給大家節(jié)約很多驗證標定的正確的時間,怎樣去驗證標定的正確性(后面不再說明了):

驗證九點標定是否正確:

計算九點標定后,圖像中心的坐標經(jīng)過矩陣轉換得到物理坐標,運動到這個點,計算圖像中的標定物體的像素坐標應該是圖像中心的坐標,先看看這個是否正確,然后在驗證旋轉

驗證旋轉標定是否正確:

圖像中心的坐標經(jīng)過矩陣轉換得到物理坐標,然后加上計算的偏差,然后運動到這個點:如果模型C:發(fā)現(xiàn)旋轉中心在圖像中心就是正確的;如果模型D:發(fā)現(xiàn)旋轉中心在標定特征的正上方就是正確的。

第三步,計算偏差:

既然已經(jīng)知道旋轉中心坐標,那我們就可以求出標定中心和旋轉中心的偏差:

還記的上面的我們是在P2(x,y)做的定點旋轉

halocn計算偏差:

*定點P2

x:=1

y:=1

Mx:=Column_D-x

My:=Row_D-y二、上下雙相機貼合模型

整個補償?shù)乃悸芳斑^程都在第一章的模型D中已經(jīng)講過,這里就不再進行分析了。

整體思路:

上相機作用:確定貼合的產(chǎn)品的放置位置

下相機作用:確定抓取或者吸取料的偏差值

1.

貼合模型:模型B+

模型C

上圖是當前貼合項目的主流的模型,了解這種模型整個補償過程,其他變種模型也基本雷同,上圖中的部件組成不進行詳細講解,見上文即可。

工作流程,后面的講解也按照以下流程進行,如下圖:

A、產(chǎn)品進入當前工位(軌道流入或者機器人抓入),如圖三個位置需要貼料

B、X.Y軸移動到剝料機位置,抓取料

C、運動到下相機位置拍照,計算偏差

D、X.Y軸運動到貼合位置,加上偏差進行貼料

E、產(chǎn)品離開當前工位,等待下一個產(chǎn)品

當然有些設備,可以先取料下相機拍照

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論