康耐视 VisionPro 九点标定和旋转中心标定 补偿值 通俗易懂
1)先决条件。
1)先决条件
1.在产品上做个标记点(可以用胶带弄个加号)
2.让电气调整机械手到合适的位置 最好抓的2边距离标记位置相对相同
3.吸起产品到合适的高度(实际生产时产品保持的高度)
九点标定:
1.PMA(模板匹配)工具抓到产品上的标记点并中心原点(可以放开角度到-20~25(参考值)后续用来旋转中心标定)
2.添加CogCalibNPointToNPointTool 工具 添加至9列数据用来计算校正
3.第一次记录 目前操作的 PMA的 X、Y的值 和 电气给到的坐标X、Y值,后续8次按照以该点为中心点 走9九宫格
每次偏移值依据视野来判断(依据产品大小来,尽量形成后的九个点在产品上辐射范围大一点)
4.取完9点后抓取校正图像,计算校正(RMS越小越好 )
旋转中心标定:
5.添加CogFitCircleTool工具 输入图为 PMA输出图 机械手可以顺时针 旋转15度以上 3次(不要超出相机视野) 并记录PMA的X、Y值到3行数据内 然后 点击运行 拟合为圆,圆心也就是旋转中心坐标
做完旋转中心可以把该工具删掉毕竟咱只是需要他旋转中心坐标,把坐标记录在tb的高级脚本
不固定方向的机械手会需要个补偿值 (下面是为补偿值准备的值)
参数定义:
//旋转中心
double centerX = -552.076;
double centerY = 697.265;
//图像基准值(CogFindCornerTool(找边工具(2条),可以拿到2线交叉点坐标))
double cambaseX = -355.82;
double cambaseY = 713.875;
取CogFindLineTool工具(旋转角度) 找一条边后的结果的旋转属性 点击deg切换为角度取值
double cambaseR= 0.00223881;
double currentX = cogFindCornerTool.Result.CornerX;
double currentY = cogFindCornerTool.Result.CornerY;
double r =cogFindLineTool1.Results.GetLine().Rotation - cambaseR;
double angle = CogMisc.RadToDeg(r);
//根据旋转中心和当前的值计算旋转之后的值和补偿值
double affterX = (cambaseX - centerX) * Math.Cos(r) - (cambaseY - centerY) * Math.Sin(r) + centerX;
double affterY = (cambaseY - centerY) * Math.Cos(r) + (cambaseX - centerX) * Math.Sin(r) + centerY;
offsetX =double.Parse((currentX-affterX).ToString("0.00"))*100;
offsetY =double.Parse((currentY-affterY).ToString("0.00"))*100;
offsetR = double.Parse(angle.ToString("0.00"))*100;
最后把输出的值通信给PLC
this.mToolBlock.Outputs["Result"].Value = "OK"/"NG";
this.mToolBlock.Outputs["X"].Value = offsetX ;//待补偿的X值
this.mToolBlock.Outputs["Y"].Value = offsetY ;//待补偿的Y值
this.mToolBlock.Outputs["R"].Value = offsetR ;//待补偿的角度
更多推荐
所有评论(0)