那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

剖析Halcon 9點標定旋轉中心標定與使用

新機器視覺 ? 來源:上位工控機軟件系統分享 ? 作者:上位工控機軟件系 ? 2021-05-08 10:05 ? 次閱讀

本文是本人的經驗總結,不代表標準理論,有錯誤請指正;

主要講解上下雙相機定位貼合的原理和實現過程,包括各種標定、組合使用及具體的halcon源碼實現,適用于的X、Y、Z三軸加一旋轉軸系統,如模組組成的多軸系統、Scara四軸機器、六軸機器人(在運行過程中保證幾個自由度不動,運行即可)

一、標定介紹

1.標定模型A:相機固定(夾具不旋轉)

e4272806-aef2-11eb-bf61-12bb97331649.png

夾具夾取產品或者標定塊,選取一個特征,開始進行標定

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為變換后的機械坐標,可直接發給機器人做移動處理。

2.標定模型B:相機移動(不旋轉)

e43f8694-aef2-11eb-bf61-12bb97331649.png

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

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

移動相機(即移動軸),每走一個點,記錄下點位軸軸坐標(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:相機固定(夾具旋轉)

e45c49d2-aef2-11eb-bf61-12bb97331649.png

首先實際固定相機的項目,基本上夾具都是可以旋轉的,因為我們去夾取的產品肯定有角度偏差,然后通過下方固定相機的拍照,補償貼合,這也是固定相機意義所在。

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

1)基本的補償流程

首先為大家講一個整體的補償過程,是怎樣產生補償的,旋轉補償和平移補償的區別。

放大模型如下:

e496f46a-aef2-11eb-bf61-12bb97331649.png

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

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

e4b6cb32-aef2-11eb-bf61-12bb97331649.png

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

紅色圓圈:旋轉軸中心

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

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

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

e4c2b46a-aef2-11eb-bf61-12bb97331649.png


梯形綠色部分:抓取的基準位置產品

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

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

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

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

e4cd837c-aef2-11eb-bf61-12bb97331649.png

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

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

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

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

第二步,假設我們上面的產品沒有偏差,直接把產品移動到我們的目標位置:標準放置位置M1(x,y,u),放下產品

第三步,確定我們的看看位置到底是怎樣偏差的,然后就知道我們該怎樣旋轉平移了。

e4d8e654-aef2-11eb-bf61-12bb97331649.png

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

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

e4f7f2b0-aef2-11eb-bf61-12bb97331649.png

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

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

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

現在可以回到正題,這個旋轉到是怎樣產生誤差的。

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

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

e503cdc4-aef2-11eb-bf61-12bb97331649.png

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

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

e514a66c-aef2-11eb-bf61-12bb97331649.png

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

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

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

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

不容易啊,終于回歸本部分的正題了,開始標定了。

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

2) 首先九點標定

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

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

基本要求:

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

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

九點標定過程:

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

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

【拓展閱讀:下面都是廢話,控制不住自己想寫,刪掉又可惜,拓展閱讀】

說一個題外話,那如果遇到項目的旋轉臂很長,視野不夠大,旋轉幾度都沒有,這種項目有嗎?肯定有啊。如果你們誰遇到了,由于讀到這里受啟發,是不是回來幫忙點個贊呢。方法就是旋轉后,標定特征離開視野,只需要平移到視野中,提取特征計算后要減去這個平移值在擬合(我沒有這樣做過,也不敢列出來,沒有實際驗證過,本文中講知識和halcon算子肯定都是項目實戰驗證過的,但是這方法肯定可行,或者那個大神做過幫忙解答一下);

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

e5396d26-aef2-11eb-bf61-12bb97331649.png

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

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

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

3) 旋轉標定

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

e5471070-aef2-11eb-bf61-12bb97331649.png

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

計算過程如下:

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

旋轉一個小角度,

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

咦,怎么物理點都沒變呢都是P1呢,肯定啊,X,Y軸都沒有動,X/Y坐標肯定不變啊;既然不變為啥要提他呢,因為我知道很多人一轉起來又懵逼了,又不清楚自己在哪里了;一定搞清楚什么在變動,什么不變。

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

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

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

求取??

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

求取:HomMat2D_C1

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

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

第一步,擬合點計算:

*九點標定的矩陣

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]

for Index := 0 to |Prx|-1 by 1

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

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

