手眼标定涉及的坐标系有:
工件坐标系
工具坐标系
相机坐标系(相机坐标系里又有图像坐标系和像素坐标系,这其实就是前面讲的单目标定的内容)
基坐标系
手眼标定一般有两种形式:
1、相机固定(eye-to-hand)
我们需要的最终结果,即得到base 与 cam 的空间位置关系,即一个4*4的变换矩阵。这个可以通过移动tool带着标定板移动到相机下方不同位置角度,由相机多次拍摄标定板来计算得到。
有些相机虽然固定在机械手上,但如果相机每次拍摄时都回到标定时的固定位置拍摄,这还是属于eye-to-hand模式,即相机固定不动。
对于相机固定不动模式,有一种简单的标定方法叫九点标定:摄像机和标定板不动,让机械手末端装上探针或者其它东西去走这九个点(接触),记录下这九个点在机械手基础坐标系中的位置Row1,column1,同时摄像机拍摄得到这九个点的像素坐标Row,Column,由vector_to_hom_mat2d得到工件在像素坐标系中的位置与工件在机械手基础坐标系中的位置的变换矩阵HomMat2D,假设下次一个物品过来相机拍摄得到其像素坐标,由该变换矩阵就可得到该工件在机械手基础坐标系下的坐标,进而控制机械手末端执行抓取或其它任务。
*【1】标定 *1、得到九点标定板在相机坐标系中的像素坐标 * area_center (SortedRegions, Area, Row, Column) *2、通过机械手末端走这九个点,得到九点标定板在机械手基础坐标系中的位置 *Row1:=[55,50,45,5,0,-5,-50,-50,-50] *Column1:=[375,325,270,380,330,280,395,340,290] *3、得到变换矩阵 *vector_to_hom_mat2d (Row, Column, Row1, Column1, HomMat2D) *【2】求解 *affine_trans_point_2d (HomMat2D, row2, column2, Qx, Qy)
2、相机固定在机械手工具上(eye-in-hand)
我们需要的最终结果,即得到cam与 tool 的空间位置关系,即一个4*4的变换矩阵。这个可以每次移动tool即相机在不同位置角度多次拍摄标定板来计算得到。
==================================
手眼标定最简单的方法:九点标定
九点标定的目的:
建立Mark点的图像坐标与其在机械手坐标系下的仿射变换矩阵,利用求得的仿射变换矩阵,可以把Mark点的图像坐标转成物理坐标,进而控制机械手完成定点抓取任务。
halcon九点标定算子
%Mark点像素坐标
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是Mark点像素坐标和机械手坐标之间的关系
affine_trans_point_2d(HomMat2D,Row2,Column2,Qx,Qy)
%由像素坐标和HomMat2D矩阵求出机械手坐标系中的坐标
---------------------
作者:qq_35224449
来源:CSDN
原文:https://blog.csdn.net/qq_35224449/article/details/95205243
版权声明:本文为博主原创文章,转载请附上博文链接!
---------------------
作者:东城青年
来源:CSDN
原文:https://blog.csdn.net/qq_24946843/article/details/84376894
版权声明:本文为博主原创文章,转载请附上博文链接!

