博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用基恩仕7060激光测试电池宽度信息
阅读量:6991 次
发布时间:2019-06-27

本文共 2416 字,大约阅读时间需要 8 分钟。

 通过这个实验, 触及到了下面的知识点:

  • 基恩士7060蓝色激光的基本操作
  • halcon算子, FitLineContourXld, 使它们用点拟合出直线

 

需求描述

最近一个需求测量电池顶凸起面的边线到冶具边缘的宽度, 且需要得到边线的信息, 主要是它的角度信息.

 

产品外形轮廓如下图所示:

3D曲面显示,是下面的样子

 

我们让激光从凸起面的边上, 采样若干个点, 这个点取凸起面与其连接弧线之间的"弯曲点".(如下图圈所示的点)

最后使用这若干个"弯曲点" 的信息, 我们拟合出一条直线, 这条直线可以用以反映出凸起面的边相对冶具边的夹角(冶具边的永远固定的).

 

 

基恩士7060蓝色激光的基本操作

 

进入实时设定功能.

 

比较重要的是"拍摄设定", "注册主控","out测量设定"

 

在拍摄设定中, "曝光时间"非常重要, 决定了成像图像的质量, 直接影响测量的结果或者测量轮廓稳定性.

 

 通过调节曝光大小, 画面上的红色轮廓周围如果没有白色的噪波点, 为最优, 否则请调节曝光大小.

下图的红色轮廓线是最优的效果.

感光灵敏度选度,也可以尝试和曝光一起来调节.

 

在OUT测量设定功能中, 我们输出out1, 点击设定按钮, 将会选择测量类型.

 

 对于本实验, 我选择宽度.  也就是两点间垂直投影的距离了.

 

由于是宽度测试, 画面上的紫色与桔色范围框就可以各自调节, 把它们的宽度拉得足够大. 这个以适应电池的最大可活动范围为需求.

两个测量点的类型, 这里我选择弯曲点.

 

最后我的调节效果见下图.

注意图中灰色区域是由功能"轮廓屏蔽"添加上去的, 这个灰色区域不参加"弯曲点"的计算.

之所以如此, 是因为电池旋转一定角度时轮廓线上其它的弯曲点会进入到紫色范围内, 我们要排除这种情况.

 

 设置成功后, 可以看到OUT1的输出结果了.

 拟合直线用了halcon的算子FitLineContourXld

1   private void fitLine(HTuple Rows, HTuple Cols, out HTuple lineValue, out HTuple angle) 2         { 3             lineValue = new HTuple(); 4             HTuple Nr, Nc, Dist, Row1, Col1, Row2, Col2, Phi; 5             HObject contour = new HObject(); 6             HOperatorSet.GenEmptyObj(out contour); 7  8             HOperatorSet.GenContourPolygonXld(out contour, Rows, Cols); 9             HOperatorSet.FitLineContourXld(contour, "tukey", -1, 0, 5, 2, out Row1, out Col110                 , out Row2, out Col2, out Nr, out Nc, out Dist);11 12             lineValue = lineValue.TupleConcat(Row1);13             lineValue = lineValue.TupleConcat(Col1);14             lineValue = lineValue.TupleConcat(Row2);15             lineValue = lineValue.TupleConcat(Col2);16 17             HOperatorSet.AngleLl(Row1, Col1, Row2, Col2, 0, 1000, 0, 0, out Phi);18             angle = (new HTuple(Phi)).TupleDeg();19             20             contour.Dispose();21         }

调用方法

1   HTuple X = new HTuple(); 2             HTuple Y = new HTuple(); 3             int js = 0; 4             foreach (var m in lbValue.Items) 5             { 6                 X = X.TupleConcat(double.Parse(m.ToString())); 7                 Y = Y.TupleConcat(js++); 8             } 9             HTuple res=new HTuple(), angle;10             fitLine(Y, X, out res, out angle);11             double angleTmp=0f;12             double.TryParse(angle.ToString(),out angleTmp);13             rtbMsg.AppendText(180+angleTmp + Environment.NewLine);

 我在产品轮廓上每隔0.5毫米取一个点,取了11个点的数据, 由上面的拟合直线函数算出来结果为90.45度.

这个结果可以反映出物料的边缘相对于夹具边缘是不是倾斜了, 如果为90度则是平行关系.

 原创文章,出处 : 

 

转载地址:http://nabvl.baihongyu.com/

你可能感兴趣的文章
SharePoint 客户端对象模型 多选查阅项赋值
查看>>
spring前两天复习
查看>>
动手动脑
查看>>
网络流(二)最大流的增广路算法
查看>>
IIS负载均衡-Application Request Route详解第四篇:使用ARR实现三层部署架构(转载)...
查看>>
TList To DataTable
查看>>
Cache.Insert 方法(摘自MSDN)
查看>>
Duck typing
查看>>
每日一记--索引/过滤器
查看>>
Struts2的CRUD操作
查看>>
A Simple Problem with Integers
查看>>
WampServer中MySQL中文乱码解决
查看>>
Codeforces-938D-Buy a Ticket(最短路设虚拟节点+Dijk优先队列优化)
查看>>
电商打折套路分析 —— Python数据分析练习
查看>>
HTTP请求、响应报文格式
查看>>
zendstudio中出现中文乱码的解决方法
查看>>
服务器端与客户端TCP连接入门(一)
查看>>
lombok使用方法
查看>>
多线程基础
查看>>
1028: C语言程序设计教程(第三版)课后习题8.2
查看>>