Qrx[Index]:=Qx

Qry[Index]:=Qy

Endfor

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

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

上面就算已經得到我們的物理的擬合點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)

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

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

第三步,計算偏差:

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

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

halocn計算偏差:

*定點P1

x:=1

y:=1

Dx_C:=Column_C-x

Dy_C:=Row_C-y

P1為拍照點,模板的中心點

這就是一個固定偏差值,代表是標定點特征中心和旋轉中心的偏差;

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

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

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

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

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

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

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

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

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

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

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

e581b216-aef2-11eb-bf61-12bb97331649.png

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

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

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

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

1) 九點標定

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

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

2) 旋轉標定

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

上相機到底來干什么的?

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

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

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

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

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

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

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

e5b9c94e-aef2-11eb-bf61-12bb97331649.jpg

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

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

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

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

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

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

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

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

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

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

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

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

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

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

如下:

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

計算過程如下:

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

旋轉一個小角度,

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

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

現在已知的條件:定點物理點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]

for Index := 0 to |Prx|-1 by 1

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

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

Qrx[Index]:=Qx

Qry[Index]:=Qy

Endfor

已經得到我們的物理的擬合點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)

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

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

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

驗證九點標定是否正確:

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

驗證旋轉標定是否正確:

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

第三步,計算偏差:

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

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

halocn計算偏差:

*定點P2

x:=1

y:=1

Mx:=Column_D-x

My:=Row_D-y

二、上下雙相機貼合模型

整個補償的思路及過程都在第一章的模型D中已經講過,這里就不再進行分析了。

整體思路:

上相機作用:確定貼合的產品的放置位置

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

1. 貼合模型:模型B + 模型C

e5f2389c-aef2-11eb-bf61-12bb97331649.jpg

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

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

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

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

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

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

E、產品離開當前工位,等待下一個產品

當然有些設備,可以先取料下相機拍照計算好偏差,等待產品流入,在上相機拍照后直接貼合,更加實際需求設計流程。

e60ec890-aef2-11eb-bf61-12bb97331649.png

2. 上相機計算貼合位置

產品到位,X、Y軸運動到設置好的拍照點機械點M1(x,y),

上相機拍照,視覺匹配處理得到當前產品像素坐標C1(x,y,u),

回顧一下標定模型B得到的九點標定矩陣,這里定義矩陣為:HomMat2D_B,

同時上文還講到了模型B的上相機的與旋轉中心的固定偏差(Mx,My),

通過上面我們就可以計算貼合的位置:

第一步:

大家可能都知道,是求像素轉換的坐標:

*九點標定的矩陣

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

*當前產品像素坐標C1(x,y,u),得轉換坐標:QC1(x,y)

Xc1:=2.5

Yc1:=2.5

affine_trans_point_2d (HomMat2D_B, Xc1, Yc1, Qxc1, Qyc1)

第二步:

給大家說一個說一個比較隱藏概念:

相機的九點標定都是有位置基準的。

下相機九點因為下相機固定不變,這個基本是不動的,同時下相機拍照時候都是料運動到下相機的視野中,所以下相機九點標定的矩陣直接用就行。

但是對于上相機來說,相機運動的,拍照位置也是變動的,和九點標定位置肯定不同,所以計算出來肯定存在偏差。下面解釋一下為什么會有基準:

相機在位置1進行拍照,假設在位置1紅圓點的正上方,這樣像素就是圖像中心(Width/2,Height/2,);

相機運動到位置2,假設也是在位置2紅圓點的正上方,這樣像素也是(Width/2,Height/2);

上面兩次像素都進過第一步計算,因為變換矩陣都是HomMat2D_B,所以計算出來的物理坐標肯定一樣的,但是實際上拍照時兩個位置拍照的,所以物理坐標應該是不一樣的。

所以這里需要找到九點標定的基準位置,九點標定九個位置,哪個位置是基準?

就是最特殊點,那就是像素坐標的(0,0)點,同時要記住像素中的特殊點都是有物理意義的:

所以第二步的計算過程:

*標定的基準點(0,0),得轉換坐標:Base(x,y)

affine_trans_point_2d (HomMat2D_B, 0, 0, Xbase, Ybase)

第三步

計算當前點Qup(x,y):

Qxup=Xm1-Xbase-Qxc1-Mx

Qyup=Ym1-Ybase-Qyc1-My

