工业控制
在开发项目的过程中,产品有一个入料初定位,需要操作员把产品放到载具上后,一个大视野的相机会拍一下产品,然后伺服电机对载具进行一个调整,以保证产品在小视野的相机范围内,从而进行检测。这里我们用到了相机和伺服电机的手眼标定,及位置补正算法。
机械手分为:4轴,6轴或者XY模组或UVW模组。相关的视觉引导项目主要包括:抓取,放置,位置补正,贴合。其中相机模式又分为:单相机和多相机;相机固定安装和相机手部安装。机械手核心是通过相机拍摄Mark点,计算出产品的偏移位置,让执行机构去执行某个动作。
操作步骤主要分为:4步(标定的核心思想就是相机坐标系和机械坐标系进行统一,然后根据产品实时来料位置计算偏差) 1.相机的非线性校正(此步骤需要更具实际情况选取,由于相机镜头的光学特性比较稳定,大多数情况此步骤可以省略); 2.相机与机器人做9点标定手动标定:可以使用机器人扎9个点,然后相机拍摄次9个点的像素位置;自动标定:机器人抓住工件移动9个位置,得到9个机械坐标,相机也得到9个像素坐标,然后标定(此过程需要标定软件和机械进行实时通信,确定机械位置和像素Mark点);
3.计算机器人的旋转中心
(由于机械的夹具中心和法兰中心不重合,所以需要进行旋转标定)机器人抓住工件至少旋转三个不同角度,工件要在相机视野内,相机可以得到多个像素坐标值,通过三个坐标值拟合圆心,为旋转中心;(旋转中心是否计算也要根据具体需求选取,若产品来料无角度或者产品不需要做角度补偿,则此步骤可以省略)
4.相机通过公式计算得到最终输出结果:(rx0,ry0)为旋转中心,(x,y)为被旋转的点,(x0,y0)旋转后的点旋转公式: X0 = cos(a)*(x-rx0) - sin(a)*(y-ry0) + rx0 Y0 = cos(a)*(y-ry0) + sin(a)*(x-rx0) + ry0
其中对应halcon核心算子为:
a.计算出仿射变换矩阵: vector_to_hom_mat2d( : : Px, Py, Qx, Qy : HomMat2D)
b.求旋转矩阵: hom_mat2d_rotate( : : HomMat2D, Phi, Px, Py : HomMat2DRotate)
c.应用仿射变换矩阵求出对应点: affine_trans_point_2d( : : HomMat2D, Px, Py : Qx, Qy)
d.求取圆心坐标: fit_circle_contour_xld(Contours : : Algorithm, MaxNumPoints, MaxClosureDist, ClippingEndPoints, Iterations, ClippingFactor : Row,Column, Radius, StartPhi, EndPhi, PointOrder)
编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !