工業現場相機座標系和機械手座標系的標定(1)-相機和機械手分離

工業現場使用視覺時一般需要相機座標系和機械手臂座標系的轉化,這裡介紹一種比較簡單的標定方案。沒有使用到標定板。經過幾個專案的測試,精度還算可以,如果要求高精度的場合,就用標定板標定吧!【可以購買專用的標定板,或者自己製作(像我這種窮逼),哈哈,可以閱讀這個文章下

這個軟體

自己做一個標定板嘿!】

工業現場相機座標系和機械手座標系的標定(1)-相機和機械手分離

如上圖所示:OXY為機械手座標系,O‘X’Y‘為相機座標系。theta為兩個座標系之間的夾角。假設P點在影象上的位置如圖,則P在機械手座標系有一個座標,在影象座標系也有一個座標。我們要做的工作就是影象上的任意一點都可以轉化為機械手座標系上的座標點:P(Machine) = f(P(Image))。接下來介紹如何找到這個關係。

OXY為機械手座標系 O’X‘Y’為相機座標系從上圖可以看出座標轉化關係:

x = x‘ * r * cos(theta) - y’ * r * sin(theta) + x0;

y = x‘ * r * sin(theta) + y’ * r * cos(theta) + y0;

其中r是毫米畫素比、(mm/pixel)就是一個毫米有幾個畫素,theta為兩個座標系之間的夾角,(x0,y0)為影象座標原點到機械座標原點的距離。

簡化抽象公式,假設:

a = r * cos(theta);

b = r * sin(theta);

c = x0;

d = y0;

得到:

x = x‘ * a - y’ * b + c;

y = x‘ * b + y’ * a + d;

很顯然,要解出這個方程,需要兩組對應關係,就是兩組對應的座標點。設兩組座標點,如下:

第一組:影象座標點:(xImage1,yImage1) 對應的機械座標點:(xMachine1,yMachine1)

第二組:影象座標點:(xImage2,yImage2) 對應的機械座標點:(xMachine2,yMachine2)

則可以解出a ,b, c, d。如下:

[cpp]

a = ((xMachine1 - xMachine2)*(xImage1- xImage2) + (yMachine1 - yMachine2)*(yImage1 - yImage2))

/ ((xImage1 - xImage2)*(xImage1 - xImage2) + (yImage1 - yImage2)*(yImage1 - yImage2));

b = ((yMachine1 - yMachine2)*(xImage1 - xImage2) - (xMachine1 - xMachine2)*(yImage1 - yImage2))

/ ((xImage1 - xImage2)*(xImage1 - xImage2) + (yImage1 - yImage2)*(yImage1 - yImage2));

c = xMachine1 - a*xImage1 + b*yImage1;

d = yMachine1 - b*xImage1 - a*yImage1;

所以,就得出了影象上任意一點的畫素座標轉成機械手座標的關係。

以下是我寫的一個求解a ,b, c, d軟體:需要的點

這裡

下載。下面是軟體截圖:

工業現場相機座標系和機械手座標系的標定(1)-相機和機械手分離

下面舉個栗子說明一下操作吧!這是我實際專案中的機械手和相機佈局情況,畫圖真T``M`累!,如下圖:

工業現場相機座標系和機械手座標系的標定(1)-相機和機械手分離

首先將產品上的目標點搞到機械手的Z軸的中心,然後移動到相機事業範圍內,讓識別產品上的目標點,這時,你會讀到一組機械手座標(也就是上面所說的(xMachine1,yMachine1)),和一組相機座標(也就是上面所說的(xImage1,yImage1)),再在相機視野範圍內移動機械手,就可以得到第二組資料(xMachine2,yMachine2)和(xImage2,yImage2),寫入標定軟體就可以求出a, b, c, d。就求出了影象上任意一點對應的機械座標,然後你下次移動第二個產品到相機視野時,首先識別目標點的畫素座標,經過對應的轉換就可以得出機械座標,然後進行相應的偏移即可實現你想要的操作!

當然,有些時候,實際現場並沒有如你所願,現在出現一種情況就是以機械手自帶的Z軸無法移動到視野中去,這樣就無法進行上面的操作了,系不繫!這也是我遇到的情況,SO,我的解決方案如下:先上示意圖:

工業現場相機座標系和機械手座標系的標定(1)-相機和機械手分離

如圖,就是在機械手Z軸的橫杆上加上一個橫條,使得產品可以移動到視野範圍內。然後進行上面的操作,雖然現在可以將產品移動到視野範圍內了,但是你會發現此時機械手的座標並不是產品的座標,因為他們之間隔著一個橫條,那我們要怎麼換算過來呢!

首先,我們可以這麼假定的認為,他們是機械手的座標就是產品的座標,然後就可以用上面取兩組對應點的方法求出影象上每個點的機械座標了,但是,

此時的機械座標並

不是真正的機械座標

,但是,我們可以利用這些座標找出機械手U軸的旋轉中心就是Z軸(就是實際機械座標所在的位置)在我們所建立的

不是真正的機械座標系

中的座標。是不是有點不好理解,我也不大清楚怎麼描述!求U軸的旋轉中心的過程如下:上圖:

工業現場相機座標系和機械手座標系的標定(1)-相機和機械手分離

如圖:將產品的目標點繞機械手的U軸的旋轉中心旋轉得到3的目標點的

不是真正的機械座標系

的座標P1,P2,P3,必須讓每次旋轉的目標點在視野範圍內,然後透過圓弧上的3點就可以求得圓心。此時的圓心座標為

不是真正的機械座標系

的座標。然後我們就可以求出產品中心和機械手U軸旋轉中心的deltaX,deltaY,然後就可以結合真正的機械座標系建立工件座標系,要對機械手有些瞭解才比較好理解這些拗口的話!然後對於每一個新的產品都可以建立合適的工件座標系,然後進行補正和一些操作!(上面那個

軟體

也有三點求圓心的工具)

相機繫結在機械手上的標定方法參考這裡

工業現場相機座標系和機械手座標系的標定(2)-相機和機械手繫結的情況

以上是我最近總結的心得體會,希望對大家有所幫助!如果幫助到您,點個贊!^-^

工業現場相機座標系和機械手座標系的標定(1)-相機和機械手分離

頂部