機器人是如何標(biāo)定的呢?與人一樣,,機器人的標(biāo)定方式離不開手眼系統(tǒng)的助力——通俗的說,,就是當(dā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)系計算出各個電機該如何運動,,從而控制機械手到達(dá)指定位置。這個過程中涉及到了圖像標(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中進(jìn)行9點標(biāo)定的算子
C#
%前面求出圖像坐標(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
來源:機器人在線