勇哥的视觉实验:验证x,y,z平台轴的精度


勇哥把x,y,z平台装上一两个加工件,来验证一下轴的精度。

方法是示教一个目标点,然后回原点后走到目标点,依次做十几次,然后求出最终的精度。

image.png

写一段halcon代码,测量如下图所示的地方。

image.png

每次走到目标点后,从头运行一次这段程序,记录上图中最下面那个绿色测量点的值。

* Image Acquisition 01: Code generated by Image Acquisition 01
* Image Acquisition 01: Attention: The initialization may fail in case parameters need to
* Image Acquisition 01: be set in a specific order (e.g., image resolution vs. offset).
open_framegrabber ('GigEVision2', 0, 0, 0, 0, 0, 0, 'progressive', -1, 'default', -1, 'false', 'default', '94aab8029638_Microvision_MVEM500M', 0, -1, AcqHandle)
set_framegrabber_param (AcqHandle, 'ExposureTime', 17173.0)
set_framegrabber_param (AcqHandle, 'AutoExposureTimeUpperLimit', 67567.0)
grab_image (Image, AcqHandle)
* Image Acquisition 01: Do something
close_framegrabber (AcqHandle)

* Measure 01: Code generated by Measure 01
* Measure 01: Prepare measurement
AmplitudeThreshold := 40
RoiWidthLen2 := 5
set_system ('int_zooming', 'true')
* Measure 01: Coordinates for line Measure 01 [0]
LineRowStart_Measure_01_0 := 1220.36
LineColumnStart_Measure_01_0 := 1239.55
LineRowEnd_Measure_01_0 := 966.854
LineColumnEnd_Measure_01_0 := 1248.75
* Measure 01: Convert coordinates to rectangle2 type
TmpCtrl_Row := 0.5*(LineRowStart_Measure_01_0+LineRowEnd_Measure_01_0)
TmpCtrl_Column := 0.5*(LineColumnStart_Measure_01_0+LineColumnEnd_Measure_01_0)
TmpCtrl_Dr := LineRowStart_Measure_01_0-LineRowEnd_Measure_01_0
TmpCtrl_Dc := LineColumnEnd_Measure_01_0-LineColumnStart_Measure_01_0
TmpCtrl_Phi := atan2(TmpCtrl_Dr, TmpCtrl_Dc)
TmpCtrl_Len1 := 0.5*sqrt(TmpCtrl_Dr*TmpCtrl_Dr + TmpCtrl_Dc*TmpCtrl_Dc)
TmpCtrl_Len2 := RoiWidthLen2
* Measure 01: Create measure for line Measure 01 [0]
* Measure 01: Attention: This assumes all images have the same size!
gen_measure_rectangle2 (TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2, 2592, 1944, 'nearest_neighbor', MsrHandle_Measure_01_0)
* Measure 01: ***************************************************************
* Measure 01: * The code which follows is to be executed once / measurement *
* Measure 01: ***************************************************************
* Measure 01: The image is assumed to be made available in the
* Measure 01: variable last displayed in the graphics window
copy_obj (Image, Image, 1, 1)
* Measure 01: Execute measurements
measure_pos (Image, MsrHandle_Measure_01_0, 1, AmplitudeThreshold, 'all', 'all', Row_Measure_01_0, Column_Measure_01_0, Amplitude_Measure_01_0, Distance_Measure_01_0)
* Measure 01: Do something with the results


//1184.12
//1184.13
//1184.16
//1184.09
//1184.14
//1184.14
//1184.13
//1184.2
//1184.23
//1184.23
//1184.26
//1184.29
//1184.26


从这个结果来看,这个平台重复运行3,4次的话,精度为2到4个丝的样子。

但是重复次数一多后,精度就飘起来了,这个跟回原点的精度损失积累有关。

因为这个机器没有原点感应开关,它所谓的回原点只不过是开机时把当前位置确定为原点罢了。

所以存在误差积累,不能消除。


实际项目中,我们一般使用三丰指针型千分表顶住x,y轴的方式分别对每个轴进行重复性测试。

image.png

因为只要有一个轴精度损失大,定位、贴合等操作你就别想走得准了。


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

作者:hackpig

来源:www.skcircle.com

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



本文出自勇哥的网站《少有人走的路》wwww.skcircle.com,转载请注明出处!讨论可扫码加群:
  • 评论列表:
  •  访客
     发布于 2020-05-11 01:02:46  回复该评论
  • 勇哥,如果机械单轴的重复精度很高但xyz轴装配不垂直,做完九点标定后视觉补偿的精度能很高吗?
    •  勇哥,很想停止
       发布于 2020-05-11 09:20:09  回复该评论
    • 你说的这个问题我最近也在研究。
      你说的问题,如果用普通的九点标定,虽然已经把这种因素标进去了,但是肯定会在视野内不同的位置走的准确性不同。
      貌似如果使用halcon自己的基于标准片的手眼标定方法,利用到了相机内参与外参。不知道是否对于这个问题有帮助,这个就需要实验研究了。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«    2024年3月    »
123
45678910
11121314151617
18192021222324
25262728293031
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 点击查阅微信群二维码
  • 扫描加勇哥的非标自动化群,验证答案:C#/C++/VB勇哥的非标自动化群
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:
  • 留言板:

Powered By Z-BlogPHP 1.7.2

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864