1. 引言
随着时代的不断发展,企业对工件精度提出了越来越高的要求,普通钢管精度要求较低已经无法满足加工的要求。钢管的圆度和直线度是衡量钢管几何精度的重要指标,与尺寸精度和粗糙度同称为影响产品质量的四大要素。一直以来,机械制造行业对钢管圆度、直线度误差的测量和评定都十分重视。目前采取的测量直线度的方法,主要有激光准直法与拉线法等。前者以激光或者白光作为直线基准,根据靶标或反射镜在被测直线方向逐点移动测出直线度误差,光源,摄像机的安装成本高昂,软件算法复杂;后者以拉紧的丝线(如细钢丝)作为直线基准,采用适当的手段(如电容、电感)测量出直线度误差,该测量方法只适用于离线抽检,不能进行在线实时自动测量。如对棒材直线度在线实时自动检测,没有合适的测量手段,目前采用目测的方法测出钢管圆柱外表面若干母线的直线度,以估计出轴线在任意方向上的直线度。现有技术中对于在线实时自动检测棒材直线度所采用的目测、估计的方法,准确率较低,工人劳动强度大等诸多缺陷 [1] [2] [3] 。
本文通过旋转平台与测长游标配合,在线实时自动测量棒材或者管材的坐标数据并上传,通过MATLAB使用最小二乘法对钢管轮廓拟合,以此计算管材直线度。“最小二乘法”作为数据处理和误差计算的一种数学手段被广泛地应用于工程实际和实验技术中。应用最小二乘法原理对实验和测量数据进行处理时,所得到的测量结果的残余误差平方和为最小,即在满足
为最小的条件下来求解,这个方法称为最小二乘法,所得结果通常称为最佳值或最可信赖值 [4] [5] 。
最小二乘法原理在很多领域都有着广泛的应用,利用MATLAB求解非常方便,但一定要主要问题的类型,尤其是对非线性问题,最终得到的结果要保证收敛并且在有效的误差范围内,如果不能满足上述要求,则要根据具体问题的要求,依据最小二乘法的原理去重新编写程序。
2. 误差拟合
2.1. 数据输入
本模型通过旋转平台与测长游标配合,每隔一定角度采集一组钢管外侧坐标数据并上传,使用MATLAB程序进行计算。
2.2. 圆度误差
最小二乘法评定圆度误差的原理如图1所示。圆的实际轮廓上各点的圆周距离平方和的最小圆称为最小二乘圆。通过最小二乘圆圆心作实际轮廓的内接圆和外接圆,将内外接圆的半径差值作为实际圆的圆度误差。最小二乘法求得基准圆唯一,此评定方法适用于圆度仪测得数据的极坐标分析,其原理是实际轮廊上各点到最小二乘圆心的距离与最小二乘圆半径的距离平方和为最小 [6] 。此时的圆度误差可表示为:
下面是MATLAB编程代码,拟合结果如图2所示。
clc, clear
A=[384 310; 386 306; 389 300; 392 294; 396 287; 400 281; 404 277; 409 272; 413 269; 417 267; 420 265; 424 263; 430 260; 434 257; 439 256];
x=A(:,1);
y=A(:,2);
n=length(x);
xx=x.*x;
yy=y.*y;
xy=x.*y; A=[sum(x) sum(y) n; sum(xy) sum(yy) sum(y);sum(xx) sum(xy) sum(x)];
B=[-sum(xx+yy); -sum(xx.*y+yy.*y); -sum(xx.*x+xy.*y)]; a=A\B;
xc=-.5*a(1);
yc=-.5*a(2);
R=sqrt((a(1)^2+a(2)^2)/4-a(3));
X=xc-R:1:xc+R;
Y1=sqrt(R^2-(X-xc).^2)+yc;
Y2=-sqrt(R^2-(X-xc).^2)+yc;
Y1=real(Y1);
Y2=real(Y2);
plot(x,y)
hold on
plot(X,Y1, 'r')
hold on
plot(X,Y2, 'r')
hold on
plot(xc, yc, 'g*')
disp(['圆心为(',num2str(xc),',',num2str(yc),
'),半径为,',num2str(R),' '])
Figure 2. MATLAB roundness fitting chart
图2. MATLAB圆度拟合图
2.3. 直线度误差
直线度误差的定义是实际被测直线对理想直线的变动量。对于直线度误差的测量方法主要有两种:两端点连线法和最小二乘中线法。
两端点连线法的基本原理是将采样数据点(升序或降序排列)中首尾端点连接所得的直线作为评定直线度误差的理想直线
即评定基线,求出各采样点相对于基线
偏离值
(在基线上侧、下侧分别取正、负值),最终求得被测对象的直线度误差f,两端点求取基线
的方程
,由点到直线的距离公式:
(1)
实现步骤为:
1) 数据按照升序或者降序进行排列形成散点图,然后将首位端点连接求得评定基线
。
2) 求出各采样点相对于基线
偏离值
(基线上侧、下侧分别取正、负值),确定最大值
和最小值
。
3) 计算
值,并与
和
比较大小,取最大值即为直线度误差 [7] 。
最小二乘中线法是利用测测量点的位置数据,采用最小二乘原理,将拟合得到的最小二乘中心线作为理想直线也可以称为评定基线,求得评定基线两侧数据点相对于基线在平行于轴方向的偏差值
(在基线上侧、下侧的分别取正、负值),确定其最大值
和最小值
,然后评定直线度误差f。如图3所示为直线度误差示意图,数据见下表1所示。
直线度公差带定义:“在给定平面内,公差带是距离为公差值f的两平行直线之间的区域”。两端点连线法虽然计算方便但是精度一般,所以常用在精度要求不高的场合之中。而最小二乘中线法的精度仅次于最小包容区域法,能够满足一般精度要求。所以采用最小二乘中线法来计算直线度误差 [8] [9] 。
其算法实现步骤为:
步骤一:输入数据,用库函数进行最小二乘法拟合,得到的最小二乘中心线作为评定基线。
步骤二:计算评定基线两侧数据点相对于基线在平行于轴方向偏差值
(在基线上侧、下侧分别取正、负值),其中最大值为Δhmax和最小值为Δhmin。
Table 1. Straightness error fitting data
表1. 直线度误差拟合数据
Figure 3. Schematic diagram of straightness error
图3. 直线度误差示意图
步骤三:将Δhmax和Δhmin代入公式得结果并输出结果。
多项式拟合是在不知道函数具体形式下采用的一种曲线拟合形式,可以根据数据拟合精度的要求选用不同的多项式次数,利用MATLAB内建函数ployfit进行曲线拟合。ployfit函数对数据进行最小二乘法拟合的调用格式为a= ployfit(x,y,m)式中,x、y为实测数据向量,m为拟合多项式的最高次数,a为函数返回值,即拟合多项式的系数向量(按降幂排列)。多项式在x处的值y可以利用函数y= polyval(a,x)计算。一般对于同一组原始数据,可以用高一阶或低一阶多项式拟合曲线,但实践证明并不是阶次越高拟合越好,有时会发生阶次越高越不精确的情况,因为一些高阶项往往对y影响很小。一般总是先从低阶开始拟合,然后根据曲线是否平滑,数据点之间是否出现较大的纹波来决定是否需要提高阶数进行曲线拟合,对于n个数据点的拟合曲线最高阶次不能超过n− 1。
数据拟合有2种方法:
方法1:多项式拟合
最常用的是多项式拟合,采用polyfit函数,在命令窗口输入自变量x和因变量y。
以二次多项式拟合为例,输入p= polyfit(x,y, 2),如果想拟合更高次的多项式,更换括号内数字即可。
通过计算获得的p,是一个数组,对应了多项式的各项系数,以图中为例,拟合出的多项式为:y= 0.9962x2+ 0.0053x− 0.2833。
方法2:使用MATLAB工具包
首先打开MATLAB,在主页的界面上找到“导入数据”这样一个按钮。然后点击按钮,会弹出一个文件浏览框,用这个浏览框找到需要处理的数据的文档,可以是txt,excel,cvs等。导入数据之后,就会在右边的工作区中看到需要的数据了。
通过方法1可以获得多项式曲线拟合数据,但对于数据分析,多项式拟合是不够的,可采用方法2中MATLAB自带的曲线拟合工具包,功能十分强大。首先,在上方工具栏选取APPS,点击curve fitting。
1) 输入自变量x和因变量y。
2) 选择拟合方式,有多项式拟合polynomial,高斯拟合gaussian,幂指数拟合power等方式。本文选用多项式polynomial来拟合。
如图4所示为运用MATLAB软件采用最小二乘中线法对钢管直线度测量数据的处理结果。拟合参数如表2所示。
Table 2. Steel pipe straightness measurement data
表2. 钢管直线度测量数据
x:测量点与钢管一端的距离;y:测量点与钢管轴心的距离。
Figure 4. Results of straightness error experiment
图4. 直线度误差实验结果图
从实验结果来看,可以得出Δhmax为0.04 mm,Δhmin为−0.08 mm,所以此钢管的直线度误差f为0.12 mm。然后将之与实际要求的直线度误差进行比较,即可判断钢管的直线度误差是否满足要求。
3. 可视化
Matlab在数据可视化方面提供了强大的功能,它可以把数据用二维,三维乃至四维图形表现出来。通过对图形的线形,立面,色彩,渲染,光线以及视角等属性的处理。将计算数据的特性表现的淋漓尽致。
函数指令plot是matlab二维曲线绘图中最简单,最重要,使用最广泛的一个线性绘图函数。plot函数最简单的调用方式只含一个输入参数。在这种情况下,当输入参数是实项量时,以该向量元素的下标为横坐标,元素值为纵坐标,画出一条连续曲线,这实际上是绘制折线图 [10] [11] 。
我们需要对钢管圆度和直线度的数据通过MATLAB进行可视化分析,也就是说将我们实验测得的数据利用二维图像进行可视化分析。
单从表2中数据来看,钢管的直线度误差并不能很直观的表示出来,因此我们可以使用MATLAB中的plot函数将数据转化为二维折线图,这样就可以直观的将直线度误差表现出来,实现数据可视化。
4. 结束语
本文采用MATLAB软件建立图形用户界面,针对钢管的误差项目,如圆度、直线度的测量数据进行了数据采集、图形绘制和算法评定,实现了钢管数据的可视化,对钢管的形状有了更为直观的体现。本软件可以方便快捷地绘制出误差曲张,简化数据处理流程,提高效率,处理结果可用于工件形位精度等级的评定。
基金项目
江苏省高等学校大学生创新创业训练计划项目202211463050Y。
参考文献