VisionPro手眼标定(九点标定)

最近几个项目接触了定位引导项目,记录一下

一、进行标定

使用找边,找圆工具确定像素点。

1、相机不在手上

1.1、上相机标定

首先是九点标定
可以使用戳点,印圆等简便、快捷的方式在上相机视野中心的纸上留下痕迹,方便使用工具去找线、找圆。获取像素坐标。
将像素点和实际坐标点放到CogCalibNPointToNPointTool对应位置。
CogCalibNPointToNPointTool界面
输入完九个点后,点击计算校正,即可完成九点标定。

旋转中心标定

这次我们需要用到CogFitCircleTool
先把图片过一下CogCalibNPointToNPointTool,将像素坐标转为世界坐标,再用找线、找圆工具,获取坐标。将坐标输入到CogFitCircleTool中,
CogFitCircleTool
最少三个点,多多益善。
输入完点后,点击运行,在结果界面出现中心X中心Y,即为旋转中心的圆心。
至此,九点标定和旋转中心标定完成。

二、进行运算

2、根据实际产品做模板。

根据产品,找到合适的特征,并以此为计算需要X、Y和R三个数据。
先在做一个抓取的模板位置,记录当前的MarkX、MarkY和MarkR。然后随机放位置,获取当前的X、Y和R。

  //Mark点
  double point1X = Convert.ToDouble(CogToolBlock1.Outputs["MarkX"].Value);
  double point1Y = Convert.ToDouble(CogToolBlock1.Outputs["MarkY"].Value);
  double point1R = Convert.ToDouble(CogToolBlock1.Outputs["MarkR"].Value);
  //旋转中心
  double circleCenterX = cogFitCircleTool1.Result.GetCircle().CenterX;
  double circleCenterY = cogFitCircleTool1.Result.GetCircle().CenterY;

  //输入的点
  double point2X = Convert.ToDouble(CogToolBlock1.Outputs["X"].Value);
  double point2Y = Convert.ToDouble(CogToolBlock1.Outputs["Y"].Value);
  double point2R = Convert.ToDouble(CogToolBlock1.Outputs["R"].Value);

  angle = (point1R - point2R);//正负需要测试确认
  double xr = Math.Cos(angle) * (point1X - circleCenterX) - Math.Sin(angle) * (point1Y - circleCenterY) + circleCenterX;//先旋转到同一角度
  double yr = Math.Cos(angle) * (point1Y - circleCenterY) + Math.Sin(angle) * (point1X - circleCenterX) + circleCenterY;

  cdX = point2X - xr;
  cdY = point2Y - yr;

cdX、cdY、angle即为所求的当前模板位的相对差值。
特别注意:angle的正负需要测试确认。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值