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