勇哥把x,y,z平台装上一两个加工件,来验证一下轴的精度。
方法是示教一个目标点,然后回原点后走到目标点,依次做十几次,然后求出最终的精度。
写一段halcon代码,测量如下图所示的地方。
每次走到目标点后,从头运行一次这段程序,记录上图中最下面那个绿色测量点的值。
* 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轴的方式分别对每个轴进行重复性测试。
因为只要有一个轴精度损失大,定位、贴合等操作你就别想走得准了。
---------------------
作者:hackpig
来源:www.skcircle.com
版权声明:本文为博主原创文章,转载请附上博文链接!

