所謂手眼系統(tǒng),就是人眼睛看到一個東西的時候要讓手去抓取,就需要大腦知道眼睛和手的坐標(biāo)關(guān)系。如果把大腦比作B,把眼睛比作A,把手比作C,如果A和B的關(guān)系知道,B和C的關(guān)系知道,那么C和A的關(guān)系就知道了,也就是手和眼的坐標(biāo)關(guān)系也就知道了。
相機知道的是像素坐標(biāo),機械手是空間坐標(biāo)系,所以手眼標(biāo)定就是得到像素坐標(biāo)系和空間機械手坐標(biāo)系的坐標(biāo)轉(zhuǎn)化關(guān)系。
在實際控制中,相機檢測到目標(biāo)在圖像中的像素位置后,通過標(biāo)定好的坐標(biāo)轉(zhuǎn)換矩陣將相機的像素坐標(biāo)變換到機械手的空間坐標(biāo)系中,然后根據(jù)機械手坐標(biāo)系計算出各個電機該如何運動,從而控制機械手到達指定位置。這個過程中涉及到了圖像標(biāo)定,圖像處理,運動學(xué)正逆解,手眼標(biāo)定等。
常用的標(biāo)定方法有:九點標(biāo)定
九點標(biāo)定:
九點標(biāo)定直接建立相機和機械手之間的坐標(biāo)變換關(guān)系。
讓機械手的末端去走這就9個點得到在機器人坐標(biāo)系中的坐標(biāo),同時還要用相機識別9個點得到像素坐標(biāo)。這樣就得到了9組對應(yīng)的坐標(biāo)。
由下面的式子可知至少需要3個點才能求出標(biāo)定的矩陣。
(1)、標(biāo)定,Halcon中進行9點標(biāo)定的算子
?
?
%前面求出圖像坐標(biāo) area_center(SortedRegions,Area,Row,Column) % Column_robot := [275,225,170,280,230,180,295,240,190] %機器人末端運動到9點的列坐標(biāo) Row_robot := [55,50,45,5,0,-5,-50,-50,-50] %機器人末端運動到9點的行坐標(biāo) vector_to_hom_mat2d(Row,Column,Row_robot,Column_robot,HomMat2D) %求解變換矩陣,HomMat2D是圖像坐標(biāo)和機械手坐標(biāo)之間的關(guān)系
?
?
(2)、求解
C#
?
?
affine_trans_point_2d(HomMat2D,Row2,Column2,Qx,Qy) %由像素坐標(biāo)和標(biāo)定矩陣求出機器人基礎(chǔ)坐標(biāo)系中的坐標(biāo)
?
?
一些特殊情況的解釋:
有些情況中我們看到相機固定在一個地方,然后拍照找到目標(biāo),控制機械手去抓取,這種就很好理解。我們也叫做eye-to-hand
還有一種情況是相機固定在機械手上面,這種情況的標(biāo)定過程實際上和相機和機械手分離的標(biāo)定方法是一樣的,因為相機拍照時,機械手會運動到相機標(biāo)定的時候的位置,然后相機拍照,得到目標(biāo)的坐標(biāo),再控制機械手,所以簡單的相機固定在末端的手眼系統(tǒng)很多都是采用這種方法,標(biāo)定的過程和手眼分離系統(tǒng)的標(biāo)定是可以相同對待的。我們也叫做eye-in-hand
審核編輯:黃飛
評論
查看更多