相機固定不動, 上往下看引導機器人移動
機器人與視覺標定理論詳解
相機固定不動, 上往下看引導機器人移動1.相機非線性校正
使用標定板做非線性校正
2.相機與機器人做9點標定
可以使用機器人扎9個點,或者機器人抓住工件擺放9個位置,得到9個機械座標,相機也得到9個畫素座標,然後標定
3.計算機器人的旋轉中心
機器人抓取工件分別旋轉三個角度擺放到相機視野內,相機可以得到三個座標值,透過三個座標值擬合圓獲得圓心座標即為旋轉中心
4.相機透過公式計算得出最終的輸出結果
(rx0, ry0)為旋轉中心,( x, y)為被旋轉的點,(x0,y0)旋轉後的點
x0= cos (a) * (x-rx0) – sin (a) * (y-ry0) +rx0
y0= cos (a) * (y-ry0) + sin (a) * (x-rx0) +ry0
相機固定不動, 下往上看1.相機非線性校正
使用機器人吸起標定板做非線性校正
2.相機與機器人做9點標定
可以使用實物標定,機器人抓住工件擺放9個位置,得到9個機械座標,相機也得到9個畫素座標,然後標定。
參考上面的上往下看。
相機固定在機器人上,離旋轉中心較近1、相機非線性矯正
2、相機與機器人做9點標定
可以使用實物標定,機器人抓住工件擺放9個位置,得到9個機械座標,相機也得到9個畫素座標,(機器人每次需要回到固定位置拍照),然後標定
3、計算機器人的旋轉中心
機器人抓取工件分別旋轉三個角度擺放到相機視野內,相機可以得到三個座標值,透過三個座標值擬合圓獲得圓心座標即為旋轉中心
4、相機透過公式計算得出最終輸出結果
相機固定在機器人上,離旋轉中心很遠1、相機非線性矯正
2、相機與機器人做9點標定
3、計算機器人的旋轉中心
4、相機透過公式計算得出最終輸出結果
注:由於選擇中心距離視野很遠,通常擬合出來的旋轉中心存在比較大的誤差,給定位精度造成影響。
分離軸分離軸的設計方式有很多,XY + θ, X+Y θ, X θ+Y….,具體狀況具體分析,目的是要找到旋轉中心,做好9點標定。
1.相機非線性校正
2.相機與機器人做9點標定
3.計算機器人的旋轉中心
4.相機透過公式計算得出最終的輸出結果
旋轉中心標定說明旋轉中心方法用於所有機器人與視覺配合場景
方法:計算工件實際發生的偏移量和旋轉量,結合機器人的旋轉中心進行二次補償後,把補償量
傳送給機器人,然後機器人把補償量補償後進行抓取或放置即可;
點座標旋轉方法計算某個點繞另外一點旋轉一定角度後的座標,如圖:
機器人與視覺標定理論詳解
A(x,y)繞B(rx0,ry0)旋轉a度後的位置為C(x0,y0),則有如下關係式:
x0= cos (a) * (x-rx0) – sin (a) * (y-ry0) +rx0
y0= cos (a) * (y-ry0) + sin (a) * (x-rx0) +ry0
下面計算所有的旋轉和偏移量均是基於上面的公式旋轉中心標定說明STD方法的計算:CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0
CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0
X’= cos (a) * (X0-Cx0) – sin (a) * (Y0-Cy0) + Cx0
Y’= cos (a) * (Y0-Cy0) – sin (a) * (X0-Cx0) + Cy0
CDx=X1-X’
Cdy=Y1-Y’
這裡是機器人在取料之前,先把自己的角度補正到與 物料當前角度一致,到(X’,Y’)位置處,然後移動 CDx,Cdy,與物料位置也重合,然後去取料。這樣就保證了每次取料後,物料相對於機器人的位置 一致,因此直接往目標位置放就可以。這種方式由於是取物料的時候調整位置,因此適用於 相機固定在機械手上、相機固定安裝從上往下看的方式。如果相機固定安裝從下往上看,由於機器人這時候已經取完料了,就不適合使用了。
特別注意這裡計算到的Cdx和Cdy一定要補償到機器人的取料位置裡,不能補償到 放料位置。旋轉中心方法計算到的偏差可以直接補償到放料位置。原因如下:
旋轉中心法的計算:(X,Y)是定位到的產品位置,(GX,GY)是標準模板位置,(X’,Y’)是補償了角度後的新位置,則:
X’ = cos θ * (X-Xo) – sin θ *(Y-Yo) + Xo;
Y’ = cos θ* (Y-Yo) + sin θ* (X-Xo) + Yo;
Offset X=X’-GX
Offset Y=Y’-GY
Offset Theta= θ
求旋轉中心方法當相機FOV與旋轉中心很近,可以用旋轉3點以上擬合一個圓求圓心
當相機FOV與旋轉中心很遠,使用旋轉3或多個點求圓心,準確性會很差。
解法(X0,Y0)為旋轉中心, (X1,Y1)及(X2,Y2)為工件在視野中旋轉角度a的前後座標,(Xt,Yt)為兩點連線的延長。
d = √(X2-X1)^2 + (Y2-Y1)^2
角度a
R = d/2/sin(a/2)
R/d = (Xt-X1)/(X2-X1)
R/d = (Yt-Y1)/(Y2-Y1)
Xt = (1-R/d)*X1 + (R/d)*X2
Yt = (1-R/d)*Y1 + (R/d)*Y2
X0= cos (90-a/2) * (Xt-X1) – sin (90-a/2) * (Yt-Y1) +X1
Y0= cos (90-a/2) * (Yt-Y1) + sin (90-a/2) * (Xt-X1) +Y1
角度:X+ Y+ 為正,反之為負
旋轉中心標定—計算補償CDx Cdy計算過程,旋轉角度a機器人與視覺標定理論詳解
CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0
= (cos (a) -1) * (Cx0-X0) – sin (a) * (Cy0-Y0) + MDx
= (cos (a) -1) * StDx- sin (a) * StDy+ MDx
CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0
= (cos (a) -1) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Mdy
= (cos (a) -1) * StDy + sin (a) * StDx + Mdy
從公式中可以看出StDx = Cx0-X0,StDy = Cy0-Y0是個常量,MDx和Mdy是每次拍照是工件(Mark)的座標與標準位置工件(Mark)的差值;
StDx與StDy怎麼計算呢?藍色的為一個二元一次方程,我們需要旋轉一個角度即可計算出;
如果計算出StDx和StDy則在執行時,直接帶入上述公式,可以很快計算出CDx,Cdy這樣給出Robot的偏移量了,而不需要計算旋轉中心的確切座標了;
如何求解StDx和StDyStDx,StDy計算過程,首先Robot在拍照點旋轉一定角度a(一定是Robot給出)
機器人與視覺標定理論詳解
CDx= cos (a) * (Cx0-X0) – sin (a) * (Cy0-Y0) + X1 – Cx0
= (cos (a) -1) * (Cx0-X0) – sin (a) * (Cy0-Y0) + MDx
= (cos (a) -1) * StDx- sin (a) * StDy+ MDx
CDy= cos (a) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Y1 – Cy0
= (cos (a) -1) * (Cy0-Y0) + sin (a) * (Cx0-X0) + Mdy
= (cos (a) -1) * StDy + sin (a) * StDx + Mdy
下面介紹如何求解StDx和StDy,旋轉一定角度a後MDx和Mdy則為確定值,cos(a)和sin(a)為確定值
0= (cos (a) -1) * StDx- sin (a) * StDy+ MDx
0= (cos (a) -1) * StDy + sin (a) * StDx + Mdy
StDx = -0.5*(Mdx*(cos(a)-1)+Mdy*sin(a)) / (1-cos(a))
StDy = 0.5*(Mdx*sin(a)-Mdy*(cos(a)-1))/(1-cos(a))
a是旋轉標準的角度
Mdx=X1-X0,即旋轉後Mark座標與訓練模板的mark座標