(當前貼合坐標=當前X、Y軸物理坐標-標定基準坐標-當前計算像素坐標-相機與旋轉中心偏差)

上面要減去第一步計算的坐標QC1(x,y)坐標,就是相機移動,相對于下面的固定拍照的產品說在圖像中是向反方向移動。同時最可怕的一點如果不知道移動相機計算出來的坐標用減,那永遠試不出來正確的補償,說多了都是淚。。

這里其實你已經可以做一些點膠機等類似模型項目了,實話說吧,上面就是核心的代碼,我想你在其他地方找不到吧,點個贊啊。說句心里話,我好像有點違規

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 相機
    +關注

    關注

    4

    文章

    1369

    瀏覽量

    53915
  • 源碼
    +關注

    關注

    8

    文章

    652

    瀏覽量

    29458
  • 六軸機器人
    +關注

    關注

    0

    文章

    42

    瀏覽量

    4449

原文標題:使用Halcon 9點標定旋轉中心標定與使用

文章出處:【微信號:vision263com,微信公眾號:新機器視覺】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問做反射式血氧飽和度測量時如何進行標定呢?

    請問做反射式血氧飽和度測量時如何進行標定呢? 目前已完成透射式血氧飽和度測量儀的設計和實現,采用的Fluke的生命體征模擬儀Prosim8進行標定的,儀器有一個模擬手指,可以將指套式探頭夾在模擬
    發表于 01-08 06:42

    ads1263的零滿量程標定命令有什么用處?

    你好,最近在設計一塊溫度表,使用了內部的2,5v基準 PGA=4 測量范圍時100mV-400mV.我現在在沒有使用標定命令(SYOCAL1;SYGCAL1)命令的情況下能夠使用官方的EXCEL
    發表于 12-30 07:06

    傳感器靜態標定的主要步驟是什么

    壓力、位移等)作為輸入量,這些標準量將用于標定傳感器。 二、標定過程 分點 : 將傳感器的全量程分成若干個等間距。這些點將作為標定過程中的輸入量參考點。 正向
    的頭像 發表于 09-19 17:02 ?1611次閱讀

    使用基于模型的標定提高開發效率

    嵌入式系統中往往包含大量的可標定參數,這些參數通常以單值、曲線(1 維表格)、MAP 圖(2 維表格)的形式存在。最終產品的質量不僅取決于算法的設計,也取決于這些可標定參數的值設置是否達到最優。
    的頭像 發表于 09-05 09:54 ?330次閱讀
    使用基于模型的<b class='flag-5'>標定</b>提高開發效率

    使用ina219測電流時,要進行標定嗎?

    使用ina219測電流時,要進行標定嗎?還有校準寄存器如何使用?謝謝
    發表于 09-05 06:09

    基于CW32的儀表精度測量實現(三):標定與校準

    標定的概念 標定是一種校準過程,它通過與已知的標準或參考值進行比較來確保測量設備、儀器或系統的準確性和可靠性。這個過程涉及調整設備,以消除系統誤差和提高測量結果與真實值的一致性,從而確保數據的精確度
    的頭像 發表于 09-02 10:07 ?406次閱讀
    基于CW32的儀表精度測量實現(三):<b class='flag-5'>標定</b>與校準

    基于DCC和張氏標定的相機鏡頭畸變校正

    電子發燒友網站提供《基于DCC和張氏標定的相機鏡頭畸變校正.pdf》資料免費下載
    發表于 08-29 10:37 ?0次下載
    基于DCC和張氏<b class='flag-5'>標定</b>的相機鏡頭畸變校正

    請問PGA308EVM標定時是否有禁用編程管腳?

    請問PGA308EVM標定時是否有禁用編程管腳(這樣可以防止產品在進入EMC測試后失去標定數據),請問這個功能是在哪個標定軟件的位置可以操作?
    發表于 08-02 06:29

    康謀技術 | 自動駕駛傳感器標定技術:從單一到聯合標定

    對傳感器進行標定以獲取各個傳感器的安裝位置。具體來說,就是通過標定確定車身坐標系下傳感器的位置。SensorCalibration傳感器標定類型在一輛具備L2+級別智駕車上
    的頭像 發表于 07-29 11:12 ?375次閱讀
    康謀技術 | 自動駕駛傳感器<b class='flag-5'>標定</b>技術:從單一到聯合<b class='flag-5'>標定</b>

    助力風電行業!深視智能SR7400線激光以機器人手眼標定實現風力葉片切割引導

    自動化系統來說,實現最佳的手眼標定是一大的難題。圖|機器人深視智能激光三維輪廓測量儀自主開發3D軟件系統,能夠同時輸出3D云和2D圖像,具備豐富的定位工具和包含N
    的頭像 發表于 07-27 08:45 ?462次閱讀
    助力風電行業!深視智能SR7400線激光以機器人手眼<b class='flag-5'>標定</b>實現風力葉片切割引導

    溫壓補償,提高氣體流量計標定精度的關鍵!

    西安云儀不僅生產和銷售多種類型的氣體流量計,滿足市場的不同需求,同時也為廣大用戶提供絕壓傳感器標定裝置與溫度傳感器標定裝置,通過使用該裝置對溫度、壓力傳感器進行標定和校準,有效確保其測量的準確性和可靠性,提高工業自動化系統的運行
    的頭像 發表于 06-20 11:46 ?702次閱讀
    溫壓補償,提高氣體流量計<b class='flag-5'>標定</b>精度的關鍵!

    CW32數字電壓電流表軟件進階教程-3.電壓電流標定

    ,AD部分可以得到數字量,對應的物理量為電壓(或電流);① 若在“零標定一個AD值Xmin,在“最大處”標定一個AD值Xmax,根據
    的頭像 發表于 05-31 16:20 ?847次閱讀
    CW32數字電壓電流表軟件進階教程-3.電壓電流<b class='flag-5'>標定</b>

    STM32是否支持CCP協議,能否用INCA/CANaple通過CAN總線的CCP協議進行標定

    想開發一款控制器,基于帶CAN總線接口的F407系列。 現在考慮參數標定/正定的問題。 不知能否通過生成A2L文件,然后用INCA/ CANaple 通過CAN總線的CCP協議進行標定? 以前沒有用過STM32芯片,用NXP和英飛凌的都可以這樣做,不知道STM32是否可以
    發表于 05-31 08:14

    以色列人工智能目標定位系統實力如何

    2019年,以色列政府宣布成立“目標定位局”,旨在為以色列國防軍(IDF),特別是以色列空軍(IAF)生成打擊目標。
    的頭像 發表于 04-16 11:13 ?438次閱讀

    TSMaster如何同時記錄標定變量和DBC信號至BLF文件

    客戶在使用TSMaster軟件標定功能時,有如下使用場景:將DBC文件中的信號與A2L文件中的標定變量同時記錄在一個記錄文件。針對此應用場景,TSMaster軟件提供了一種方法來滿足此需求。今天重點
    的頭像 發表于 03-25 08:20 ?846次閱讀
    TSMaster如何同時記錄<b class='flag-5'>標定</b>變量和DBC信號至BLF文件
    作弊百家乐官网赌具价格| 百家乐官网获胜秘决| 兴山县| 百家乐官网娱乐城体育| 金臂百家乐官网注册送彩金| 真人百家乐官网赢钱| 永利百家乐游戏| 百家乐永利娱乐网| 威尼斯人娱乐百利宫| 明升88备用| 百家乐官网娱乐皇冠世界杯| 百家乐官网的玩法技巧和规则| 百家乐打印机分析| 威尼斯人娱乐网上百家乐的玩法技巧和规则| 能赢钱的棋牌游戏| VIP百家乐官网-挤牌卡安桌板| 百家乐官网计划工具| 百家乐英皇赌场娱乐网规则| 大发888虎牌官方下载| 百家乐官网娱乐城介绍| 御匾会百家乐官网娱乐城 | 百家乐官网编单短信接收| 百家乐官网图形的秘密破解| 自贡百家乐赌| 黄浦区| 百家乐游戏玩法规则| 大发888 登陆不上| 百家乐官网游戏机子| 阳宅风水24向详解| 威尼斯人娱乐城上不了| KK百家乐官网现金网| 百家乐体育直播| 大发888游戏平台电子| 网上百家乐官网骗人的| 百家乐体育博彩| 大发888怎么下载不了| 澳门百家乐官网走势图怎么看| 真人百家乐澳门娱乐城| 皇冠网小说微博| 百家乐官网赚水方| 大发888大发888m摩卡游戏博彩官方下载|