所謂手眼系統,就是人眼睛看到乙個東西的時候要讓手去抓取,就需要大腦知道眼睛和手的座標關係。如果把大腦比作b,把眼睛比作a,把手比作c,如果a和b的關係知道,b和c的關係知道,那麼c和a的關係就知道了,也就是手和眼的座標關係也就知道了。
相機知道的是畫素座標,機械手是空間座標系,所以手眼標定就是得到畫素座標系和空間機械手座標系的座標轉化關係。
在實際控制中,相機檢測到目標在影象中的畫素位置後,通過標定好的座標轉換矩陣將相機的畫素座標變換到機械手的空間座標系中,然後根據機械手座標系計算出各個電機該如何運動,從而控制機械手到達指定位置。這個過程中涉及到了影象標定,影象處理,運動學正逆解,手眼標定等。
常用的標定方法有:九點標定
九點標定:
九點標定直接建立相機和機械手之間的座標變換關係。
讓機械手的末端去走這就9個點得到在機械人座標系中的座標,同時還要用相機識別9個點得到畫素座標。這樣就得到了9組對應的座標。
由下面的式子可知至少需要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是影象座標和機械手座標之間的關係
(2)、求解
affine_trans_point_2d(hommat2d,row2,column2,qx,qy)
%由畫素座標和標定矩陣求出機械人基礎座標系中的座標
一些特殊情況的解釋:
有些情況中我們看到相機固定在乙個地方,然後拍照找到目標,控制機械手去抓取,這種就很好理解。我們也叫做eye-to-hand
還有一種情況是相機固定在機械手上面,這種情況的標定過程實際上和相機和機械手分離的標定方法是一樣的,因為相機拍照時,機械手會運動到相機標定的時候的位置,然後相機拍照,得到目標的座標,再控制機械手,所以簡單的相機固定在末端的手眼系統很多都是採用這種方法,標定的過程和手眼分離系統的標定是可以相同對待的。我們也叫做eye-in-hand
深入淺出Mybatis 外掛程式原理
mybatis採用責任鏈模式,通過動態 組織多個 外掛程式 通過這些 可以改變mybatis的預設行為 諸如sql重寫之類的 由於外掛程式會深入到mybatis的核心,因此在編寫自己的外掛程式前最好了解下它的原理,以便寫出安全高效的外掛程式。mybatis 支援對executor statement...
深入淺出通訊原理筆記
論壇上的帖子 深入淺出通訊原理是比較不錯的技術貼,位址 摘錄一下比較有收穫的幾個部分 1 作者證明,卷積其實代表的就是求兩個多項式相乘之後的係數,如果能把訊號表示成多項式的形式,那麼訊號的相乘其實就可以表示成多項式的係數卷積。那能不能呢?答案是肯定的。而且如果x n最好和n w0有關,那這樣表示式就...
深入淺出linux 掛載(5)
程式的空間,就好比人的空間。人住在房子裡,程式住在計算機的儲存器裡。人住的房子,當然不想成為倉庫,所以,要劃分為很多小的房子。比如有臥室 客廳等等 同樣,程式的儲存器,也不要成為倉庫。上萬個檔案堆積在一起。怎麼辦呢?分割槽 但是,windows有windows的分割槽,linux有linux的分割槽...