关于机器人视觉的手眼标定的原理,勇哥先放上一些教程资源:

众所周知,目前机器视觉项目,很大一部分都是引导机器人去取料 放料等工作。

这个里面就有个非常重要的工作要做。就是将相机的坐标系  映射到机器人坐标系里面,这样才可以实现视觉配合机器人动作。

通常这种标定使用有多点标定法(俗称九宫格标定法)可以实现将相机坐标系映射到机器人坐标系里面。

在康耐视软件中九宫格算法的结果如下图,它的这个功能,halcon也有对应的算子,请继续往下读。

上面的教程里讲的是手眼标定的原理,真正用起来,只是halcon的几个算子。

下面勇哥附上代码示例:*标定数据

vector_to_hom_mat2d ([1863.074,1853.723,1858.503,1060.254,2654.917,2659.306,2650.395,1055.019,1064.807]\

,[1934.265,3530.841,2732.168,2724.893,2736.01,1938.346,3534.78,3523.122,1926.546],\

[76398,66398,71398,71398,71398,76398,66398,66398,76398]\

,[-40614,-40614,-40614,-35614,-45614,-45614,-45614,-35614,-35614], HomMat2D)

*查看qx,qy的值 是否和标定的数据差异太大

affine_trans_point_2d (HomMat2D, 1863, 1934, Qx, Qy)

hom_mat2d_to_affine_par (HomMat2D, Sx, Sy, Phi, Theta, Tx, Ty)

hom_mat2d_to_affine_par算子的结果见下图所示:

下面是几个算子的解释,供大家参考:根据三个以上特征点获取仿射变换矩阵

vector_to_hom_mat2d(::Px,Py,Qx,Qy:HomMat2D)

功能:根据三个以上点对计算仿射变换矩阵,支持旋转、平移、缩放、斜切

Px:(输入参数)原始点组的x坐标

Py:(输入参数)原始点组的y坐标

Qx:(输入参数)变换的目的点组的x坐标

Qy:(输入参数)变换的目的点组的y坐标

HomMat2D:(输出参数)输出仿射变换矩阵

×××××××××××××××××××××××××××××××××××××××××

affine_trans_point_2d(::HomMat2D,Px,Py:Qx,Qy)

功能:对点进行任意二维仿射变换,支持缩放、旋转、平移、斜切

HomMat2D(输入参数):仿射变换矩阵

Px(输入参数):原始点x或行坐标

Py(输入参数):原始点y或列坐标

Qx(输出参数):变换点x或行坐标

Qy(输出参数):变换点y或列坐标

××××××××××××××××××××××××××××××××××××

计算仿射变换参数

hom_mat2d_to_affine_par(::HomMat2D:Sx,Sy,Phi,Theta,Tx,Ty)

功能:根据仿射变换矩阵(齐次二维变换矩阵)计算仿射变换参数

HomMat2D(输入参数):仿射变换矩阵

Sx(输出参数):x方向的缩放因子(如果从图像空间变换到物理空间,就是x方向的        像素单量)

Sy(输出参数):y方向的缩放因子(如果从图像空间变换到物理空间,就是y方向的        像素单量)

Phi(输出参数):旋转角度

Theta(输出参数):斜切角度

Tx(输出参数):沿x方向平移的距离

Ty(输出参数):沿y方向平移的距离

请注意:

机器人的九组坐标位置,一般情况下并不能直接使用机器人的当前坐标位置信息。

原因如下图所示:机器人有两个爪子A头与B头,要吸取的产品在它们的下面,它们的中心并不是机器人J3关节的中心。

这种情况下,你得为A头与B头各创建一个工具坐标。在进行九点标定的时候,我们使用这个工具坐标记录机器人九个点的坐标位置。

有关epson机器人的工具坐标系的创建方法见下面的教程:

netMarkting类库有专门的机器人视觉标定的类,有空勇哥会整理发布出来。

---------------------

作者:hackpig

来源:www.skcircle.com

版权声明:本文为博主原创文章,转载请附上博文链接!

#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